diff --git a/assets/asset_builder/README.md b/assets/asset_builder/README.md index 3e89837..b3058e5 100644 --- a/assets/asset_builder/README.md +++ b/assets/asset_builder/README.md @@ -15,6 +15,8 @@ Convert RGBA to RGB with #FF00FF as the transparent color. If alpha null then the color of the pixel will be replaced with this. +Image data is in RGB 565. + ### Image asset data structure | Description | Length | diff --git a/src/components/animation_system.c b/src/components/animation_system.c index 14d5862..3f39572 100644 --- a/src/components/animation_system.c +++ b/src/components/animation_system.c @@ -13,9 +13,8 @@ int animation_system_init(component_t *component) if(!system_data->sprite_component_data) return EXIT_FAILURE; system_data->nb_frames = 1; - linked_list_init(&system_data->frames, sizeof(rect_t), NULL, NULL); - system_data->current_frame_nb = 0; + linked_list_init(&system_data->frames, sizeof(rect_t), NULL, NULL); animation_system_create_frames_clips(system_data); system_data->frame_delay_ms = 0.0f; diff --git a/src/components/player_system.c b/src/components/player_system.c index 946d8a3..67a6f11 100644 --- a/src/components/player_system.c +++ b/src/components/player_system.c @@ -16,21 +16,10 @@ int player_system_init(component_t *component) system_data->sprite_component_data = system_data->animation_system_data->sprite_component_data; system_data->transform_component_data = system_data->sprite_component_data->transform_component_data; - system_data->state = PLAYER_IDLE; - system_data->last_state = PLAYER_IDLE; + system_data->state = PLAYER_MOVING; - transform_component_data_t *transform_component_data = system_data->transform_component_data; - sprite_component_data_t *sprite_component_data = system_data->sprite_component_data; animation_system_data_t *animation_system_data = system_data->animation_system_data; - transform_component_data->bounds.x = 10.0f; - transform_component_data->bounds.y = 10.0f; - - sprite_component_set_texture(sprite_component_data, "player_idle_sheet"); - - animation_system_data->nb_frames = 4; - animation_system_data->frame_delay_ms = PLAYER_DEFAULT_IDLE_ANIMATION_SPEED; - animation_system_apply_changes(animation_system_data); animation_system_data->loop = true; animation_system_data->play = true; diff --git a/src/components/sprite_component.c b/src/components/sprite_component.c index 213e8e8..4ac4ba1 100644 --- a/src/components/sprite_component.c +++ b/src/components/sprite_component.c @@ -13,8 +13,13 @@ int sprite_component_init(component_t *component) transform_component_data_t *transform_component_data = component_data->transform_component_data; if(sprite_component_set_texture(component_data, "dummy_sheet")) return EXIT_FAILURE; + frect_to_rect(&transform_component_data->bounds, &component_data->src_rect); + component_data->src_rect.x = 0.0f; + component_data->src_rect.y = 0.0f; + frect_to_rect(&transform_component_data->bounds, &component_data->dst_rect); + component_data->flip = false; return EXIT_SUCCESS; diff --git a/src/game.c b/src/game.c index f397ae3..6c8c43a 100644 --- a/src/game.c +++ b/src/game.c @@ -25,10 +25,19 @@ int game_init(void) entity_t *player = entity_manager_new_entity(&game.entity_manager, 0); if(!player) return EXIT_FAILURE; - if(!entity_new_component(player, TRANSFORM_COMPONENT)) return EXIT_FAILURE; - if(!entity_new_component(player, SPRITE_COMPONENT)) return EXIT_FAILURE; - if(!entity_new_component(player, ANIMATION_SYSTEM)) return EXIT_FAILURE; - if(!entity_new_component(player, PLAYER_SYSTEM)) return EXIT_FAILURE; + component_t *component = entity_new_component(player, TRANSFORM_COMPONENT); + if(!component) return EXIT_FAILURE; + + ((transform_component_data_t *)component->component_data)->bounds = (frect_t) { + .x = 10.0f, + .y = 10.0f, + .w = 32.0f, + .h = 32.0f + }; + + if(!entity_new_component(player, SPRITE_COMPONENT)) return EXIT_FAILURE; + if(!entity_new_component(player, ANIMATION_SYSTEM)) return EXIT_FAILURE; + if(!entity_new_component(player, PLAYER_SYSTEM)) return EXIT_FAILURE; game.is_running = true; @@ -83,11 +92,12 @@ int game_render(void) int game_exit(void) { + entity_manager_exit(&game.entity_manager); + if(asset_manager_let_go_asset(&game.asset_manager, "player_idle_sheet")) return EXIT_FAILURE; if(asset_manager_let_go_asset(&game.asset_manager, "player_walk_sheet")) return EXIT_FAILURE; if(asset_manager_let_go_asset(&game.asset_manager, "player_run_sheet")) return EXIT_FAILURE; - entity_manager_exit(&game.entity_manager); if(asset_manager_exit(&game.asset_manager)) return EXIT_FAILURE; display_exit();