refactor(entities): fusiona momia i mummy en un sol tipus canònic 16×32

This commit is contained in:
JailDesigner committed 2026-04-24 21:02:02 +02:00
1 parent 50aae790b1
commit ae8b9d8fe6
7 files changed
+15 -51

No files matched your search

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

-35
View File
@@ -1,35 +0,0 @@
name: momia
type: dynamic_hazard
sprite:
path: momia.gif
size: [16, 32]
tile_size: [1, 1]
# Variant 16×32 de la momia: el sprite fa 16×32 (dos 16×16: cap i peus)
# i la caja de col·lisió amb el mapa és 16×16, coincident amb el
# rectangle-base 16×16 dels peus. Com que `size` i `base_size` són
# iguals, el padding és zero i la caja s'alinea exactament amb la
# silueta inferior del sprite; amb `anchor: feet` ocupa la cel·la
# 16×16 del corredor on naix.
anchor: feet
collision:
size: [16, 16]
base_size: [16, 16]
flags:
collides: true
interactable: false
# Strip de 12 frames en graella 4×3 (mateix esquema que el jugador):
# 0..3 → walk_down (cara avall)
# 4..7 → walk_up (cara amunt)
# 8..11 → walk (lateral; flip horitzontal segons el sentit)
# La momia no té variants `stand_*` perquè mai no para.
animations:
walk_down: { frames: [0, 1, 2, 3], fps: 8, loop: true }
walk_up: { frames: [4, 5, 6, 7], fps: 8, loop: true }
walk: { frames: [8, 9, 10, 11], fps: 8, loop: true }
ai:
type: corridor_wanderer
direction_choice: random
initial_direction: right
stats:
speed: 30
damage: 1
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

+9 -9
View File
@@ -2,22 +2,22 @@ name: mummy
type: dynamic_hazard type: dynamic_hazard
sprite: sprite:
path: mummy.gif path: mummy.gif
size: [12, 24] size: [16, 32]
tile_size: [1, 1] tile_size: [1, 1]
# La momia usa falsa perspectiva: el sprite fa 12×24 (dos 12×12: cap i # Variant 16×32 de la momia: el sprite fa 16×32 (dos 16×16: cap i peus)
# peus) però la caja de col·lisió amb el mapa és 16×16, concèntrica amb # i la caja de col·lisió amb el mapa és 16×16, coincident amb el
# el rectangle-base 12×12 dels peus (igual que fa el jugador). Així la # rectangle-base 16×16 dels peus. Com que `size` i `base_size` són
# caixa s'estén 2 px a cada costat i 2 px per sota dels peus visuals, # iguals, el padding és zero i la caja s'alinea exactament amb la
# i amb `anchor: feet` s'alinea exactament amb el tile 16×16 on naix — # silueta inferior del sprite; amb `anchor: feet` ocupa la cel·la
# la momia va pel centre del corredor i la caja ocupa la cel·la completa. # 16×16 del corredor on naix.
anchor: feet anchor: feet
collision: collision:
size: [16, 16] size: [16, 16]
base_size: [12, 12] base_size: [16, 16]
flags: flags:
collides: true collides: true
interactable: false interactable: false
# Strip de 12 frames en graella 12×1 (mateix esquema que el jugador): # Strip de 12 frames en graella 4×3 (mateix esquema que el jugador):
# 0..3 → walk_down (cara avall) # 0..3 → walk_down (cara avall)
# 4..7 → walk_up (cara amunt) # 4..7 → walk_up (cara amunt)
# 8..11 → walk (lateral; flip horitzontal segons el sentit) # 8..11 → walk (lateral; flip horitzontal segons el sentit)
+2 -2
View File
@@ -124,7 +124,7 @@ entities:
sarc_position: [3, 4] sarc_position: [3, 4]
- type: door - type: door
position: [9, 1] position: [9, 1]
- type: momia - type: mummy
position: [10, 7] position: [10, 7]
- type: momia - type: mummy
position: [7, 9] position: [7, 9]
-1
View File
@@ -306,4 +306,3 @@ void Mummy::onPlayerContact(Player* player) {
} }
REGISTER_ENTITY("mummy", Mummy) REGISTER_ENTITY("mummy", Mummy)
REGISTER_ENTITY_AS("momia", Mummy, Momia)
+4 -4
View File
@@ -45,10 +45,10 @@ class EntityFactory {
// La macro genera un objecte anònim dins un namespace anònim: el seu // La macro genera un objecte anònim dins un namespace anònim: el seu
// constructor s'executa abans de `main` i registra la factory. El nom // constructor s'executa abans de `main` i registra la factory. El nom
// del símbol es compon amb `TAG`, perquè així es poden registrar àlies // del símbol es compon amb `TAG`, perquè així es poden registrar àlies
// per una mateixa classe (p.ex. "mummy" i "momia" → Mummy) sense que // per una mateixa classe (p.ex. dues claus diferents al YAML lligades a
// els símbols xoquen. La forma curta `REGISTER_ENTITY(NAME, CLASS)` // la mateixa classe C++) sense que els símbols xoquen. La forma curta
// reusa `CLASS` com a tag; per àlies cal usar `REGISTER_ENTITY_AS` i // `REGISTER_ENTITY(NAME, CLASS)` reusa `CLASS` com a tag; per àlies cal
// passar un identificador únic. // usar `REGISTER_ENTITY_AS` i passar un identificador únic.
// //
// IMPORTANT: perquè el registrador es cridi, el `.cpp` que el conté ha // IMPORTANT: perquè el registrador es cridi, el `.cpp` que el conté ha
// d'estar enllaçat directament a l'executable (no dins una STATIC lib // d'estar enllaçat directament a l'executable (no dins una STATIC lib