From b74b0e357b768495082f525de85ae5235ce6bc1b Mon Sep 17 00:00:00 2001 From: Ulysse Cura Date: Thu, 13 Aug 2026 19:02:08 +0200 Subject: [PATCH] Added trace for errors. --- SDL3_Core | 2 +- src/components/animation_system.c | 47 +++++++++++----------------- src/components/door_component.c | 6 +++- src/components/hitbox_component.c | 2 +- src/components/interact_component.c | 11 ++++--- src/components/lever_component.c | 8 +++-- src/components/player_system.c | 20 ++++++------ src/components/sprite_component.c | 4 +-- src/components/transform_component.c | 2 +- src/game.c | 31 +++++++++--------- 10 files changed, 64 insertions(+), 69 deletions(-) diff --git a/SDL3_Core b/SDL3_Core index ea7f745..35e2f24 160000 --- a/SDL3_Core +++ b/SDL3_Core @@ -1 +1 @@ -Subproject commit ea7f7453133cb3ce231db074986820cbba86c0a6 +Subproject commit 35e2f241c18d248cc98f450d5c570b3b98dea6d4 diff --git a/src/components/animation_system.c b/src/components/animation_system.c index b3f98ad..09c165b 100644 --- a/src/components/animation_system.c +++ b/src/components/animation_system.c @@ -89,45 +89,34 @@ inline int animation_system_destroy(component_t *component) { animation_system_data_t *system_data = component->data; - if(linked_list_exit(&system_data->frames)) return EXIT_FAILURE; + if(linked_list_exit(&system_data->frames)) return_failure_int; free(system_data); return EXIT_SUCCESS; } -int animation_system_create_frames_clips(animation_system_data_t *system_data) -{ - sprite_component_data_t *sprite_component_data = system_data->sprite_component_data; - - if(linked_list_clear(&system_data->frames)) return EXIT_FAILURE; - - if(linked_list_reserve(&system_data->frames, system_data->nb_frames)) return EXIT_FAILURE; - - for(size_t current_frame_nb = 0; current_frame_nb < system_data->nb_frames; current_frame_nb++) - { - elem_t *frame = create_elem(&system_data->frames); - if(!frame) return EXIT_FAILURE; - - ((rect_t *)frame->data)->x = sprite_component_data->src_rect.w * current_frame_nb; - ((rect_t *)frame->data)->y = 0; - ((rect_t *)frame->data)->w = sprite_component_data->src_rect.w; - ((rect_t *)frame->data)->h = sprite_component_data->src_rect.h; - - if(linked_list_push_back(&system_data->frames, frame)) return EXIT_FAILURE; - } - - system_data->current_frame = linked_list_get(&system_data->frames, system_data->current_frame_nb); - if(!system_data->current_frame) return EXIT_FAILURE; - - return EXIT_SUCCESS; -} - inline int animation_system_apply_changes(animation_system_data_t *system_data) { sprite_component_data_t *sprite_component_data = system_data->sprite_component_data; - if(animation_system_create_frames_clips(system_data)) return EXIT_FAILURE; + if(linked_list_clear(&system_data->frames)) return_failure_int; + + for(size_t current_frame_nb = 0; current_frame_nb < system_data->nb_frames; current_frame_nb++) + { + elem_t *frame = create_elem(&system_data->frames); + if(!frame) return_failure_int; + + ((rect_t *)frame->data)->x = sprite_component_data->src_rect.w * current_frame_nb; + ((rect_t *)frame->data)->y = 0; + ((rect_t *)frame->data)->w = sprite_component_data->src_rect.w; + ((rect_t *)frame->data)->h = sprite_component_data->src_rect.h; + + linked_list_push_back(&system_data->frames, frame); + } + + system_data->current_frame = linked_list_get(&system_data->frames, system_data->current_frame_nb); + if(!system_data->current_frame) return_failure_int; sprite_component_data->src_rect = *(rect_t *)system_data->current_frame->data; diff --git a/src/components/door_component.c b/src/components/door_component.c index 0fddc4c..22346ea 100644 --- a/src/components/door_component.c +++ b/src/components/door_component.c @@ -14,7 +14,11 @@ static inline int door_component_callback(va_list event_args, void *subscription const entity_t *entity = subscription_data; component_t *door_component = entity_get_component(entity, DOOR_COMPONENT); - if(!door_component) return EXIT_FAILURE; + if(!door_component) + { + error_printf("Failed to get door component."); + return EXIT_FAILURE; + } door_component_data_t *component_data = door_component->data; diff --git a/src/components/hitbox_component.c b/src/components/hitbox_component.c index 83c0c61..798c62b 100644 --- a/src/components/hitbox_component.c +++ b/src/components/hitbox_component.c @@ -53,7 +53,7 @@ inline int hitbox_component_draw(const component_t *component) const hitbox_component_data_t *component_data = component->data; if(component_data->activated) - if(display_draw_frect(&component_data->bounds, C_RED, 128)) return EXIT_FAILURE; + if(display_draw_frect(&component_data->bounds, C_RED, 128)) return_failure_int; return EXIT_SUCCESS; } diff --git a/src/components/interact_component.c b/src/components/interact_component.c index 00a327a..4a9b9fb 100644 --- a/src/components/interact_component.c +++ b/src/components/interact_component.c @@ -29,16 +29,16 @@ inline int interact_component_init(component_t *component) component_data->topic_id = 0; component_data->type = INTERACT_TOGGLE; + if(event_bus_new_topic(&game.event_bus, component_data->topic_id)) return_failure_int; component_data->state = 0; - if(event_bus_new_topic(&game.event_bus, component_data->topic_id)) return EXIT_FAILURE; component_data->activated = true; return EXIT_SUCCESS; } -inline int interact_component_update(component_t *component __attribute__((unused))) +inline int interact_component_update(component_t *component) { interact_component_data_t *component_data = component->data; const transform_component_data_t *transform_component_data = component_data->transform_component_data; @@ -58,7 +58,7 @@ inline int interact_component_draw(const component_t *component) { const interact_component_data_t *component_data = component->data; - if(display_draw_frect(&component_data->bounds, C_GREEN, 128)) return EXIT_FAILURE; + if(display_draw_frect(&component_data->bounds, C_GREEN, 128)) return_failure_int; return EXIT_SUCCESS; } @@ -82,17 +82,18 @@ inline int interact_component_interact(interact_component_data_t *component_data break; default: + error_printf("Interaction type not valid : %d", component_data->type); return EXIT_FAILURE; } - if(event_bus_publish(&game.event_bus, component_data->topic_id, component_data->state)) return EXIT_FAILURE; + if(event_bus_publish(&game.event_bus, component_data->topic_id, component_data->state)) return_failure_int; return EXIT_SUCCESS; } inline int interact_component_modify_topic(interact_component_data_t *component_data, size_t id) { - if(event_bus_change_topic_id(&game.event_bus, component_data->topic_id, id)) return EXIT_FAILURE; + if(event_bus_change_topic_id(&game.event_bus, component_data->topic_id, id)) return_failure_int; component_data->topic_id = id; diff --git a/src/components/lever_component.c b/src/components/lever_component.c index de42f66..23ab9f5 100644 --- a/src/components/lever_component.c +++ b/src/components/lever_component.c @@ -8,15 +8,17 @@ #include "memory_alloc.h" #include "errors.h" -#include "hitbox_component.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) return EXIT_FAILURE; + if(!lever_component) + { + error_printf("Failed to get lever component."); + return EXIT_FAILURE; + } lever_component_data_t *component_data = lever_component->data; diff --git a/src/components/player_system.c b/src/components/player_system.c index 09a39f8..50955b9 100644 --- a/src/components/player_system.c +++ b/src/components/player_system.c @@ -52,8 +52,8 @@ inline int player_system_update(component_t *component) player_system_get_inputs(system_data); player_system_set_velocity(system_data); - if(player_system_set_animation_and_speed(system_data)) return EXIT_FAILURE; - if(player_system_process_interaction(system_data)) return EXIT_FAILURE; + if(player_system_set_animation_and_speed(system_data)) return_failure_int; + if(player_system_process_interaction(system_data)) return_failure_int; return EXIT_SUCCESS; } @@ -123,33 +123,33 @@ static inline int player_system_set_animation_and_speed(player_system_data_t *sy { physics_system_data->speed = PLAYER_DEFAULT_RUN_SPEED; - if(sprite_component_set_texture(sprite_component_data, "player_run_sheet")) return EXIT_FAILURE; + if(sprite_component_set_texture(sprite_component_data, "player_run_sheet")) return_failure_int; animation_system_data->nb_frames = 8; animation_system_data->current_frame_nb = 0; animation_system_data->frame_delay_ms = PLAYER_DEFAULT_RUN_ANIMATION_SPEED; - if(animation_system_apply_changes(animation_system_data)) return EXIT_FAILURE; + if(animation_system_apply_changes(animation_system_data)) return_failure_int; } else { physics_system_data->speed = PLAYER_DEFAULT_WALK_SPEED; - if(sprite_component_set_texture(sprite_component_data, "player_walk_sheet")) return EXIT_FAILURE; + if(sprite_component_set_texture(sprite_component_data, "player_walk_sheet")) return_failure_int; animation_system_data->nb_frames = 4; animation_system_data->current_frame_nb = 0; animation_system_data->frame_delay_ms = PLAYER_DEFAULT_WALK_ANIMATION_SPEED; - if(animation_system_apply_changes(animation_system_data)) return EXIT_FAILURE; + if(animation_system_apply_changes(animation_system_data)) return_failure_int; } } else if(!(system_data->state & PLAYER_MOVING) && (system_data->last_state & PLAYER_MOVING)) { - if(sprite_component_set_texture(sprite_component_data, "player_idle_sheet")) return EXIT_FAILURE; + if(sprite_component_set_texture(sprite_component_data, "player_idle_sheet")) return_failure_int; animation_system_data->nb_frames = 4; animation_system_data->current_frame_nb = 0; animation_system_data->frame_delay_ms = PLAYER_DEFAULT_IDLE_ANIMATION_SPEED; - if(animation_system_apply_changes(animation_system_data)) return EXIT_FAILURE; + if(animation_system_apply_changes(animation_system_data)) return_failure_int; } return EXIT_SUCCESS; @@ -176,7 +176,7 @@ static inline int action_detect_activate_interact(elem_t *elem, va_list args) if(fhas_intersection(hitbox_bounds, target_interact_bounds)) { - if(interact_component_interact(target_interact_component_data)) return EXIT_FAILURE; + if(interact_component_interact(target_interact_component_data)) return_failure_int; } return EXIT_SUCCESS; @@ -188,7 +188,7 @@ static inline int player_system_process_interaction(player_system_data_t *system if(game.events.keys[KEY_INTERACT] && !last_state) { - if(linked_list_for_each(&game.entity_manager.entities, action_detect_activate_interact, system_data)) return EXIT_FAILURE; + if(linked_list_for_each(&game.entity_manager.entities, action_detect_activate_interact, system_data)) return_failure_int; } last_state = game.events.keys[KEY_INTERACT]; diff --git a/src/components/sprite_component.c b/src/components/sprite_component.c index 012a37e..3056c00 100644 --- a/src/components/sprite_component.c +++ b/src/components/sprite_component.c @@ -44,7 +44,7 @@ inline int sprite_component_draw(const component_t *component) { const 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; + if(display_draw_texture(component_data->texture, &component_data->src_rect, &component_data->dst_rect, component_data->flip)) return_failure_int; return EXIT_SUCCESS; } @@ -61,7 +61,7 @@ inline int sprite_component_destroy(component_t *component) inline int sprite_component_set_texture(sprite_component_data_t *component_data, const char *texture_name) { asset_t *texture_asset = asset_manager_get(&game.asset_manager, texture_name); - if(!texture_asset) return EXIT_FAILURE; + if(!texture_asset) return_failure_int; component_data->texture = texture_asset->data; diff --git a/src/components/transform_component.c b/src/components/transform_component.c index 42cfa90..7634cdc 100644 --- a/src/components/transform_component.c +++ b/src/components/transform_component.c @@ -30,7 +30,7 @@ inline int transform_component_draw(const component_t *component) { const transform_component_data_t *component_data = component->data; - if(display_draw_frect(&component_data->bounds, C_BLUE, 128)) return EXIT_FAILURE; + if(display_draw_frect(&component_data->bounds, C_BLUE, 128)) return_failure_int; return EXIT_SUCCESS; } diff --git a/src/game.c b/src/game.c index 06129b7..ef13da2 100644 --- a/src/game.c +++ b/src/game.c @@ -3,29 +3,28 @@ #include #include "display.h" #include "asset_manager.h" -#include "ecs.h" #include "event_bus.h" -#include "inputs.h" +#include "ecs.h" #include "components.h" +#include "inputs.h" #include "errors.h" int game_init(void) { game.is_running = false; - if(display_init()) return EXIT_FAILURE; - if(asset_manager_init(&game.asset_manager)) return EXIT_FAILURE; + if(display_init()) return_failure_int; + if(asset_manager_init(&game.asset_manager)) return_failure_int; event_bus_init(&game.event_bus); entity_manager_init(&game.entity_manager); - if(asset_manager_load_asset(&game.asset_manager, "dummy_sheet", ASSET_TEXTURE)) return EXIT_FAILURE; - if(asset_manager_load_asset(&game.asset_manager, "player_idle_sheet", ASSET_TEXTURE)) return EXIT_FAILURE; - if(asset_manager_load_asset(&game.asset_manager, "player_walk_sheet", ASSET_TEXTURE)) return EXIT_FAILURE; - if(asset_manager_load_asset(&game.asset_manager, "player_run_sheet", ASSET_TEXTURE)) return EXIT_FAILURE; - if(asset_manager_load_asset(&game.asset_manager, "lever_sheet", ASSET_TEXTURE)) return EXIT_FAILURE; - if(asset_manager_load_asset(&game.asset_manager, "barred_door_sheet", ASSET_TEXTURE)) return EXIT_FAILURE; - if(asset_manager_load_asset(&game.asset_manager, "wooden_door_sheet", ASSET_TEXTURE)) return EXIT_FAILURE; - if(asset_manager_load_asset(&game.asset_manager, "tileset", ASSET_TEXTURE)) return EXIT_FAILURE; + if(asset_manager_load_asset(&game.asset_manager, "player_idle_sheet", ASSET_TEXTURE)) return_failure_int; + if(asset_manager_load_asset(&game.asset_manager, "player_walk_sheet", ASSET_TEXTURE)) return_failure_int; + if(asset_manager_load_asset(&game.asset_manager, "player_run_sheet", ASSET_TEXTURE)) return_failure_int; + if(asset_manager_load_asset(&game.asset_manager, "lever_sheet", ASSET_TEXTURE)) return_failure_int; + if(asset_manager_load_asset(&game.asset_manager, "barred_door_sheet", ASSET_TEXTURE)) return_failure_int; + if(asset_manager_load_asset(&game.asset_manager, "wooden_door_sheet", ASSET_TEXTURE)) return_failure_int; + if(asset_manager_load_asset(&game.asset_manager, "tileset", ASSET_TEXTURE)) return_failure_int; /* ======== Player ======== */ entity_t *player_entity = entity_manager_new_entity(&game.entity_manager, 0); @@ -228,7 +227,7 @@ int game_update(void) if(entity_manager_update(&game.entity_manager)) { game.is_running = false; - return EXIT_FAILURE; + return_failure_int; } return EXIT_SUCCESS; @@ -239,13 +238,13 @@ int game_render(void) if(display_clear()) { game.is_running = false; - return EXIT_FAILURE; + return_failure_int; } if(entity_manager_draw(&game.entity_manager)) { game.is_running = false; - return EXIT_FAILURE; + return_failure_int; } display_update(); @@ -257,7 +256,7 @@ int game_exit(void) { entity_manager_exit(&game.entity_manager); event_bus_exit(&game.event_bus); - if(asset_manager_exit(&game.asset_manager)) return EXIT_FAILURE; + if(asset_manager_exit(&game.asset_manager)) return_failure_int; display_exit(); return EXIT_SUCCESS;