#include #include #include #include "game.h" #include "components.h" void game_init(void) { display_init(); texture_manager_init(&game.texture_manager); entity_manager_init(&game.entity_manager); entity_t *player = create_entity(0); entity_manager_add_entity(&game.entity_manager, player); frect_t player_bounds = {10.0f, 10.0f, 32.0f, 32.0f}; add_component(player, create_component(TRANSFORM_COMPONENT), player_bounds, PLAYER_DEFAULT_SPEED); add_component(player, create_component(SPRITE_COMPONENT), "player_idle_sheet"); add_component(player, create_component(ANIMATION_SYSTEM), 4, 0, PLAYER_DEFAULT_IDLE_ANIMATION_SPEED, true, true, false); add_component(player, create_component(PLAYER_SYSTEM)); game.is_running = true; } void game_handle_event(void) { event_t event; while(pollevent(&event)) { if(event.type == EVENT_KEY_DOWN) game.events.keys[event.key.keysym.scancode] = true; else if(event.type == EVENT_KEY_UP) game.events.keys[event.key.keysym.scancode] = false; if(event.type == EVENT_QUIT) game.is_running = false; } } static inline void update_time(void) { clock_t last_clock_state = clock(); clock_t start_clock = clock(); game.delta_time_ms = (float)(start_clock - last_clock_state) * 1000.0f / CLOCKS_PER_SEC; last_clock_state = start_clock; } void game_update(void) { update_time(); entity_manager_update(&game.entity_manager); } void game_render(void) { display_clear(); entity_manager_draw(&game.entity_manager); display_update(); } void game_exit(void) { entity_manager_clear(&game.entity_manager); texture_manager_clear(&game.texture_manager); display_exit(); }