Refactorised files for better lisibility.

This commit is contained in:
Ulysse Cura 2026-08-14 17:25:50 +02:00
parent b4cb4634cf
commit d5ccaee457
13 changed files with 76 additions and 97 deletions

View File

@ -8,25 +8,6 @@
#include "memory_alloc.h"
#include "errors.h"
// Event arg = size_t state, Subscription arg = entity_t *entity
static inline int door_component_callback(va_list event_args, void *subscription_data)
{
const entity_t *entity = subscription_data;
component_t *door_component = entity_get_component(entity, DOOR_COMPONENT);
if(!door_component)
{
error_printf("Failed to get door component.");
return EXIT_FAILURE;
}
door_component_data_t *component_data = door_component->data;
component_data->state = (bool)va_arg(event_args, size_t);
return EXIT_SUCCESS;
}
inline int door_component_init(component_t *component)
{
door_component_data_t *component_data = component->data;
@ -80,6 +61,25 @@ inline int door_component_destroy(component_t *component)
return EXIT_SUCCESS;
}
// Event arg : size_t state, Subscription arg : entity_t *entity
static inline int door_component_callback(va_list event_args, void *subscription_data)
{
const entity_t *entity = subscription_data;
component_t *door_component = entity_get_component(entity, DOOR_COMPONENT);
if(!door_component)
{
error_printf("Failed to get door component.");
return EXIT_FAILURE;
}
door_component_data_t *component_data = door_component->data;
component_data->state = (bool)va_arg(event_args, size_t);
return EXIT_SUCCESS;
}
inline int door_component_subscribe(door_component_data_t *component_data, entity_t *entity)
{
if(event_bus_subscribe(component_data->topic_id, door_component_callback, entity)) return_failure_int;

View File

@ -23,9 +23,7 @@ typedef struct animation_system_data_t {
} animation_system_data_t;
int animation_system_init(component_t *component);
int animation_system_update(component_t *component);
int animation_system_destroy(component_t *component);
int animation_system_apply_changes(animation_system_data_t *system_data);

View File

@ -19,9 +19,7 @@ typedef struct door_component_data_t {
} door_component_data_t;
int door_component_init(component_t *component);
int door_component_update(component_t *component);
int door_component_destroy(component_t *component);
int door_component_subscribe(door_component_data_t *component_data, entity_t *entity);

View File

@ -18,13 +18,10 @@ typedef struct hitbox_component_data_t {
} hitbox_component_data_t;
int hitbox_component_init(component_t *component);
int hitbox_component_update(component_t *component);
#if DEBUG >= 2
int hitbox_component_draw(const component_t *component);
#endif
int hitbox_component_destroy(component_t *component);
#endif // HITBOX_COMPONENT_H

View File

@ -25,17 +25,13 @@ typedef struct interact_component_data_t {
} interact_component_data_t;
int interact_component_init(component_t *component);
int interact_component_update(component_t *component);
#if DEBUG >= 2
int interact_component_draw(const component_t *component);
#endif // DEBUG >= 2
int interact_component_destroy(component_t *component);
int interact_component_interact(interact_component_data_t *component_data);
int interact_component_modify_topic_id(interact_component_data_t *component_data, size_t id);
#endif // TRANSFORM_COMPONENT_H

View File

@ -17,9 +17,7 @@ typedef struct lever_component_data_t {
} lever_component_data_t;
int lever_component_init(component_t *component);
int lever_component_update(component_t *component);
int lever_component_destroy(component_t *component);
int lever_component_subscribe(lever_component_data_t *component_data, entity_t *entity);

View File

@ -17,9 +17,7 @@ typedef struct physics_system_data_t {
} physics_system_data_t;
int physics_system_init(component_t *component);
int physics_system_update(component_t *component);
int physics_system_destroy(component_t *component);
#endif // PHYSICS_SYSTEM_H

View File

@ -33,9 +33,7 @@ typedef struct player_system_data_t {
} player_system_data_t;
int player_system_init(component_t *component);
int player_system_update(component_t *component);
int player_system_destroy(component_t *component);
#endif // PLAYER_SYSTEM_H

View File

@ -16,11 +16,8 @@ typedef struct sprite_component_data_t {
} sprite_component_data_t;
int sprite_component_init(component_t *component);
int sprite_component_update(component_t *component);
int sprite_component_draw(const component_t *component);
int sprite_component_destroy(component_t *component);
#endif // SPRITE_COMPONENT_H

View File

@ -10,13 +10,10 @@ typedef struct transform_component_data_t {
} transform_component_data_t;
int transform_component_init(component_t *component);
int transform_component_update(component_t *component);
#if DEBUG >= 2
int transform_component_draw(const component_t *component);
#endif // DEBUG >= 2
int transform_component_destroy(component_t *component);
#endif // TRANSFORM_COMPONENT_H

View File

@ -8,25 +8,6 @@
#include "memory_alloc.h"
#include "errors.h"
// Args = entity_t *entity, size_t state
static inline int lever_component_callback(va_list args, void *subscription_data)
{
const entity_t *entity = subscription_data;
component_t *lever_component = entity_get_component(entity, LEVER_COMPONENT);
if(!lever_component)
{
error_printf("Failed to get lever component.");
return EXIT_FAILURE;
}
lever_component_data_t *component_data = lever_component->data;
component_data->state = (bool)va_arg(args, size_t);
return EXIT_SUCCESS;
}
inline int lever_component_init(component_t *component)
{
lever_component_data_t *component_data = component->data;
@ -69,6 +50,25 @@ inline int lever_component_destroy(component_t *component)
return EXIT_SUCCESS;
}
// Event arg : size_t state, Subscription arg : entity_t *entity
static inline int lever_component_callback(va_list args, void *subscription_data)
{
const entity_t *entity = subscription_data;
component_t *lever_component = entity_get_component(entity, LEVER_COMPONENT);
if(!lever_component)
{
error_printf("Failed to get lever component.");
return EXIT_FAILURE;
}
lever_component_data_t *component_data = lever_component->data;
component_data->state = (bool)va_arg(args, size_t);
return EXIT_SUCCESS;
}
inline int lever_component_subscribe(lever_component_data_t *component_data, entity_t *entity)
{
if(event_bus_subscribe(component_data->topic_id, lever_component_callback, entity)) return_failure_int;

View File

@ -44,6 +44,35 @@ inline int physics_system_init(component_t *component)
}
// Args : physics_system_data_t *system_data, size_t entity_id
static int action_detect_solve_entities_collision(elem_t *elem, va_list args);
int physics_system_update(component_t *component)
{
physics_system_data_t *system_data = component->data;
transform_component_data_t *transform_component_data = system_data->transform_component_data;
hitbox_component_data_t *hitbox_component_data = system_data->hitbox_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);
if(hitbox_component_data->activated)
if(linked_list_for_each(&game.entity_manager.entities, action_detect_solve_entities_collision, system_data, component->entity->id)) return EXIT_FAILURE;
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;
return EXIT_SUCCESS;
}
inline int physics_system_destroy(component_t *component)
{
physics_system_data_t *system_data = component->data;
free(system_data);
return EXIT_SUCCESS;
}
static inline int action_detect_solve_entities_collision(elem_t *elem, va_list args)
{
const entity_t *target_entity = elem->data;
@ -104,30 +133,3 @@ static inline int action_detect_solve_entities_collision(elem_t *elem, va_list a
return EXIT_SUCCESS;
}
int physics_system_update(component_t *component)
{
physics_system_data_t *system_data = component->data;
transform_component_data_t *transform_component_data = system_data->transform_component_data;
hitbox_component_data_t *hitbox_component_data = system_data->hitbox_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);
if(hitbox_component_data->activated)
if(linked_list_for_each(&game.entity_manager.entities, action_detect_solve_entities_collision, system_data, component->entity->id)) return EXIT_FAILURE;
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;
return EXIT_SUCCESS;
}
inline int physics_system_destroy(component_t *component)
{
physics_system_data_t *system_data = component->data;
free(system_data);
return EXIT_SUCCESS;
}

View File

@ -58,6 +58,15 @@ inline int player_system_update(component_t *component)
return EXIT_SUCCESS;
}
inline int player_system_destroy(component_t *component)
{
player_system_data_t *component_data = component->data;
free(component_data);
return EXIT_SUCCESS;
}
static inline void player_system_get_inputs(player_system_data_t *system_data)
{
system_data->last_state = system_data->state;
@ -204,12 +213,3 @@ static inline int player_system_process_interaction(player_system_data_t *system
return EXIT_SUCCESS;
}
inline int player_system_destroy(component_t *component)
{
player_system_data_t *component_data = component->data;
free(component_data);
return EXIT_SUCCESS;
}