diff --git a/SDL3_Core b/SDL3_Core index b63a67e..34ee7e2 160000 --- a/SDL3_Core +++ b/SDL3_Core @@ -1 +1 @@ -Subproject commit b63a67eb84262ea6e9883089cfc622d0a67f74cf +Subproject commit 34ee7e2a57079f8e5b00af4183d14ed75b35d8b8 diff --git a/src/components/animation_system.c b/src/components/animation_system.c index 48de372..be4bb2e 100644 --- a/src/components/animation_system.c +++ b/src/components/animation_system.c @@ -7,9 +7,9 @@ // Args : size_t nb_frames, size_t current_frame, float frame_delay_ms, bool play, bool loop, bool reverse int animation_system_init(component_t *component) { - animation_system_data_t *system_data = component->component_data; + animation_system_data_t *system_data = component->data; - system_data->sprite_component_data = entity_get_component(component->entity, SPRITE_COMPONENT)->component_data; + system_data->sprite_component_data = entity_get_component(component->entity, SPRITE_COMPONENT)->data; if(!system_data->sprite_component_data) return EXIT_FAILURE; system_data->nb_frames = 1; @@ -29,7 +29,7 @@ int animation_system_init(component_t *component) int animation_system_update(component_t *component) { - animation_system_data_t *system_data = component->component_data; + animation_system_data_t *system_data = component->data; if(system_data->play) { @@ -83,7 +83,7 @@ int animation_system_update(component_t *component) inline int animation_system_destroy(component_t *component) { - animation_system_data_t *system_data = component->component_data; + animation_system_data_t *system_data = component->data; if(linked_list_exit(&system_data->frames)) return EXIT_FAILURE; diff --git a/src/components/hitbox_component.c b/src/components/hitbox_component.c index 4176eb9..1a8a526 100644 --- a/src/components/hitbox_component.c +++ b/src/components/hitbox_component.c @@ -7,9 +7,9 @@ // Args : frect_t bounds, double speed int hitbox_component_init(component_t *component) { - hitbox_component_data_t *component_data = component->component_data; + hitbox_component_data_t *component_data = component->data; - component_data->transform_component_data = entity_get_component(component->entity, TRANSFORM_COMPONENT)->component_data; + component_data->transform_component_data = entity_get_component(component->entity, TRANSFORM_COMPONENT)->data; if(!component_data->transform_component_data) return EXIT_FAILURE; component_data->position = (fvector2d_t) { @@ -29,7 +29,7 @@ int hitbox_component_init(component_t *component) int hitbox_component_update(component_t *component) { - hitbox_component_data_t *component_data = component->component_data; + hitbox_component_data_t *component_data = component->data; transform_component_data_t *transform_component_data = component_data->transform_component_data; component_data->bounds.x = transform_component_data->bounds.x + (transform_component_data->bounds.w - component_data->bounds.w) * component_data->position.x; @@ -46,7 +46,7 @@ int hitbox_component_update(component_t *component) int hitbox_component_draw(component_t *component) { - hitbox_component_data_t *component_data = component->component_data; + hitbox_component_data_t *component_data = component->data; if(display_draw_frect(&component_data->bounds, C_RED, 128)) return EXIT_FAILURE; @@ -56,7 +56,7 @@ int hitbox_component_draw(component_t *component) inline int hitbox_component_destroy(component_t *component) { - hitbox_component_data_t *component_data = component->component_data; + hitbox_component_data_t *component_data = component->data; free(component_data); diff --git a/src/components/physics_system.c b/src/components/physics_system.c index 23f40b0..78e03d4 100644 --- a/src/components/physics_system.c +++ b/src/components/physics_system.c @@ -6,47 +6,55 @@ // Args : frect_t bounds, double speed int physics_system_init(component_t *component) { - physics_system_data_t *component_data = component->component_data; + physics_system_data_t *system_data = component->data; - component_data->transform_component_data = entity_get_component(component->entity, TRANSFORM_COMPONENT)->component_data; - if(!component_data->transform_component_data) return EXIT_FAILURE; + system_data->transform_component_data = entity_get_component(component->entity, TRANSFORM_COMPONENT)->data; + if(!system_data->transform_component_data) return EXIT_FAILURE; - component_data->target_velocity = (fvector2d_t) { + system_data->target_velocity = (fvector2d_t) { .x = 0.0f, .y = 0.0f }; - component_data->velocity = (fvector2d_t) { + system_data->velocity = (fvector2d_t) { .x = 0.0f, .y = 0.0f }; - component_data->speed = 0.0f; + system_data->speed = 0.0f; - component_data->smoothing_factor = 1.0f; + system_data->smoothing_factor = 1.0f; return EXIT_SUCCESS; } +static inline void physics_system_update_pos(physics_system_data_t *system_data) +{ + transform_component_data_t *transform_component_data = system_data->transform_component_data; + + system_data->velocity.x = lerp(system_data->velocity.x, system_data->target_velocity.x, system_data->smoothing_factor); + system_data->velocity.y = lerp(system_data->velocity.y, system_data->target_velocity.y, system_data->smoothing_factor); + + transform_component_data->bounds.x += system_data->velocity.x * system_data->speed * (float)game.delta_time_ms / 1000.0f; + transform_component_data->bounds.y += system_data->velocity.y * system_data->speed * (float)game.delta_time_ms / 1000.0f; +} + int physics_system_update(component_t *component) { - physics_system_data_t *component_data = component->component_data; - transform_component_data_t *transform_component_data = component_data->transform_component_data; + physics_system_data_t *system_data = component->data; - component_data->velocity.x = lerp(component_data->velocity.x, component_data->target_velocity.x, component_data->smoothing_factor); - component_data->velocity.y = lerp(component_data->velocity.y, component_data->target_velocity.y, component_data->smoothing_factor); + physics_system_update_pos(system_data); - transform_component_data->bounds.x += component_data->velocity.x * component_data->speed * (float)game.delta_time_ms / 1000.0f; - transform_component_data->bounds.y += component_data->velocity.y * component_data->speed * (float)game.delta_time_ms / 1000.0f; +// linked_list_for_each(&game.entity_manager.entities, ); return EXIT_SUCCESS; } inline int physics_system_destroy(component_t *component) { - physics_system_data_t *component_data = component->component_data; + physics_system_data_t *system_data = component->data; - free(component_data); + free(system_data); return EXIT_SUCCESS; } diff --git a/src/components/player_system.c b/src/components/player_system.c index 58b469f..0e7954f 100644 --- a/src/components/player_system.c +++ b/src/components/player_system.c @@ -9,12 +9,12 @@ // No args inline int player_system_init(component_t *component) { - player_system_data_t *system_data = component->component_data; + player_system_data_t *system_data = component->data; - system_data->animation_system_data = entity_get_component(component->entity, ANIMATION_SYSTEM)->component_data; + system_data->animation_system_data = entity_get_component(component->entity, ANIMATION_SYSTEM)->data; if(!system_data->animation_system_data) return EXIT_FAILURE; system_data->sprite_component_data = system_data->animation_system_data->sprite_component_data; - system_data->physics_system_data = entity_get_component(component->entity, PHYSICS_SYSTEM)->component_data; + system_data->physics_system_data = entity_get_component(component->entity, PHYSICS_SYSTEM)->data; if(!system_data->physics_system_data) return EXIT_FAILURE; system_data->state = PLAYER_MOVING; @@ -129,7 +129,7 @@ static inline int player_system_set_animation_and_speed(player_system_data_t *sy inline int player_system_update(component_t *component) { - player_system_data_t *system_data = component->component_data; + player_system_data_t *system_data = component->data; player_system_get_inputs(system_data); player_system_set_velocity(system_data); @@ -140,7 +140,7 @@ inline int player_system_update(component_t *component) inline int player_system_destroy(component_t *component) { - player_system_data_t *component_data = component->component_data; + player_system_data_t *component_data = component->data; free(component_data); diff --git a/src/components/sprite_component.c b/src/components/sprite_component.c index e4150fa..c579cb6 100644 --- a/src/components/sprite_component.c +++ b/src/components/sprite_component.c @@ -7,9 +7,9 @@ // Arg : const char *name inline int sprite_component_init(component_t *component) { - sprite_component_data_t *component_data = component->component_data; + sprite_component_data_t *component_data = component->data; - component_data->transform_component_data = entity_get_component(component->entity, TRANSFORM_COMPONENT)->component_data; + component_data->transform_component_data = entity_get_component(component->entity, TRANSFORM_COMPONENT)->data; if(!component_data->transform_component_data) return EXIT_FAILURE; transform_component_data_t *transform_component_data = component_data->transform_component_data; @@ -27,7 +27,7 @@ inline int sprite_component_init(component_t *component) inline int sprite_component_update(component_t *component) { - sprite_component_data_t *component_data = component->component_data; + sprite_component_data_t *component_data = component->data; component_data->dst_rect = component_data->transform_component_data->bounds; return EXIT_SUCCESS; @@ -35,7 +35,7 @@ inline int sprite_component_update(component_t *component) inline int sprite_component_draw(component_t *component) { - sprite_component_data_t *component_data = component->component_data; + sprite_component_data_t *component_data = component->data; if(display_draw_texture(component_data->texture, &component_data->src_rect, &component_data->dst_rect, component_data->flip)) return EXIT_FAILURE; return EXIT_SUCCESS; @@ -43,7 +43,7 @@ inline int sprite_component_draw(component_t *component) inline int sprite_component_destroy(component_t *component) { - sprite_component_data_t *component_data = component->component_data; + sprite_component_data_t *component_data = component->data; free(component_data); diff --git a/src/components/transform_component.c b/src/components/transform_component.c index 844d5f1..5deec28 100644 --- a/src/components/transform_component.c +++ b/src/components/transform_component.c @@ -6,7 +6,7 @@ // Args : frect_t bounds, double speed int transform_component_init(component_t *component) { - transform_component_data_t *component_data = component->component_data; + transform_component_data_t *component_data = component->data; component_data->bounds = (frect_t) { .x = 0.0f, @@ -29,7 +29,7 @@ inline int transform_component_update(component_t *component __attribute__((unus inline int transform_component_draw(component_t *component) { - transform_component_data_t *component_data = component->component_data; + transform_component_data_t *component_data = component->data; if(display_draw_frect(&component_data->bounds, C_BLUE, 128)) return EXIT_FAILURE; @@ -39,7 +39,7 @@ inline int transform_component_draw(component_t *component) inline int transform_component_destroy(component_t *component) { - transform_component_data_t *component_data = component->component_data; + transform_component_data_t *component_data = component->data; free(component_data); diff --git a/src/game.c b/src/game.c index fb9b53c..0f1660d 100644 --- a/src/game.c +++ b/src/game.c @@ -29,7 +29,7 @@ int game_init(void) component_t *component = entity_new_component(player, TRANSFORM_COMPONENT); if(!component) return EXIT_FAILURE; - ((transform_component_data_t *)component->component_data)->bounds = (frect_t) { + ((transform_component_data_t *)component->data)->bounds = (frect_t) { .x = 10.0f, .y = 10.0f, .w = 32.0f, @@ -39,12 +39,12 @@ int game_init(void) component = entity_new_component(player, HITBOX_COMPONENT); if(!component) return EXIT_FAILURE; - ((hitbox_component_data_t *)component->component_data)->position = (fvector2d_t) { + ((hitbox_component_data_t *)component->data)->position = (fvector2d_t) { .x = 0.5f, .y = 1.0f }; - ((hitbox_component_data_t *)component->component_data)->scale = (fvector2d_t) { + ((hitbox_component_data_t *)component->data)->scale = (fvector2d_t) { .x = 0.5f, .y = 0.5f }; @@ -61,14 +61,26 @@ int game_init(void) component = entity_new_component(entity, TRANSFORM_COMPONENT); if(!component) return EXIT_FAILURE; - ((transform_component_data_t *)component->component_data)->bounds = (frect_t) { + ((transform_component_data_t *)component->data)->bounds = (frect_t) { .x = 120.0f, .y = 30.0f, .w = 32.0f, .h = 32.0f }; - if(!entity_new_component(entity, HITBOX_COMPONENT)) return EXIT_FAILURE; + component = entity_new_component(entity, HITBOX_COMPONENT); + if(!component) return EXIT_FAILURE; + + ((hitbox_component_data_t *)component->data)->position = (fvector2d_t) { + .x = 0.5f, + .y = 0.5f + }; + + ((hitbox_component_data_t *)component->data)->scale = (fvector2d_t) { + .x = 2.0f / 3.0f, + .y = 2.0f / 3.0f + }; + if(!entity_new_component(entity, SPRITE_COMPONENT)) return EXIT_FAILURE; game.is_running = true;