From 947bcceaf9716d1fb19dd2a8fc71c3c953f57473 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Wed, 8 Apr 2026 08:45:35 +0200 Subject: [PATCH] granera motor de animacio --- data/enemies/abad.gif | Bin 130 -> 0 bytes data/enemies/abad.yaml | 10 -- data/enemies/abad_bell.gif | Bin 384 -> 0 bytes data/enemies/abad_bell.yaml | 10 -- data/enemies/amstrad_cs.gif | Bin 1927 -> 0 bytes data/enemies/amstrad_cs.yaml | 10 -- data/enemies/arounders_door.gif | Bin 198 -> 0 bytes data/enemies/arounders_door.yaml | 10 -- data/enemies/arounders_machine.gif | Bin 195 -> 0 bytes data/enemies/arounders_machine.yaml | 10 -- data/enemies/bat.gif | Bin 86 -> 0 bytes data/enemies/bat.yaml | 10 -- data/enemies/batman.gif | Bin 146 -> 0 bytes data/enemies/batman.yaml | 10 -- data/enemies/batman_bell.gif | Bin 267 -> 0 bytes data/enemies/batman_bell.yaml | 10 -- data/enemies/batman_fire.gif | Bin 213 -> 0 bytes data/enemies/batman_fire.yaml | 10 -- data/enemies/bell.gif | Bin 412 -> 0 bytes data/enemies/bell.yaml | 10 -- data/enemies/bin.yaml | 2 +- data/enemies/bird.gif | Bin 195 -> 0 bytes data/enemies/bird.yaml | 10 -- data/enemies/breakout.gif | Bin 195 -> 0 bytes data/enemies/breakout.yaml | 10 -- data/enemies/bry.gif | Bin 208 -> 0 bytes data/enemies/bry.yaml | 10 -- data/enemies/chip.gif | Bin 146 -> 0 bytes data/enemies/chip.yaml | 10 -- data/enemies/code.yaml | 2 +- data/enemies/congo.gif | Bin 145 -> 0 bytes data/enemies/congo.yaml | 10 -- data/enemies/crosshair.gif | Bin 213 -> 0 bytes data/enemies/crosshair.yaml | 10 -- data/enemies/demon.gif | Bin 213 -> 0 bytes data/enemies/demon.yaml | 10 -- data/enemies/dimallas.gif | Bin 212 -> 0 bytes data/enemies/dimallas.yaml | 10 -- data/enemies/dong.gif | Bin 355 -> 0 bytes data/enemies/dong.yaml | 10 -- data/enemies/elsa.gif | Bin 236 -> 0 bytes data/enemies/elsa.yaml | 10 -- data/enemies/floppy.gif | Bin 210 -> 0 bytes data/enemies/floppy.yaml | 10 -- data/enemies/flying_arounder.gif | Bin 73 -> 0 bytes data/enemies/flying_arounder.yaml | 10 -- data/enemies/guitar.gif | Bin 220 -> 0 bytes data/enemies/guitar.yaml | 10 -- data/enemies/heavy.gif | Bin 216 -> 0 bytes data/enemies/heavy.yaml | 10 -- data/enemies/jailbattle_alien.gif | Bin 121 -> 0 bytes data/enemies/jailbattle_alien.yaml | 10 -- data/enemies/jailbattle_human.gif | Bin 110 -> 0 bytes data/enemies/jailbattle_human.yaml | 10 -- data/enemies/jailer1.gif | Bin 224 -> 0 bytes data/enemies/jailer1.yaml | 10 -- data/enemies/jailer2.gif | Bin 280 -> 0 bytes data/enemies/jailer2.yaml | 10 -- data/enemies/jailer3.gif | Bin 226 -> 0 bytes data/enemies/jailer3.yaml | 10 -- data/enemies/jeannine.gif | Bin 151 -> 0 bytes data/enemies/jeannine.yaml | 10 -- data/enemies/lamp.gif | Bin 127 -> 0 bytes data/enemies/lamp.yaml | 10 -- data/enemies/lord_abad.gif | Bin 207 -> 0 bytes data/enemies/lord_abad.yaml | 10 -- data/enemies/matatunos.gif | Bin 240 -> 0 bytes data/enemies/matatunos.yaml | 10 -- data/enemies/mummy.gif | Bin 148 -> 0 bytes data/enemies/mummy.yaml | 10 -- data/enemies/paco.gif | Bin 342 -> 0 bytes data/enemies/paco.yaml | 10 -- data/enemies/qvoid.gif | Bin 290 -> 0 bytes data/enemies/qvoid.yaml | 10 -- data/enemies/robot.gif | Bin 329 -> 0 bytes data/enemies/robot.yaml | 10 -- data/enemies/sam.gif | Bin 126 -> 0 bytes data/enemies/sam.yaml | 10 -- data/enemies/shock.gif | Bin 109 -> 0 bytes data/enemies/shock.yaml | 10 -- data/enemies/sigmasua.gif | Bin 175 -> 0 bytes data/enemies/sigmasua.yaml | 10 -- data/enemies/spark.gif | Bin 129 -> 0 bytes data/enemies/spark.yaml | 10 -- data/enemies/special/aerojailer.gif | Bin 238 -> 0 bytes data/enemies/special/aerojailer.yaml | 10 -- data/enemies/special/arounder.gif | Bin 517 -> 0 bytes data/enemies/special/arounder.yaml | 10 -- data/enemies/special/pepe_rosita_job.gif | Bin 409 -> 0 bytes data/enemies/special/pepe_rosita_job.yaml | 10 -- data/enemies/special/shooting_star.gif | Bin 755 -> 0 bytes data/enemies/special/shooting_star.yaml | 10 -- data/enemies/spider.gif | Bin 109 -> 0 bytes data/enemies/spider.yaml | 10 -- data/enemies/stopped_arounder.gif | Bin 101 -> 0 bytes data/enemies/stopped_arounder.yaml | 10 -- data/enemies/tree_thing.gif | Bin 336 -> 0 bytes data/enemies/tree_thing.yaml | 10 -- data/enemies/tuno.gif | Bin 183 -> 0 bytes data/enemies/tuno.yaml | 10 -- data/enemies/tv.gif | Bin 238 -> 0 bytes data/enemies/tv.yaml | 10 -- data/enemies/tv_panel.gif | Bin 250 -> 0 bytes data/enemies/tv_panel.yaml | 10 -- data/enemies/upv_student.yaml | 2 +- data/enemies/walking_arounder.gif | Bin 78 -> 0 bytes data/enemies/walking_arounder.yaml | 10 -- data/enemies/wave.gif | Bin 98 -> 0 bytes data/enemies/wave.yaml | 10 -- data/enemies/z80.gif | Bin 348 -> 0 bytes data/enemies/z80.yaml | 10 -- data/player/player.yaml | 14 +- data/player/player_game_over.gif | Bin 225 -> 0 bytes data/player/player_game_over.yaml | 10 -- data/room/01.yaml | 65 -------- .../core/rendering/sprite/animated_sprite.cpp | 141 ++++++++++-------- .../core/rendering/sprite/animated_sprite.hpp | 4 +- 117 files changed, 86 insertions(+), 694 deletions(-) delete mode 100644 data/enemies/abad.gif delete mode 100644 data/enemies/abad.yaml delete mode 100644 data/enemies/abad_bell.gif delete mode 100644 data/enemies/abad_bell.yaml delete mode 100644 data/enemies/amstrad_cs.gif delete mode 100644 data/enemies/amstrad_cs.yaml delete mode 100644 data/enemies/arounders_door.gif delete mode 100644 data/enemies/arounders_door.yaml delete mode 100644 data/enemies/arounders_machine.gif delete mode 100644 data/enemies/arounders_machine.yaml delete mode 100644 data/enemies/bat.gif delete mode 100644 data/enemies/bat.yaml delete mode 100644 data/enemies/batman.gif delete mode 100644 data/enemies/batman.yaml delete mode 100644 data/enemies/batman_bell.gif delete mode 100644 data/enemies/batman_bell.yaml delete mode 100644 data/enemies/batman_fire.gif delete mode 100644 data/enemies/batman_fire.yaml delete mode 100644 data/enemies/bell.gif delete mode 100644 data/enemies/bell.yaml delete mode 100644 data/enemies/bird.gif delete mode 100644 data/enemies/bird.yaml delete mode 100644 data/enemies/breakout.gif delete mode 100644 data/enemies/breakout.yaml delete mode 100644 data/enemies/bry.gif delete mode 100644 data/enemies/bry.yaml delete mode 100644 data/enemies/chip.gif delete mode 100644 data/enemies/chip.yaml delete mode 100644 data/enemies/congo.gif delete mode 100644 data/enemies/congo.yaml delete mode 100644 data/enemies/crosshair.gif delete mode 100644 data/enemies/crosshair.yaml delete mode 100644 data/enemies/demon.gif delete mode 100644 data/enemies/demon.yaml delete mode 100644 data/enemies/dimallas.gif delete mode 100644 data/enemies/dimallas.yaml delete mode 100644 data/enemies/dong.gif delete mode 100644 data/enemies/dong.yaml delete mode 100644 data/enemies/elsa.gif delete mode 100644 data/enemies/elsa.yaml delete mode 100644 data/enemies/floppy.gif delete mode 100644 data/enemies/floppy.yaml delete mode 100644 data/enemies/flying_arounder.gif delete mode 100644 data/enemies/flying_arounder.yaml delete mode 100644 data/enemies/guitar.gif delete mode 100644 data/enemies/guitar.yaml delete mode 100644 data/enemies/heavy.gif delete mode 100644 data/enemies/heavy.yaml delete mode 100644 data/enemies/jailbattle_alien.gif delete mode 100644 data/enemies/jailbattle_alien.yaml delete mode 100644 data/enemies/jailbattle_human.gif delete mode 100644 data/enemies/jailbattle_human.yaml delete mode 100644 data/enemies/jailer1.gif delete mode 100644 data/enemies/jailer1.yaml delete mode 100644 data/enemies/jailer2.gif delete mode 100644 data/enemies/jailer2.yaml delete mode 100644 data/enemies/jailer3.gif delete mode 100644 data/enemies/jailer3.yaml delete mode 100644 data/enemies/jeannine.gif delete mode 100644 data/enemies/jeannine.yaml delete mode 100644 data/enemies/lamp.gif delete mode 100644 data/enemies/lamp.yaml delete mode 100644 data/enemies/lord_abad.gif delete mode 100644 data/enemies/lord_abad.yaml delete mode 100644 data/enemies/matatunos.gif delete mode 100644 data/enemies/matatunos.yaml delete mode 100644 data/enemies/mummy.gif delete mode 100644 data/enemies/mummy.yaml delete mode 100644 data/enemies/paco.gif delete mode 100644 data/enemies/paco.yaml delete mode 100644 data/enemies/qvoid.gif delete mode 100644 data/enemies/qvoid.yaml delete mode 100644 data/enemies/robot.gif delete mode 100644 data/enemies/robot.yaml delete mode 100644 data/enemies/sam.gif delete mode 100644 data/enemies/sam.yaml delete mode 100644 data/enemies/shock.gif delete mode 100644 data/enemies/shock.yaml delete mode 100644 data/enemies/sigmasua.gif delete mode 100644 data/enemies/sigmasua.yaml delete mode 100644 data/enemies/spark.gif delete mode 100644 data/enemies/spark.yaml delete mode 100644 data/enemies/special/aerojailer.gif delete mode 100644 data/enemies/special/aerojailer.yaml delete mode 100644 data/enemies/special/arounder.gif delete mode 100644 data/enemies/special/arounder.yaml delete mode 100644 data/enemies/special/pepe_rosita_job.gif delete mode 100644 data/enemies/special/pepe_rosita_job.yaml delete mode 100644 data/enemies/special/shooting_star.gif delete mode 100644 data/enemies/special/shooting_star.yaml delete mode 100644 data/enemies/spider.gif delete mode 100644 data/enemies/spider.yaml delete mode 100644 data/enemies/stopped_arounder.gif delete mode 100644 data/enemies/stopped_arounder.yaml delete mode 100644 data/enemies/tree_thing.gif delete mode 100644 data/enemies/tree_thing.yaml delete mode 100644 data/enemies/tuno.gif delete mode 100644 data/enemies/tuno.yaml delete mode 100644 data/enemies/tv.gif delete mode 100644 data/enemies/tv.yaml delete mode 100644 data/enemies/tv_panel.gif delete mode 100644 data/enemies/tv_panel.yaml delete mode 100644 data/enemies/walking_arounder.gif delete mode 100644 data/enemies/walking_arounder.yaml delete mode 100644 data/enemies/wave.gif delete mode 100644 data/enemies/wave.yaml delete mode 100644 data/enemies/z80.gif delete mode 100644 data/enemies/z80.yaml delete mode 100644 data/player/player_game_over.gif delete mode 100644 data/player/player_game_over.yaml diff --git a/data/enemies/abad.gif b/data/enemies/abad.gif deleted file mode 100644 index 9316e7e103d2bab8c5138a7203ca84a643569915..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmZ?wbh9u|lwc5GXkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBbt zE(wJv_Esr{upP8|e@HX@cc7GT{AdV&ZjI|7XKYy?s)G)2*8( b*{T#gN-&##F@pPeG27}xFZ5eA7#OSp9!V)c diff --git a/data/enemies/abad.yaml b/data/enemies/abad.yaml deleted file mode 100644 index ffc9c35..0000000 --- a/data/enemies/abad.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# abad animation -tileSetFile: abad.gif -frameWidth: 8 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2] diff --git a/data/enemies/abad_bell.gif b/data/enemies/abad_bell.gif deleted file mode 100644 index 0da0457613574516caba5195e037f183505fbf1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 zcmV-`0e}8SNk%v~VW0pI0Du4h00030|NkNX3r5C8xI|Ab?y3&`K#b5hZIu+`~eUxAVckrS7pCKI$=yLPSyzi6c1@utq9 z6PpErAL2)c%=LD{BO(}qK8w?%(zc`-M^S5PO1TiLxNrAR8<*GAmv6K!ow=P18CQk* z)D3<8tOvvwD8m#tamX?!_Xoz4M~HUU7v|zoBgvLVsVSJkHK`c7AZE8V7|D5wiP`1H zY5Lj<<|iAa2GuxM>iUS6x@p0>cPmLu2E6;)YfNjadxtt}N;zvuIviG9t?j5?cKuzs z`x&lUDgL`0T-d%Ubllfm=dFt-&x3u5xX%LL^hC@xVgKk=%M?q{w0dUlyy^%7KT;(!-Z+Vp95`q395s}OtXx2niug@Ti8H4#nlwYg97&L8 eK8dY#8a#mRh diff --git a/data/enemies/abad_bell.yaml b/data/enemies/abad_bell.yaml deleted file mode 100644 index d6c1772..0000000 --- a/data/enemies/abad_bell.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# abad_bell animation -tileSetFile: abad_bell.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] diff --git a/data/enemies/amstrad_cs.gif b/data/enemies/amstrad_cs.gif deleted file mode 100644 index 185f699402a39f99497dbe15bbda346dcb87dfb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1927 zcmV;22YC2LNk%v~VSoUD0Du4h00030|NkNX3rrC;25Hq3Yg*?pQyDsb|}{_ zh!Cw_zS2z-Yz)O4B)L zSF?60+d4H0E9Mj#OWG^SWBVCpi$n?Lm0Kz7)~_sy-9 zMvbkF>uDuBF5YJsjs4CYPKasEnx2j*&rBHqC{35UdBFN*8b(V}wtozpU9$ElA}B%k zz5p7ctXxBX{|+T43}}wSt3SVTNt)v;C7XTakRdvGjg`q%G;1D=dFMyBmJ{{Kyg2ct z%^52-QG>-3XcsJOKHeOPljtO13zNANNfH#hQX{zjlv<0}7M8J4HT4z-YE-p>a6o|* zv=+`rGmAE{ySD98L0V_3dRh~2o2hII8$PTMF{7UjyE;1YmRRG$c9$e^YsAtpNP{;+ z3`*CgV4uj;WxeJS<5Xc4RWlZwacm{dnHx#w>J&E9hoW~Mv6_|zF3rG+2TvvVAZDOM zSo8Hf`!n;e>mUKH{WLBDVT*&tsP?>drQH`QH0NY@`@@bWh0&|e|cyM8vf|y zUNAjD$RH1vB&Z)|%Ne3WP9x^D3V#W{7$AVt-D9JKKGJv_f(gAxj%pbibD4Z6Qb^Tc z$(;vflu@>)q-ky?siTV#od4PhXh?=3X(8YbW`s%K?4!gjw%O1P4wBK%fc)Q)K``K3u+nwS^ z(=GYKd=m?4WF>u`((uBw8g%amN3UG0!E!7;!`N5vF!jbyzy0?Stm&Dkg*xkXkC;w&nzFtZ$BJ$tahVP72Y6YhyWf6Q84(A9L8rVo=MO_ z4HI4b_@JVc6(a`#Odtk%^E#PX4|WvjAerj7H~Y0seBj#A_1+_#teItn>D$=oI2E-V z>JU8xn_JVU7QR^pjC>kHUDXEXnc{<|`^7`{FGf8kll~Z1ek_f2moop*b z!c|^!SV8U~GKlO0*8ON!DK?b>MhWaxB5`va?a*xV}?R zi;}v^OSL))OHP64OKWIhC=HlCNvh9sOrfD6H)f;o_kE; z1+{rkRH?I)>D*v3iI|;$3bdUZgrE@E`AmcMvY=2Y=kOj{w|*K_|DPW~C_xo!Q3C3& zY`?Q!KP8$^7`(xq4V~u?$@aH!V)UaGC5i`0Izr-|lUKe#4ovZ>LYLl@p*Pf<358hG z8M2h8>>H{FP2|UxW-O=L1E$LmNC^`PZ)w205)Hq&OoUl+eShL74xaTYFNzh6j6xDs zyLv4S<@9Em<42Lm0lCkJ)ml$AA1D7bv6M0qsc`M6Tu0Qnw7LtN?)YgZRr$%XqH?Pi z+aEjGIyS_@^EaGht9E$AS2JF)phU{*4vR@WE7kB)bqWuv8fsI@s`jw@!=dl$in1HR zWVKW^8fU@^1Qps)gTD-3MAHz!T-NZVNPJ11&hu2lzsYN{;xmIu{Vm^Z$}t*^-J2~g#n_FoKj NEIjZ(4f&B(tW-1EBUw%9CaQ~M;_ ze0b8wCx;ZO4?SJ~YfjyQ(6&ue0`|?gDE?vhkF=x4Yo~bUHl5s+{;@Y~#qk2kyPk%u x%G=wnvTawqu|Yg7!@c?X)N7#@M;?~VynbU#tHjAkD}GKtF*WFxPyhpiH2}#wRzCm$ diff --git a/data/enemies/arounders_door.yaml b/data/enemies/arounders_door.yaml deleted file mode 100644 index b5a4daa..0000000 --- a/data/enemies/arounders_door.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# arounders_door animation -tileSetFile: arounders_door.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0] diff --git a/data/enemies/arounders_machine.gif b/data/enemies/arounders_machine.gif deleted file mode 100644 index e6c5e7d5f89e5f98cf03cce4b5cfcf540acf9db8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBdC zJ^d?BzvWvr=kf(@-F;Qp8Eh7)wmnXsCGfIU^Tph}KifX7aI;ulu2*OC0vH&q0q6iuZ~y=R diff --git a/data/enemies/arounders_machine.yaml b/data/enemies/arounders_machine.yaml deleted file mode 100644 index 026b250..0000000 --- a/data/enemies/arounders_machine.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# arounders_machine animation -tileSetFile: arounders_machine.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/bat.gif b/data/enemies/bat.gif deleted file mode 100644 index 2119e7c4ecff33f9e45765f99c7a916a33eb36ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86 zcmZ?wbh9u|6k=d!XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBbR iEzB9+v&5%#Z$26#yR5wUTV>2KhfALpJPl%Cum%8!r5H;9 diff --git a/data/enemies/bat.yaml b/data/enemies/bat.yaml deleted file mode 100644 index 582903c..0000000 --- a/data/enemies/bat.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# bat animation -tileSetFile: bat.gif -frameWidth: 9 -frameHeight: 7 - -animations: - - name: default - speed: 0.05 - loop: 0 - frames: [0, 1] diff --git a/data/enemies/batman.gif b/data/enemies/batman.gif deleted file mode 100644 index 26d21ca51aba236faab6b73a6762a6bc9b27f273..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmZ?wbh9u|RA3NbXkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBbg zJbi7e_sA{k+uV%4n@8gw{8|>Kv))U)y5xAkuj{)H*6r(^z>=B5 tx9-uW<1DXcxGgnuTx*pUrDMK&XYS$14>x{4owWE_(GSbFNBdbBtN~0QIdcF2 diff --git a/data/enemies/batman.yaml b/data/enemies/batman.yaml deleted file mode 100644 index 4a44e20..0000000 --- a/data/enemies/batman.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# batman animation -tileSetFile: batman.gif -frameWidth: 8 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/batman_bell.gif b/data/enemies/batman_bell.gif deleted file mode 100644 index afcf80127d7e03f89631d0439d91b2d029846f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmV+m0rdVyNk%v~VPF6d0Du4h00030|NkNX3r_xg1Pe%{dLd9r|4SD;ylg RO+9_|t$imMrfrgEYrQO5 zyH}!j<|WPPE0Rx#gv1s*Mt>@seQwWLbu;Nlo;z-pMCKl1y}x`*&FnRy>k@4i8waL~ zZ(AO&;r?*)4D}P2oj>0Ap}umZaNE&PHtmc=GN@ zFIxavw;<1BJRp-lWXz{@+N6pTwaU3hb*m${h5bUgVrB^(rH#KuCi{I8m6A%+ z)ES4GsTW(zsuyW{s>o~F<|)*I+14stlXQ7EJOk=yYqc9qT54MDwoBJr9P7H{o$THG zE4G+s_w7msiw+8=YV>WMJ6T*GX;0tE9Bg>+KaX1~f%}kcx^(aiIA>e#xx-;Bpe`?- zDiOn%PoIi&VBpqu^!L%DxP@of^>f#c9v_v6Fs}Ru@!vX!8-WRo!_i_vetuvwY$y>R zP@zQO2@7+QCqZii$8F0APaVaeH(5NbdW>Ao978a8{R);=*s)}tx+#k`t=hG0+qw-~ G0029*J-;IW diff --git a/data/enemies/bell.yaml b/data/enemies/bell.yaml deleted file mode 100644 index 9377046..0000000 --- a/data/enemies/bell.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# bell animation -tileSetFile: bell.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] diff --git a/data/enemies/bin.yaml b/data/enemies/bin.yaml index f076775..3e03c65 100644 --- a/data/enemies/bin.yaml +++ b/data/enemies/bin.yaml @@ -6,5 +6,5 @@ frameHeight: 8 animations: - name: default speed: 0.1667 - loop: 0 + loopFrom: 0 frames: [0, 1, 2, 3, 4] diff --git a/data/enemies/bird.gif b/data/enemies/bird.gif deleted file mode 100644 index 1bce2e4578dfabf0c98e375fa407b5de8aba08f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBdC zE&VG`zvW-dZE`6=d(ZDjUn}LCTJI?@dYaKAvq1Kiq5UjNc_-~aLRaJ9SKT-V_f z)OTvxXU<-)<>qQ%e{D|MerMfx?q!*Wo=n@;c(^|POA4)5ld v(6CtX#eGFug~zmmH(vbUkkqvFjLfX;oVjx6$(t{Ka!P4gd2vNDFjxZsUG7-^ diff --git a/data/enemies/breakout.yaml b/data/enemies/breakout.yaml deleted file mode 100644 index da7c272..0000000 --- a/data/enemies/breakout.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# breakout animation -tileSetFile: breakout.gif -frameWidth: 24 -frameHeight: 32 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1] diff --git a/data/enemies/bry.gif b/data/enemies/bry.gif deleted file mode 100644 index aaaacdd037d6d8a6216b37afc5dc97077e1921a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmZ?wbh9u|v|$inXkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBbS zT;vvX@4O}Faw$OazTupu>l+swwG5VAbnmIj+mf}>5{HYU@_&|3wp_!wOiLvxKf-dG zkF5A*&)cavlFR$T_oQt!&Ygaoss8AJSEV_Q-!-!5cm6Ijej*SbV4jj@xZY;}yW`=L zmzlV#Mp(RPTCrW?YK8|#D9(@yW@<-en5ikVH|+|nT9 t?Q#9RxiDAxq3$Aq><7Z{C1_17gG`s)+ diff --git a/data/enemies/chip.yaml b/data/enemies/chip.yaml deleted file mode 100644 index fc0b78d..0000000 --- a/data/enemies/chip.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# chip animation -tileSetFile: chip.gif -frameWidth: 8 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/code.yaml b/data/enemies/code.yaml index 01f0817..b7fde3f 100644 --- a/data/enemies/code.yaml +++ b/data/enemies/code.yaml @@ -6,5 +6,5 @@ frameHeight: 16 animations: - name: default speed: 0.1 - loop: 0 + loopFrom: 0 frames: [0, 1, 2, 3] diff --git a/data/enemies/congo.gif b/data/enemies/congo.gif deleted file mode 100644 index c4e893bc7c8c515b5de82bb7da43f76fbfdf3403..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmZ?wbh9u|RA3NbXkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBcL zEyBxApQsOr>N{no>=9YEPjlW2U%nkvrKGmKtT-aLCeY~So&0UlSN}9l^;vayWx15n s)RRv>S+4TvlzEh86(ZHGwRU>+n~8Nv3(j8sHB%=ez1R1e2m^yP0P1ZvG5`Po diff --git a/data/enemies/congo.yaml b/data/enemies/congo.yaml deleted file mode 100644 index 4ab10fb..0000000 --- a/data/enemies/congo.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# congo animation -tileSetFile: congo.gif -frameWidth: 8 -frameHeight: 16 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/crosshair.gif b/data/enemies/crosshair.gif deleted file mode 100644 index a1bf75ccc74b58394c67f9cabbe4a804ee57fe5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBa{ zTl!ZD$j-jg?0#vt)TK(Pbqzh&I|W_p<}aS7JbhiXO#ZeN6Z!Y;7E4~eL2H#%!KG@& zMi<%5Uu*PwPtG&0oRYdU%0I7cbKAB@Z#H#It6aGIQ*UIS`DJCj@7~IXm%mwO&=uTn zy1h)4#bb-)OLrt9}(5 M?$*o-U|_HY0QJvSzyJUM diff --git a/data/enemies/crosshair.yaml b/data/enemies/crosshair.yaml deleted file mode 100644 index 93d9bf9..0000000 --- a/data/enemies/crosshair.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# crosshair animation -tileSetFile: crosshair.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/demon.gif b/data/enemies/demon.gif deleted file mode 100644 index be1b0c164677f6f2a84ca1be086882b811bbd34f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBa{ zdHQB1zPdhdPM@wYR(y>K^r zr?k88xnzu!qiaVf>(v;`aNX%A-yAx2Yo5MmZ=U^Sg>622dUpDid}7&ux?MSEkCA%e zl(J7(zNdv{C`!ZE-TGSu9YvOE=|?c M_IRBU&A?y{01eJq9smFU diff --git a/data/enemies/demon.yaml b/data/enemies/demon.yaml deleted file mode 100644 index 17055d1..0000000 --- a/data/enemies/demon.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# demon animation -tileSetFile: demon.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/dimallas.gif b/data/enemies/dimallas.gif deleted file mode 100644 index fa9ef4be2e57c7ad8865d96c2fef838fb898e7ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBa{ zTKZR>7Q6R|Gyjlh;9kAx4UKZ_Sywujt#Dhl?)0=9-q*kNu3tZ6b6dZU-pEP| zzs&x0ih;!A_An+jweL5WE=IVtls;77yrpQS`gZm!4}`f+DMWGo?EHDtB&+o}mv*AK L_3!Bc3=Gx)|H@ks diff --git a/data/enemies/dimallas.yaml b/data/enemies/dimallas.yaml deleted file mode 100644 index 5999413..0000000 --- a/data/enemies/dimallas.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# dimallas animation -tileSetFile: dimallas.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/dong.gif b/data/enemies/dong.gif deleted file mode 100644 index c08a2e6368fa48a359ecfaeb6eb7fb263e3a02db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmV-p0i6CvNk%v~VT1q>0Du4h00030|NkNX3rP2Um-S}2h~~M+xf!TBqvthQ zX!+@QcsBawq?y9UrrHXp80tpbNCoSwC-r6tEZmtH<@y|KQ;7UHSm{K&_Q)Cpdg+;) zifZkf2$o0cvn*@@Ud!HD_3C{}NH6BjzI9F9k1fM1D6`0*a7FLnI(`Jr4Gb5L7Yun^ z94fSBFigBsCzS-EL-#GBIUXSM1-Y@XN6AL-1bS?_q+v`^F;iqSveE;>ng9v_06WFW Bof`lE diff --git a/data/enemies/dong.yaml b/data/enemies/dong.yaml deleted file mode 100644 index 0154254..0000000 --- a/data/enemies/dong.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# dong animation -tileSetFile: dong.gif -frameWidth: 22 -frameHeight: 16 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3, 4, 5] diff --git a/data/enemies/elsa.gif b/data/enemies/elsa.gif deleted file mode 100644 index 6f10d051bd84ca8779726c3fb3cce87febd2d9cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236 zcmVqf8P=TT7a9d_--s-3sS-$4zvYvLfGa9Cs z&BEw!7`oxDcOJ_@Qo2s-*GslYhD~6h@*?Ih#4C?t)0028FiEXq1 diff --git a/data/enemies/elsa.yaml b/data/enemies/elsa.yaml deleted file mode 100644 index c31099a..0000000 --- a/data/enemies/elsa.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# elsa animation -tileSetFile: elsa.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3, 4, 5] diff --git a/data/enemies/floppy.gif b/data/enemies/floppy.gif deleted file mode 100644 index 86e0aa1e864c01e816436b7000b94a2a4a6e55ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBc- zT>3f>ynR2#rch7p!(vP6*%`;K^)CC~d(UfL&eD0hzn5*fQ4q0rcSXJNO_Mzy{yQue zO)^}v;>$)2$KcG%T&)fox882@W_dm*Vcn04ysm`{rb_>w*Rr_lXZai@`|gTw*Zh`G zz8?78ErdftsAT*1WRn|Pf0T=!aBJq!R4mqfu{?Ffb78HMPnMs&nbx)P*3QYND!yfX KI~BmdU=08Sc3hbN diff --git a/data/enemies/floppy.yaml b/data/enemies/floppy.yaml deleted file mode 100644 index 145861a..0000000 --- a/data/enemies/floppy.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# floppy animation -tileSetFile: floppy.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/flying_arounder.gif b/data/enemies/flying_arounder.gif deleted file mode 100644 index 31418a46d09b5726560e7d7cde1d2c8157c1b42a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbh9u|WM^P!XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBcm UJ_*y==k`vR_|7sSk&(d~0AjN?l6z-GpEJy||GHSqqW-h0n_cAU%cn)l zc~n+gR>>_s!)ux*y diff --git a/data/enemies/guitar.yaml b/data/enemies/guitar.yaml deleted file mode 100644 index 4600ac3..0000000 --- a/data/enemies/guitar.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# guitar animation -tileSetFile: guitar.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/heavy.gif b/data/enemies/heavy.gif deleted file mode 100644 index 05b1f7eb6ce370adbc0f6ccb4ebe7e1aae606f81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBby zTKYK~Yw{j+d)-nKKN`M&f~De(96^qSFWl#8&0bZw`^1Kx=fBQpOQ%$Frh}W!}^Oi(FWF?^w9V zjc>=UnN^g8yDiyqw7gV2RY-FhL&eSKPD?DeKQc>woLYMIOGK7cmsZoRiyF^fu|%6j P2mah~s;fJIfx#L811Vd| diff --git a/data/enemies/heavy.yaml b/data/enemies/heavy.yaml deleted file mode 100644 index 50f0ced..0000000 --- a/data/enemies/heavy.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# heavy animation -tileSetFile: heavy.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/jailbattle_alien.gif b/data/enemies/jailbattle_alien.gif deleted file mode 100644 index 306f1b78b7842bce684960746dfb9c0c8a52d5ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmZ?wbh9u|lw#m#XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBcg zE_^Fb=XTxU)VnCExTh!io#aF1$RLYJS>F@0yUgOgomt*lYW_PVsfX!#-r25SHT1}H%Q diff --git a/data/enemies/jailbattle_alien.yaml b/data/enemies/jailbattle_alien.yaml deleted file mode 100644 index 5d18f67..0000000 --- a/data/enemies/jailbattle_alien.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# jailbattle_alien animation -tileSetFile: jailbattle_alien.gif -frameWidth: 13 -frameHeight: 15 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1] diff --git a/data/enemies/jailbattle_human.gif b/data/enemies/jailbattle_human.gif deleted file mode 100644 index 9e341b7a04e560d1a738228e326dc13046a91847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110 zcmZ?wbh9u|6l36JXkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBbF zEzOCi_s*2bDcE;PCt&%a)0%h0WE0BrR{ff}QoBm&<;HCD{wID%gW{4|oy{+Mh_hsJ HF<1iteK8^j diff --git a/data/enemies/jailbattle_human.yaml b/data/enemies/jailbattle_human.yaml deleted file mode 100644 index e2f5eda..0000000 --- a/data/enemies/jailbattle_human.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# jailbattle_human animation -tileSetFile: jailbattle_human.gif -frameWidth: 11 -frameHeight: 13 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1] diff --git a/data/enemies/jailer1.gif b/data/enemies/jailer1.gif deleted file mode 100644 index 67b9025f5999d248d85c42955896d06c4585d91a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBbK zTKY35uDLyL&IUjBf*V^-_l7FINKGl1J2xZl?cu@~tB*)&+}5f)t+p@WN6fy9>pBut zjl~i!NXD$2wqhHWTjo(vij=% ztyA%GINr)9bkz_q<#K5337a#`E}DBnliVUD>#9zf)UPF&wUU`%v)9?)#?4{&5S>&T z**iS^SGMHmV}*tkB|~_47>1&_h!-iM26Wa@S%%qIhb4G)30jC`DH=rDh;yo_6lyAp z3Rel7o10028Z)^=k6 diff --git a/data/enemies/jailer2.yaml b/data/enemies/jailer2.yaml deleted file mode 100644 index 6990e34..0000000 --- a/data/enemies/jailer2.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# jailer2 animation -tileSetFile: jailer2.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 1, 3, 5, 1, 3, 5, 1, 3, 5] diff --git a/data/enemies/jailer3.gif b/data/enemies/jailer3.gif deleted file mode 100644 index 89eaaaa95b9c2715065e6367652e4f3d1fbb3bce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBc# zTzF;_zI-ncqP>k%b)L`htdbjBJLIoUd@wa{+VQAOxarhi}aIHmcvZP2V~XEn61 znVk@24ar(nw@amTMZ&>#r=vM`oUL0P;VBWpS%2nEVTOl~RrAM2}x#I z;bQV4_=nhvAF1XiB$ghXF}>o(3ALB1DL=wbx?NXydwzrSm15SnFDqY8UO7vQtF6my a@vB#+(v#Dpe}Cz^Ej&w_rzebo!5RQAm0z0x diff --git a/data/enemies/jailer3.yaml b/data/enemies/jailer3.yaml deleted file mode 100644 index ab2942b..0000000 --- a/data/enemies/jailer3.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# jailer3 animation -tileSetFile: jailer3.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/jeannine.gif b/data/enemies/jeannine.gif deleted file mode 100644 index 68293d5f060d3766b96baf0a87b8417d4cd525fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151 zcmZ?wbh9u|RA3NbXkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBc* zEKP~q-z-a*#Ot{`=t#)Vc;A`FBknjhsh;XvEg5S#dsPDORI}Kv@@22jYV?M!II-Kt y<+xJ1aI>E8I!=LYDpoUAOlJG`)^6M0k8T#1TlU=1{yjJExzU%O6Ie7D7_0%+(Kmkp diff --git a/data/enemies/jeannine.yaml b/data/enemies/jeannine.yaml deleted file mode 100644 index 50a51de..0000000 --- a/data/enemies/jeannine.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# jeannine animation -tileSetFile: jeannine.gif -frameWidth: 8 -frameHeight: 16 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/lamp.gif b/data/enemies/lamp.gif deleted file mode 100644 index 5dc1ef770c6647a938dd7d0f827f1db01a2a5057..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmZ?wbh9u|RA3NbXkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBc& zE&PHf*6?2L%DePgZ<|&2&(@?SpE;@1j_q8P(tYrgNBXwT^_C~@|GIzsXVZa&fgL(( Zoo5z*y6N(;&1;ok<59CsG2V;})&SK(Fn<65 diff --git a/data/enemies/lamp.yaml b/data/enemies/lamp.yaml deleted file mode 100644 index b6d337d..0000000 --- a/data/enemies/lamp.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# lamp animation -tileSetFile: lamp.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1] diff --git a/data/enemies/lord_abad.gif b/data/enemies/lord_abad.gif deleted file mode 100644 index e24656583f54d42474c0f04c593aebed861b8b0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBc7 zTlg0)YrGy4)qgQ8ebc9%@}*}ax&$ODQ)cMSJ(-)_x_4&U5U diff --git a/data/enemies/lord_abad.yaml b/data/enemies/lord_abad.yaml deleted file mode 100644 index b21c627..0000000 --- a/data/enemies/lord_abad.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# lord_abad animation -tileSetFile: lord_abad.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/matatunos.gif b/data/enemies/matatunos.gif deleted file mode 100644 index 6b41861fc7437a960db079fa37ca29f5e7aa4c98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmVLvx;0vE`Fz~^ z?(_A6j8Lm+ILM;6M}+1##HhF!X(OrhXNkC_xMZVQcL_P^(b-fAb1K6*N;(Sq q2{CCA8tC$)N{Smgi+DoI>I(~rdMhJ;qpA572vF+yx-{~87EZf+Xk--`O6yh{> diff --git a/data/enemies/mummy.yaml b/data/enemies/mummy.yaml deleted file mode 100644 index 8180ddc..0000000 --- a/data/enemies/mummy.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# mummy animation -tileSetFile: mummy.gif -frameWidth: 8 -frameHeight: 16 - -animations: - - name: default - speed: 0.2 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/paco.gif b/data/enemies/paco.gif deleted file mode 100644 index 8c07179113818561cd2ba5abdb08b9c43405cd90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmV-c0jd5+Nk%v~VSoS-0Du4h00030|NkNX3rjcigJwH7@^wp;5Zo3n~hT`l%X2B*}dGS}Rtey?(Otj)IM zr{gu+FBUfuHP`22C-TQIRt9L6_J=12_sHc$HyNp?$@l2kDA^ZE8HZR%8H0Exy6H32 z^y+E^J1d)X1VwwR%M|vqBLn;!wupC!b)1&GmRbc|yeN#kQmi+#VN9*96in=F%ls4F z^ihtBZ7u%ugdOc|t{YyoeqPN!eoz0rT`v_s*iQ&IXygRSLvj!xKxxYOWt*3fAh%)5 o9vZaRtzx@CM5<>w1J0TL6cK`qY diff --git a/data/enemies/paco.yaml b/data/enemies/paco.yaml deleted file mode 100644 index 63aa8fd..0000000 --- a/data/enemies/paco.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# paco animation -tileSetFile: paco.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1, 2, 3, 4, 5, 6, 7] diff --git a/data/enemies/qvoid.gif b/data/enemies/qvoid.gif deleted file mode 100644 index 4ae89a6104e0dfe33787c4c53a949f0d06ee9959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmV+-0p0#bNk%v~VSoS-0Du4h00030|NkNX3rws(a`Ck6^ zc6)vtHJ34A=Ouzfh=<3frvjt2D7bY2MK?$jiI$j{wzYUvsp%vo8fwP5G+Iho)^nw5 z>dJXa#VVOa#n?3aDjC+BClhEf*BXX-vdilk49FUyIdnRk{3^Z5i^|OP=mtkxCCgDO oZhK3at2T^^14g}lvTd_sDdX4vj8U0CZ(lzWFM*#83blCZU+27HB#w#FT9;yV$ak_ct3C zxytceJecrPH1;&eBNMkwGJ!Sf%$d~Ds=AUx`m?IKIAm~B-g?zza+v)lH%~hlymz;| zM?UV^lSQ$1#@E-jhi5otvxs;U2&s7Zf=8)m$=H>txETq_hpDFN^Z6J$>Uk=Ky2w&m zDdej9YWHS&Wg44{dqvv`3VRuBL%db2Wt@z>Ys&NPJsq4qyqyW9-LyN% z`7P`xSqS!szOJ4~8YB3XF&|QIHDqEGo?i>qZ|2&+UVzegFvuZb!fDqOHe?9#;g^UA b4>|-?@FItS4FeGX)TiX5L5=_c6aWA_?&Oed diff --git a/data/enemies/robot.yaml b/data/enemies/robot.yaml deleted file mode 100644 index 9fccf53..0000000 --- a/data/enemies/robot.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# robot animation -tileSetFile: robot.gif -frameWidth: 16 -frameHeight: 32 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/sam.gif b/data/enemies/sam.gif deleted file mode 100644 index 3fb8edba2bc98856d7849f59fa407b0ed7e8727e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmZ?wbh9u|RA3NbXkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBbN zE%gge?7Tar<=_eSi)Ypq^%hD$NKH;@m7h5+BRlT?(nbDflPq4owb8K(Y%z>KEo$;< Y%5l-$qg`ye7viSATB9L8gNeZ!0CLzYQUCw| diff --git a/data/enemies/sam.yaml b/data/enemies/sam.yaml deleted file mode 100644 index 3a2011c..0000000 --- a/data/enemies/sam.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# sam animation -tileSetFile: sam.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.0833 - loop: 0 - frames: [0, 1] diff --git a/data/enemies/shock.gif b/data/enemies/shock.gif deleted file mode 100644 index 3ad9cb1bc9fdd3a5e7a2a6b63fc230e1e5bb1d46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmZ?wbh9u|G+^LhXkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBb_ zErQEe-nhe4Q@HL$-_;q_dpzZ@c1lM0MR%~g^9cK7dVGcN;Ww3scdjg4>$PW5|4|JF G25SJ4!6h{S diff --git a/data/enemies/shock.yaml b/data/enemies/shock.yaml deleted file mode 100644 index 9ba2544..0000000 --- a/data/enemies/shock.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# shock animation -tileSetFile: shock.gif -frameWidth: 8 -frameHeight: 8 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3, 4, 5, 4, 3, 2, 1] diff --git a/data/enemies/sigmasua.gif b/data/enemies/sigmasua.gif deleted file mode 100644 index ecfe5bb984294b7f728e6dbe04607ceef968148d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBcv zE`2i(yyZ_0G1(F&xvX6Nd99REr=n$*!mf3TQZ}65eP&wq;g8X$3f3~S)e1c9k8n|| z6kghUv&F60Hr@T#lCZ7bI)2k1r5!w`TcQ4sZ||$pU%&X~Uwr=Q#@%N1_s`NIzD{45 X&dgrnB;3>-xWn-Ij;$O43=Gx)6FNlF diff --git a/data/enemies/sigmasua.yaml b/data/enemies/sigmasua.yaml deleted file mode 100644 index c1bd4da..0000000 --- a/data/enemies/sigmasua.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# sigmasua animation -tileSetFile: sigmasua.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/spark.gif b/data/enemies/spark.gif deleted file mode 100644 index 8126019c2283ab26bb9b881a2165b58bab77140c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmZ?wbh9u|RA3NbXkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBcY zEJ+!sSD%ZU{nF(Y(=7|z$lM2tozsld;;v4dKGknyPj6w?^)Kg~uiW9fmg6GnvA9!V bs%Ju-$NJ4t|FSUS7#WCmR12(JF)v`mH+?% diff --git a/data/enemies/special/aerojailer.yaml b/data/enemies/special/aerojailer.yaml deleted file mode 100644 index cc63b5c..0000000 --- a/data/enemies/special/aerojailer.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# aerojailer animation -tileSetFile: aerojailer.gif -frameWidth: 43 -frameHeight: 44 - -animations: - - name: default - speed: 1.6667 - loop: 0 - frames: [0] diff --git a/data/enemies/special/arounder.gif b/data/enemies/special/arounder.gif deleted file mode 100644 index aa75f4dbfa650ff57a4d8d713e507924cd967a79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517 zcmV+g0{Z<&Nk%v~VNU>B0Du4h00030|NkNX3r73Rk#dQUzhHRmKK&n zpz(VasJABu*QOK|_@H%Hb~uPQ^7mHPXh-=t=%zFomv@P|xY@vYsi_#%hIZyDb{fgr zIk~EuYBoFS$(QyOE9?4)Wyjci3by98dfX+fm+Z65)ok)C6wOjSbK7z)lWjeXJ+`f_ z_RUS+Jr2zrzP@pj$!l4KK2--y%RZ3=Q^btE#jg({PR)uDd*zQxhGq1I1>@DwAu)my zja7>%OJTo?$qbBahv;JTa*%drPh@MywQE3XdJTBl{$mVv3ofjBGKyFFLl#x1$qZ``>|&nC4|_|D}9 H3IG5*1;F(U diff --git a/data/enemies/special/arounder.yaml b/data/enemies/special/arounder.yaml deleted file mode 100644 index 5ba61d3..0000000 --- a/data/enemies/special/arounder.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# arounder animation -tileSetFile: arounder.gif -frameWidth: 79 -frameHeight: 90 - -animations: - - name: default - speed: 1.6667 - loop: 0 - frames: [0] diff --git a/data/enemies/special/pepe_rosita_job.gif b/data/enemies/special/pepe_rosita_job.gif deleted file mode 100644 index 6ced01fdab8f8956ed744c30776ed04d5e9c037d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmV;K0cQS3Nk%v~VLkva0Du4h00030|NkNX3rg?abBh zYWo05wGqyE6Bc_MQu0|DHi|$`bt9AQF4wK$Dm7)o#NfAlR*}`LlI}ZmIgxNnJd4f0 z(@)njbTT#}k_E+Q^+%&6COBvq^pgmvhllqVh>>C<23Kk3Ll`J31$Jk;$ybL8S=d?n z)@tP?ilLXuv$@y`xrK;yml@1ZMc2u;3anZ@yeAnvhT7QsC%DYSnCFVMgL^CsfoRLP zY81AZI;^&b-9&!$1I|rl?w4~F7Mmgb43>dLn63&-+I*Y=I)jioa@ z@aqYO#G>(tOe&Ymrt=An&Vom3(PAB9rNk`v3l59NisPR}M30Y}*iJ7ShNE!3fxfz-X>M3e^ikhmr`a;V3 z3Txup8e407i<_&v%Zoef^4lvsOk8YyjGXKc%)+ev3>_^!OXX&)@IQ@vcO`e*_B}JczK?z!3`*I(!H*qQo!_ zLsXoIF{8$f{~WU|x!5tJ$dM#Tg7k2*q{@{nTk1;*(51|oG;2nLxdErmojiN`T&1(n z&!I$%8Z{OaL(-#6n>u|u=OfgqRI6GQvy?*C30tpv{R%c;*9c=FlnskEt=ev9mq}d< zH?G{9ZV-3vIdU~hdF6jpF}u;Rsxr6jKKx3T2OlvzDKaM?iS%A7lU zCWp`N=h37~hue(WwCdHYuSGVpxwY)sl~aeNjXSq)cdxJP{tY~Mq~2YG8$XU5^6e_g zn>*KSTlDkk)J;cUR6V=)+QhYV-wr;!zw6AGi$9NE?DsnB)4P9vy8RyM@ax-;Z{BzQ z`~3Sqw<8ameEtncpf3X60APU%E@(@F#qGyngc6$Kpmz{PHDQJtdUPRs9mcU?h$4zm zA%^r}H)4t^Ds^BYEl#pxj550Q;e05bIAe}7mgpgl0qO{3j68x^;~_yFnc|Q(mgggq zPBN&Zkwqf-WR(&|N#&F-TFGUBSZ>+mgZkmoWtn+>38R*2GItpx#KdN1hG^0-=M*o} ld8Z6+{un2edFuIRDSWg^W-)N~i70xXB+6)`j!sqp06QrQc0&LF diff --git a/data/enemies/special/shooting_star.yaml b/data/enemies/special/shooting_star.yaml deleted file mode 100644 index 080eaf9..0000000 --- a/data/enemies/special/shooting_star.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# shooting_star animation -tileSetFile: shooting_star.gif -frameWidth: 64 -frameHeight: 64 - -animations: - - name: default - speed: 0.1 - loop: -1 - frames: [18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] diff --git a/data/enemies/spider.gif b/data/enemies/spider.gif deleted file mode 100644 index ee536c81be135730a1cbd7b1e8382a0279de8c57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmZ?wbh9u|RAAs>XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBb_ zE&UQRPv^8lCum%7s{2zq? diff --git a/data/enemies/stopped_arounder.yaml b/data/enemies/stopped_arounder.yaml deleted file mode 100644 index eb74ee6..0000000 --- a/data/enemies/stopped_arounder.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# stopped_arounder animation -tileSetFile: stopped_arounder.gif -frameWidth: 7 -frameHeight: 8 - -animations: - - name: default - speed: 0.1667 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/tree_thing.gif b/data/enemies/tree_thing.gif deleted file mode 100644 index c29929cf793e3e5a811cd307e6c53996e0155e27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmV-W0k8f?Nk%v~VbA~&0Du4h00030|NkNX3r4^qJxKxK%g>Z+U$=`L_NGO$t0Ij}#m zKlx>Z4Wdo5BiT+j9j}>~)q1#DwFRYK5k{(!g^YH^&Z?69gdV2SmYF7G=Cty49LJUE z-QYYwx`)SuWhclb$3)ol1NW5ng$QZ(V%TRHHdr*Lxw*vV7-RJq=c48r@pY;C_o9WB zM0zIr7Rh+#sFMn~$}1A&iu))gt9J7lD%+X}l-cXNr<-{TJ>AIW1=o2v*<83q6k53! zXrd84&Waw+2g^QpCrp=Zira=ZN*=uH{oJ~LFOC*JJBwl&12?Zrq$LE41bGPNTtJ7X iw!Es7>k}u56y5rH{D=wFG>{}qnmmazrAh?_0028UMwq<- diff --git a/data/enemies/tree_thing.yaml b/data/enemies/tree_thing.yaml deleted file mode 100644 index 1827ba6..0000000 --- a/data/enemies/tree_thing.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# tree_thing animation -tileSetFile: tree_thing.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] diff --git a/data/enemies/tuno.gif b/data/enemies/tuno.gif deleted file mode 100644 index b40d53b69e4765779a0b442c6fc7a7a3f0148e1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183 zcmZ?wbh9u|bYKu*XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBc< zE%^&itho57d&{QG%UKuR-bszhNDN9ZV$hOP;ZWDrUN*J1cj@c8>E}Q1NwIyv*?M_p zi{R&3vFWPUUu@XTY}X<+^bEQgj{Os-l}b zz1#FMK%uXQ5G7?o9P+h@HKWsLD_O19q)Q{S$hmf{OR_Ay4NuV6^7XBTvcdBC_+DSb z-PXLjjMaz6rUz6fb~boO2=(`IlgQ_YC}?*UxQ7v^xcSrBsFSuw#`k5`XH+Wk2I!Q> oHFo-=2gu{omQ#phO9=tWlnWc7IP+&iT)caXo7~~6Mo|C&J1|UbBme*a diff --git a/data/enemies/tv.yaml b/data/enemies/tv.yaml deleted file mode 100644 index ecffe2f..0000000 --- a/data/enemies/tv.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# tv animation -tileSetFile: tv.gif -frameWidth: 16 -frameHeight: 18 - -animations: - - name: default - speed: 0.0833 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/tv_panel.gif b/data/enemies/tv_panel.gif deleted file mode 100644 index fa769c2855afa041bf2fbfac08c3c552f1b33fb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmZ?wbh9u|OkfaTXkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBdQ zSejPuPUBfU_ITJFui&&l5BuzRAp?8WicnJ%{Z!okH#r@xDCuPf&K7A7~pE74f1 zQ&q9p*hDSX>3ML-(nC>!>v9iA$8EfGA!K@}?a}K?zj*h}zJ7O>rOx}i7uB@)u2OD4 z{O$Qwv8&%jL((ENB+8Ee=wN$s{K+@r6&5CL6*s>wn~>qzQmNLs@@Vta>zx*=R=0k5 y?n<(nG1JUlo3lll{r4o{Ifi?hlgr;MDm&rx{10a=*D{;%yzUhj>PZatB>ijkGU8UVq05_XkY+=|Ns9h{^#~{4GDI33~)8lGhk)}iYoqO;p76+Iv^z=#SBbp vE&VH{?}*UY@+_qsQFT1xsm=4twAT+Ef#vWiIQ90}{F*eKmdol>0&N0MuZvTesL zj#3_G{*oC7#Etj$V^G Y{bQwh=k4@p?dKlV+;>g~FfdpH01(YutN;K2 diff --git a/data/player/player_game_over.yaml b/data/player/player_game_over.yaml deleted file mode 100644 index 2aa1b2d..0000000 --- a/data/player/player_game_over.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# player_game_over animation -tileSetFile: player_game_over.gif -frameWidth: 19 -frameHeight: 18 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/room/01.yaml b/data/room/01.yaml index 47fa4a7..80a16c4 100644 --- a/data/room/01.yaml +++ b/data/room/01.yaml @@ -64,68 +64,3 @@ tilemap: - [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 3, 0, 0, 0, 0, 0] - [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] -# Enemigos en esta habitación -enemies: - - animation: jailer1.yaml - position: {x: 1, y: 13} - velocity: {x: 0, y: 0} - boundaries: - position1: {x: 1, y: 13} - position2: {x: 1, y: 13} - - - animation: jailer3.yaml - position: {x: 4, y: 13} - velocity: {x: 0, y: 0} - boundaries: - position1: {x: 4, y: 13} - position2: {x: 4, y: 13} - - - animation: jailer1.yaml - position: {x: 7, y: 13} - velocity: {x: 0, y: 0} - boundaries: - position1: {x: 7, y: 13} - position2: {x: 7, y: 13} - - - animation: jailer2.yaml - position: {x: 10, y: 13} - velocity: {x: 0, y: 0} - boundaries: - position1: {x: 10, y: 13} - position2: {x: 10, y: 13} - - - animation: jailer1.yaml - position: {x: 13, y: 13} - velocity: {x: 0, y: 0} - boundaries: - position1: {x: 13, y: 13} - position2: {x: 13, y: 13} - - - animation: elsa.yaml - position: {x: 3, y: 9} - velocity: {x: 0, y: 0} - boundaries: - position1: {x: 3, y: 9} - position2: {x: 3, y: 9} - - - animation: elsa.yaml - position: {x: 6, y: 9} - velocity: {x: 0, y: 0} - boundaries: - position1: {x: 6, y: 9} - position2: {x: 6, y: 9} - - - animation: lamp.yaml - position: {x: 23, y: 6} - velocity: {x: 0, y: 0} - boundaries: - position1: {x: 23, y: 6} - position2: {x: 23, y: 6} - - - animation: bry.yaml - position: {x: 17, y: 13} - velocity: {x: 0, y: 0} - boundaries: - position1: {x: 17, y: 13} - position2: {x: 17, y: 13} - diff --git a/source/core/rendering/sprite/animated_sprite.cpp b/source/core/rendering/sprite/animated_sprite.cpp index baec551..e3e267b 100644 --- a/source/core/rendering/sprite/animated_sprite.cpp +++ b/source/core/rendering/sprite/animated_sprite.cpp @@ -1,5 +1,6 @@ #include "core/rendering/sprite/animated_sprite.hpp" +#include // Para std::fmod #include // Para size_t #include // Para basic_ostream, basic_istream, operator<<, basic... #include // Para cout, cerr @@ -88,17 +89,7 @@ auto AnimatedSprite::loadAnimationsFromYAML(const std::string& file_path, std::s animation.name = anim_node["name"].get_value(); } - // Parse speed (seconds per frame) - if (anim_node.contains("speed")) { - animation.speed = anim_node["speed"].get_value(); - } - - // Parse loop frame index - if (anim_node.contains("loop")) { - animation.loop = anim_node["loop"].get_value(); - } - - // Parse frames array + // Parse frames array (antes de speeds, para saber cuántos frames hay) if (anim_node.contains("frames") && anim_node["frames"].is_sequence()) { animation.frames = convertYAMLFramesToRects( anim_node["frames"], @@ -108,6 +99,26 @@ auto AnimatedSprite::loadAnimationsFromYAML(const std::string& file_path, std::s max_tiles); } + // Parse speed: escalar (uniforme) o array (por frame) + if (anim_node.contains("speed")) { + const auto& speed_node = anim_node["speed"]; + if (speed_node.is_sequence()) { + for (const auto& s : speed_node) { + animation.speeds.push_back(s.get_value()); + } + } else { + float spd = speed_node.get_value(); + if (spd > 0.0F) { + animation.speeds.assign(animation.frames.size(), spd); + } + } + } + + // Parse loopFrom + if (anim_node.contains("loopFrom")) { + animation.loop_from = anim_node["loopFrom"].get_value(); + } + animations.push_back(animation); } } @@ -172,17 +183,7 @@ AnimatedSprite::AnimatedSprite(const AnimationResource& cached_data) { animation.name = anim_node["name"].get_value(); } - // Parse speed (seconds per frame) - if (anim_node.contains("speed")) { - animation.speed = anim_node["speed"].get_value(); - } - - // Parse loop frame index - if (anim_node.contains("loop")) { - animation.loop = anim_node["loop"].get_value(); - } - - // Parse frames array + // Parse frames array (antes de speeds, para saber cuántos frames hay) if (anim_node.contains("frames") && anim_node["frames"].is_sequence()) { animation.frames = convertYAMLFramesToRects( anim_node["frames"], @@ -192,6 +193,26 @@ AnimatedSprite::AnimatedSprite(const AnimationResource& cached_data) { max_tiles); } + // Parse speed: escalar (uniforme) o array (por frame) + if (anim_node.contains("speed")) { + const auto& speed_node = anim_node["speed"]; + if (speed_node.is_sequence()) { + for (const auto& s : speed_node) { + animation.speeds.push_back(s.get_value()); + } + } else { + float spd = speed_node.get_value(); + if (spd > 0.0F) { + animation.speeds.assign(animation.frames.size(), spd); + } + } + } + + // Parse loopFrom + if (anim_node.contains("loopFrom")) { + animation.loop_from = anim_node["loopFrom"].get_value(); + } + animations_.push_back(animation); } } @@ -240,51 +261,45 @@ auto AnimatedSprite::getIndex(const std::string& name) -> int { // NOLINT(reada // Calcula el frame correspondiente a la animación (time-based) void AnimatedSprite::animate(float delta_time) { // NOLINT(readability-convert-member-functions-to-static) if (animations_.empty()) { return; } - if (animations_[current_animation_].speed <= 0.0F) { - return; + auto& anim = animations_[current_animation_]; + if (anim.speeds.empty()) { return; } // Animación estática + + anim.accumulated_time += delta_time; + + // Calcular duración total de la animación + float total = 0.0F; + for (auto s : anim.speeds) { total += s; } + + // Si hemos superado la duración total, manejar loop o congelar + if (anim.accumulated_time >= total) { + if (anim.loop_from < 0) { + // Sin loop: congelar en el último frame + anim.current_frame = static_cast(anim.frames.size()) - 1; + anim.completed = true; + setClip(anim.frames[anim.current_frame]); + return; + } + // Con loop: envolver el tiempo en el rango del loop + float loop_start = 0.0F; + for (int i = 0; i < anim.loop_from; ++i) { loop_start += anim.speeds[i]; } + float loop_len = total - loop_start; + anim.accumulated_time = loop_start + std::fmod(anim.accumulated_time - loop_start, loop_len); } - // Acumula el tiempo transcurrido - animations_[current_animation_].accumulated_time += delta_time; - - // Calcula el frame actual a partir del tiempo acumulado - const int TARGET_FRAME = static_cast( - animations_[current_animation_].accumulated_time / - animations_[current_animation_].speed); - - // Si alcanza el final de la animación, maneja el loop - if (TARGET_FRAME >= static_cast(animations_[current_animation_].frames.size())) { - if (animations_[current_animation_].loop == -1) { - // Si no hay loop, congela en el último frame - animations_[current_animation_].current_frame = - static_cast(animations_[current_animation_].frames.size()) - 1; - animations_[current_animation_].completed = true; - - // Establece el clip del último frame - if (animations_[current_animation_].current_frame >= 0) { - setClip(animations_[current_animation_].frames[animations_[current_animation_].current_frame]); - } - } else { - // Si hay loop, vuelve al frame indicado - animations_[current_animation_].accumulated_time = - static_cast(animations_[current_animation_].loop) * - animations_[current_animation_].speed; - animations_[current_animation_].current_frame = animations_[current_animation_].loop; - - // Establece el clip del frame de loop - setClip(animations_[current_animation_].frames[animations_[current_animation_].current_frame]); - } - } else { - // Actualiza el frame actual - animations_[current_animation_].current_frame = TARGET_FRAME; - - // Establece el clip del frame actual - if (animations_[current_animation_].current_frame >= 0 && - animations_[current_animation_].current_frame < - static_cast(animations_[current_animation_].frames.size())) { - setClip(animations_[current_animation_].frames[animations_[current_animation_].current_frame]); + // Buscar el frame correspondiente al tiempo acumulado + float cursor = 0.0F; + for (int i = 0; i < static_cast(anim.frames.size()); ++i) { + cursor += anim.speeds[i]; + if (anim.accumulated_time < cursor) { + anim.current_frame = i; + setClip(anim.frames[i]); + return; } } + + // Seguridad: último frame + anim.current_frame = static_cast(anim.frames.size()) - 1; + setClip(anim.frames[anim.current_frame]); } // Comprueba si ha terminado la animación diff --git a/source/core/rendering/sprite/animated_sprite.hpp b/source/core/rendering/sprite/animated_sprite.hpp index 1877261..665c403 100644 --- a/source/core/rendering/sprite/animated_sprite.hpp +++ b/source/core/rendering/sprite/animated_sprite.hpp @@ -20,8 +20,8 @@ class AnimatedSprite : public MovingSprite { struct AnimationData { std::string name; // Nombre de la animacion std::vector frames; // Cada uno de los frames que componen la animación - float speed{0.083F}; // Velocidad de la animación (segundos por frame) - int loop{0}; // Indica a que frame vuelve la animación al terminar. -1 para que no vuelva + std::vector speeds; // Duración de cada frame en segundos (vacío = animación estática) + int loop_from{-1}; // Frame al que volver al acabar (-1 = sin loop, congela en el último) bool completed{false}; // Indica si ha finalizado la animación int current_frame{0}; // Frame actual float accumulated_time{0.0F}; // Tiempo acumulado para las animaciones (time-based)