#include #include #include "game.h" #include "ecs/components.h" void game_init(void) { texture_manager_init(&game.texture_manager); texture_manager_load_builtin_textures(&game.texture_manager); entity_manager_init(&game.entity_manager); entity_t *player = entity_manager_add_entity(&game.entity_manager, "player"); rect_t player_bounds = {10.0f, 10.0f, 32.0f, 32.0f}; float player_speed = 50.0f; add_component(player, create_component(TRANSFORM_COMPONENT), player_bounds, player_speed); add_component(player, create_component(SPRITE_COMPONENT), "player_idle_sheet"); add_component(player, create_component(ANIMATION_SYSTEM), 4, 0, 200.0f, true, true, false); add_component(player, create_component(PLAYER_SYSTEM)); game.last_clock_state = clock(); game.is_running = true; } void game_handle_event(void) { key_event_t key_event; do { key_event = pollevent(); if (key_event.type == KEYEV_DOWN) game.event.keys[key_event.key] = true; else if (key_event.type == KEYEV_UP) game.event.keys[key_event.key] = false; if (key_event.type == KEYEV_DOWN && key_event.key == KEY_EXIT) game.is_running = false; } while (key_event.type != KEYEV_NONE); } void game_update(void) { clock_t start_clock = clock(); game.delta_time_ms = (double)(start_clock - game.last_clock_state) * 1000.0f / CLOCKS_PER_SEC; game.last_clock_state = start_clock; entity_manager_update(&game.entity_manager); } void game_render(void) { dclear(C_WHITE); entity_manager_draw(&game.entity_manager); dupdate(); } void game_exit(void) { entity_manager_clear(&game.entity_manager); texture_manager_clear(&game.texture_manager); }