diff --git a/data/enemies/abad.gif b/data/enemies/abad.gif deleted file mode 100644 index 9316e7e..0000000 Binary files a/data/enemies/abad.gif and /dev/null differ 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 0da0457..0000000 Binary files a/data/enemies/abad_bell.gif and /dev/null differ 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 185f699..0000000 Binary files a/data/enemies/amstrad_cs.gif and /dev/null differ diff --git a/data/enemies/amstrad_cs.yaml b/data/enemies/amstrad_cs.yaml deleted file mode 100644 index 5d1169d..0000000 --- a/data/enemies/amstrad_cs.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# amstrad_cs animation -tileSetFile: amstrad_cs.gif -frameWidth: 8 -frameHeight: 8 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255] diff --git a/data/enemies/arounders_door.gif b/data/enemies/arounders_door.gif deleted file mode 100644 index f4f08e3..0000000 Binary files a/data/enemies/arounders_door.gif and /dev/null differ 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 e6c5e7d..0000000 Binary files a/data/enemies/arounders_machine.gif and /dev/null differ 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 2119e7c..0000000 Binary files a/data/enemies/bat.gif and /dev/null differ 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 26d21ca..0000000 Binary files a/data/enemies/batman.gif and /dev/null differ 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 afcf801..0000000 Binary files a/data/enemies/batman_bell.gif and /dev/null differ diff --git a/data/enemies/batman_bell.yaml b/data/enemies/batman_bell.yaml deleted file mode 100644 index 69c0ee5..0000000 --- a/data/enemies/batman_bell.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# batman_bell animation -tileSetFile: batman_bell.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/batman_fire.gif b/data/enemies/batman_fire.gif deleted file mode 100644 index 9af403b..0000000 Binary files a/data/enemies/batman_fire.gif and /dev/null differ diff --git a/data/enemies/batman_fire.yaml b/data/enemies/batman_fire.yaml deleted file mode 100644 index 743a15b..0000000 --- a/data/enemies/batman_fire.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# batman_fire animation -tileSetFile: batman_fire.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/bell.gif b/data/enemies/bell.gif deleted file mode 100644 index a3c1693..0000000 Binary files a/data/enemies/bell.gif and /dev/null differ 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 1bce2e4..0000000 Binary files a/data/enemies/bird.gif and /dev/null differ diff --git a/data/enemies/bird.yaml b/data/enemies/bird.yaml deleted file mode 100644 index 3866a72..0000000 --- a/data/enemies/bird.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# bird animation -tileSetFile: bird.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/breakout.gif b/data/enemies/breakout.gif deleted file mode 100644 index a9066b1..0000000 Binary files a/data/enemies/breakout.gif and /dev/null differ 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 aaaacdd..0000000 Binary files a/data/enemies/bry.gif and /dev/null differ diff --git a/data/enemies/bry.yaml b/data/enemies/bry.yaml deleted file mode 100644 index 7f9ca59..0000000 --- a/data/enemies/bry.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# bry animation -tileSetFile: bry.gif -frameWidth: 10 -frameHeight: 16 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5, 4, 5] diff --git a/data/enemies/chip.gif b/data/enemies/chip.gif deleted file mode 100644 index b0a5ac1..0000000 Binary files a/data/enemies/chip.gif and /dev/null differ 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 c4e893b..0000000 Binary files a/data/enemies/congo.gif and /dev/null differ 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 a1bf75c..0000000 Binary files a/data/enemies/crosshair.gif and /dev/null differ 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 be1b0c1..0000000 Binary files a/data/enemies/demon.gif and /dev/null differ 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 fa9ef4b..0000000 Binary files a/data/enemies/dimallas.gif and /dev/null differ 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 c08a2e6..0000000 Binary files a/data/enemies/dong.gif and /dev/null differ 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 6f10d05..0000000 Binary files a/data/enemies/elsa.gif and /dev/null differ 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 86e0aa1..0000000 Binary files a/data/enemies/floppy.gif and /dev/null differ 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 31418a4..0000000 Binary files a/data/enemies/flying_arounder.gif and /dev/null differ diff --git a/data/enemies/flying_arounder.yaml b/data/enemies/flying_arounder.yaml deleted file mode 100644 index 0b3f2fe..0000000 --- a/data/enemies/flying_arounder.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# flying_arounder animation -tileSetFile: flying_arounder.gif -frameWidth: 7 -frameHeight: 7 - -animations: - - name: default - speed: 0.1667 - loop: 0 - frames: [0] diff --git a/data/enemies/guitar.gif b/data/enemies/guitar.gif deleted file mode 100644 index 49a5db4..0000000 Binary files a/data/enemies/guitar.gif and /dev/null differ 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 05b1f7e..0000000 Binary files a/data/enemies/heavy.gif and /dev/null differ 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 306f1b7..0000000 Binary files a/data/enemies/jailbattle_alien.gif and /dev/null differ 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 9e341b7..0000000 Binary files a/data/enemies/jailbattle_human.gif and /dev/null differ 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 67b9025..0000000 Binary files a/data/enemies/jailer1.gif and /dev/null differ diff --git a/data/enemies/jailer1.yaml b/data/enemies/jailer1.yaml deleted file mode 100644 index b2f02f7..0000000 --- a/data/enemies/jailer1.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# jailer1 animation -tileSetFile: jailer1.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/jailer2.gif b/data/enemies/jailer2.gif deleted file mode 100644 index 7eec245..0000000 Binary files a/data/enemies/jailer2.gif and /dev/null differ 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 89eaaaa..0000000 Binary files a/data/enemies/jailer3.gif and /dev/null differ 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 68293d5..0000000 Binary files a/data/enemies/jeannine.gif and /dev/null differ 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 5dc1ef7..0000000 Binary files a/data/enemies/lamp.gif and /dev/null differ 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 e246565..0000000 Binary files a/data/enemies/lord_abad.gif and /dev/null differ 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 6b41861..0000000 Binary files a/data/enemies/matatunos.gif and /dev/null differ diff --git a/data/enemies/matatunos.yaml b/data/enemies/matatunos.yaml deleted file mode 100644 index af60d8b..0000000 --- a/data/enemies/matatunos.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# matatunos animation -tileSetFile: matatunos.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3, 4, 5] diff --git a/data/enemies/mummy.gif b/data/enemies/mummy.gif deleted file mode 100644 index dcda7fc..0000000 Binary files a/data/enemies/mummy.gif and /dev/null differ 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 8c07179..0000000 Binary files a/data/enemies/paco.gif and /dev/null differ 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 4ae89a6..0000000 Binary files a/data/enemies/qvoid.gif and /dev/null differ diff --git a/data/enemies/qvoid.yaml b/data/enemies/qvoid.yaml deleted file mode 100644 index d7fa548..0000000 --- a/data/enemies/qvoid.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# qvoid animation -tileSetFile: qvoid.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3, 4, 5, 6, 7] diff --git a/data/enemies/robot.gif b/data/enemies/robot.gif deleted file mode 100644 index 1047826..0000000 Binary files a/data/enemies/robot.gif and /dev/null differ 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 3fb8edb..0000000 Binary files a/data/enemies/sam.gif and /dev/null differ 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 3ad9cb1..0000000 Binary files a/data/enemies/shock.gif and /dev/null differ 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 ecfe5bb..0000000 Binary files a/data/enemies/sigmasua.gif and /dev/null differ 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 8126019..0000000 Binary files a/data/enemies/spark.gif and /dev/null differ diff --git a/data/enemies/spark.yaml b/data/enemies/spark.yaml deleted file mode 100644 index 98836d1..0000000 --- a/data/enemies/spark.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# spark animation -tileSetFile: spark.gif -frameWidth: 8 -frameHeight: 16 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/special/aerojailer.gif b/data/enemies/special/aerojailer.gif deleted file mode 100644 index 3835196..0000000 Binary files a/data/enemies/special/aerojailer.gif and /dev/null differ 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 aa75f4d..0000000 Binary files a/data/enemies/special/arounder.gif and /dev/null differ 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 6ced01f..0000000 Binary files a/data/enemies/special/pepe_rosita_job.gif and /dev/null differ diff --git a/data/enemies/special/pepe_rosita_job.yaml b/data/enemies/special/pepe_rosita_job.yaml deleted file mode 100644 index 2199964..0000000 --- a/data/enemies/special/pepe_rosita_job.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# pepe_rosita_job animation -tileSetFile: pepe_rosita_job.gif -frameWidth: 62 -frameHeight: 47 - -animations: - - name: default - speed: 1.6667 - loop: 0 - frames: [0] diff --git a/data/enemies/special/shooting_star.gif b/data/enemies/special/shooting_star.gif deleted file mode 100644 index a8dd06a..0000000 Binary files a/data/enemies/special/shooting_star.gif and /dev/null differ 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 ee536c8..0000000 Binary files a/data/enemies/spider.gif and /dev/null differ diff --git a/data/enemies/spider.yaml b/data/enemies/spider.yaml deleted file mode 100644 index c65b8c1..0000000 --- a/data/enemies/spider.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# spider animation -tileSetFile: spider.gif -frameWidth: 8 -frameHeight: 8 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/stopped_arounder.gif b/data/enemies/stopped_arounder.gif deleted file mode 100644 index 3fe9d92..0000000 Binary files a/data/enemies/stopped_arounder.gif and /dev/null differ 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 c29929c..0000000 Binary files a/data/enemies/tree_thing.gif and /dev/null differ 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 b40d53b..0000000 Binary files a/data/enemies/tuno.gif and /dev/null differ diff --git a/data/enemies/tuno.yaml b/data/enemies/tuno.yaml deleted file mode 100644 index 3be50fe..0000000 --- a/data/enemies/tuno.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# tuno animation -tileSetFile: tuno.gif -frameWidth: 16 -frameHeight: 16 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3, 3, 2, 1, 0] diff --git a/data/enemies/tv.gif b/data/enemies/tv.gif deleted file mode 100644 index ac63335..0000000 Binary files a/data/enemies/tv.gif and /dev/null differ 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 fa769c2..0000000 Binary files a/data/enemies/tv_panel.gif and /dev/null differ diff --git a/data/enemies/tv_panel.yaml b/data/enemies/tv_panel.yaml deleted file mode 100644 index ee781f8..0000000 --- a/data/enemies/tv_panel.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# tv_panel animation -tileSetFile: tv_panel.gif -frameWidth: 24 -frameHeight: 16 - -animations: - - name: default - speed: 0.0667 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/upv_student.yaml b/data/enemies/upv_student.yaml index a59b04f..257bcac 100644 --- a/data/enemies/upv_student.yaml +++ b/data/enemies/upv_student.yaml @@ -6,5 +6,5 @@ frameHeight: 16 animations: - name: default speed: 0.1333 - loop: 0 + loopFrom: 0 frames: [0, 1, 2, 3] diff --git a/data/enemies/walking_arounder.gif b/data/enemies/walking_arounder.gif deleted file mode 100644 index 3c443d3..0000000 Binary files a/data/enemies/walking_arounder.gif and /dev/null differ diff --git a/data/enemies/walking_arounder.yaml b/data/enemies/walking_arounder.yaml deleted file mode 100644 index 1e91460..0000000 --- a/data/enemies/walking_arounder.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# walking_arounder animation -tileSetFile: walking_arounder.gif -frameWidth: 5 -frameHeight: 8 - -animations: - - name: default - speed: 0.1 - loop: 0 - frames: [0, 1] diff --git a/data/enemies/wave.gif b/data/enemies/wave.gif deleted file mode 100644 index 95b7004..0000000 Binary files a/data/enemies/wave.gif and /dev/null differ diff --git a/data/enemies/wave.yaml b/data/enemies/wave.yaml deleted file mode 100644 index 28f5cea..0000000 --- a/data/enemies/wave.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# wave animation -tileSetFile: wave.gif -frameWidth: 8 -frameHeight: 8 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/enemies/z80.gif b/data/enemies/z80.gif deleted file mode 100644 index 5cf0bd1..0000000 Binary files a/data/enemies/z80.gif and /dev/null differ diff --git a/data/enemies/z80.yaml b/data/enemies/z80.yaml deleted file mode 100644 index 3d98a4e..0000000 --- a/data/enemies/z80.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# z80 animation -tileSetFile: z80.gif -frameWidth: 16 -frameHeight: 32 - -animations: - - name: default - speed: 0.1333 - loop: 0 - frames: [0, 1, 2, 3] diff --git a/data/player/player.yaml b/data/player/player.yaml index dd72e68..65ef1aa 100644 --- a/data/player/player.yaml +++ b/data/player/player.yaml @@ -5,31 +5,23 @@ frameHeight: 24 animations: - name: stand - speed: 0 - loop: -1 frames: [1] - name: walk speed: 0.07 - loop: 0 + loopFrom: 0 frames: [2, 3, 4, 1] - name: turn_walk - speed: 0.07 - loop: 1 + speed: [0.15, 0.07, 0.07, 0.07, 0.07] + loopFrom: 1 frames: [0, 2, 3, 4, 1] - name: jump - speed: 0 - loop: -1 frames: [6] - name: jump_peak - speed: 0 - loop: -1 frames: [5] - name: turn - speed: 0 - loop: -1 frames: [0] diff --git a/data/player/player_game_over.gif b/data/player/player_game_over.gif deleted file mode 100644 index b48c4f8..0000000 Binary files a/data/player/player_game_over.gif and /dev/null differ 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)