From 53194e3fc7c82f92b4c4b9cc117cd76bfb2a16f9 Mon Sep 17 00:00:00 2001 From: Ulysse Cura Date: Tue, 11 Aug 2026 15:16:06 +0200 Subject: [PATCH] Adding wodden door. --- SCENARIO.fr.txt | 6 +++ assets/Makefile | 1 + assets/props_sheets/wooden_door_sheet.png | Bin 0 -> 1054 bytes src/components/headers/door_component.h | 3 +- src/game.c | 44 +++++++++++++++++++++- 5 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 SCENARIO.fr.txt create mode 100644 assets/props_sheets/wooden_door_sheet.png diff --git a/SCENARIO.fr.txt b/SCENARIO.fr.txt new file mode 100644 index 0000000..c8ed5d0 --- /dev/null +++ b/SCENARIO.fr.txt @@ -0,0 +1,6 @@ +# Idées + +## Masion abuelo + +Cycle jour / nuit. +Ordre des salles en bazard. \ No newline at end of file diff --git a/assets/Makefile b/assets/Makefile index 1d4f0f5..f2f59d9 100644 --- a/assets/Makefile +++ b/assets/Makefile @@ -5,6 +5,7 @@ ASSETS := \ player_sheets/player_run_sheet.png \ props_sheets/lever_sheet.png \ props_sheets/barred_door_sheet.png \ + props_sheets/wooden_door_sheet.png \ tileset/tileset.png ASSETS := $(addprefix $(ASSETS_DIR)/,$(ASSETS)) diff --git a/assets/props_sheets/wooden_door_sheet.png b/assets/props_sheets/wooden_door_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..3e8f99dfefb1c6a4fb1310bb0736234f6958469a GIT binary patch literal 1054 zcmV+(1mXLMP)Px&*hxe|RCt{2ov}~qP!z_$zP!a5ay_z)Iri zd$WUU!}c~81Dgwzd*AT9^>U%5#onG%_V>U-kuhK5JCtcgb+dqA%qY@ z2qA=Gu9)~kLULPARMc7`et=Xsn01o%}VlA)lADB$%WocNcWgO1Rw!fq&$^Or@ zPuUKYZ@X>dcs}fB#nne-Xt(OoX8^7wH2|_WThcyB2Y3qK z=zt^>KYSZVi@q|Dwoi29Jpj(G`Z&Al`!=K6zBJMrG~4$c0Hi$nr$^EfDo5%Zpa_2d zy7O&<_CHCQ^X$?w$ZOyG8Ne)KN+E5(Y^2 zfd)+H+JT@U{Qw}I3RUI$i~0a?b4h!&bvxL!eFll$v1Wqp27=Kk<$&XGhIXqinhM!9 zTvCjNgXsC;HuXKJ0pO0lNw4L3PhQ+pXqL&9>2x0lzul_G4rYSE4Fp?f*>y;x;Q-GM zx8fu4$>j|?-JV?#sFKubP`BW1Q@&9V8EvwRX(~nwu)m~dG#sGQ?E%0-5SX@0iItF1 zvr)rjI$sFV^VUI`6{)cnvtb=0k!nz@7%qP`sD=rQJCbDy2%ow;-5y560RZ6n;TFwC zZJ`9(Aa(u0lp)&_Vo4p^Q9lPTj^w5tSw7=Sk9`J6vMrs0XhHjNNDTlj;!iGbFb;ch z5CB-%cH6#n+oQg_-zICo`a;@%6-W($EY6m+uSkcq(+=P(^{}zqb`D&G{Y}u40+@M$ z6xxGuZ7IabhJ zP5KC_GMQF^IQo)ph2_v>r(pn)orVFhJp_`=omEBsm0*&KU^1N-{Y1Y_2vGc!1--!M z0+F4D&jl*Me#tDQLK5HK)}Z;hKum%15sbrG1o*w_W=p6<8pP)UnqXfmBgN;Q%Mv5+nYg7mVe`gwr%Ux?Y1RoW%)Ni{koe;ox#`Gu5{Y(vn#(Xi6~ YKOAuV2w=>TeEdata)->nb_frames = 8; - ((animation_system_data_t *)component->data)->frame_delay_ms = DOOR_DEFAULT_ANIMATION_SPEED; + ((animation_system_data_t *)component->data)->frame_delay_ms = BARRED_DOOR_DEFAULT_ANIMATION_SPEED; if(animation_system_create_frames_clips(component->data)) return EXIT_FAILURE; component = entity_new_component(door_entity, HITBOX_COMPONENT); @@ -160,6 +161,47 @@ int game_init(void) if(!entity_new_component(door_entity, DOOR_COMPONENT)) return EXIT_FAILURE; + /* ======== Door 2 ======== */ + entity_t *door2_entity = entity_manager_new_entity(&game.entity_manager, 1); + if(!lever_entity) return EXIT_FAILURE; + + component = entity_new_component(door2_entity, TRANSFORM_COMPONENT); + if(!component) return EXIT_FAILURE; + + ((transform_component_data_t *)component->data)->bounds = (frect_t) { + .x = 240.0f, + .y = 30.0f, + .w = 32.0f, + .h = 48.0f + }; + + component = entity_new_component(door2_entity, SPRITE_COMPONENT); + if(!component) return EXIT_FAILURE; + + if(sprite_component_set_texture(component->data, "wooden_door_sheet")) return EXIT_FAILURE; + + component = entity_new_component(door2_entity, ANIMATION_SYSTEM); + if(!component) return EXIT_FAILURE; + + ((animation_system_data_t *)component->data)->nb_frames = 6; + ((animation_system_data_t *)component->data)->frame_delay_ms = WOODEN_DOOR_DEFAULT_ANIMATION_SPEED; + if(animation_system_create_frames_clips(component->data)) return EXIT_FAILURE; + + component = entity_new_component(door2_entity, HITBOX_COMPONENT); + if(!component) return EXIT_FAILURE; + + ((hitbox_component_data_t *)component->data)->position = (fvector2d_t) { + .x = 0.5f, + .y = 1.0f + }; + + ((hitbox_component_data_t *)component->data)->scale = (fvector2d_t) { + .x = 1.0f, + .y = 1.0f / 7.0f + }; + + if(!entity_new_component(door2_entity, DOOR_COMPONENT)) return EXIT_FAILURE; + game.is_running = true; return EXIT_SUCCESS;