room: 1 # Il·luminació de la sala. Bloc opcional; si manca, la sala queda # totalment il·luminada (1.0) i tots els tipus d'entitat emeten amb els # valors declarats al seu YAML de tipus (comportament històric). # # level → atenuació base de la sala (0..1). 1.0 = res # d'efecte, 0.0 = negre fora del radi dels emissors. # El gradient dels emissors viu a # data/config/lighting.yaml. # emitters. → override per tipus d'entitat. Tres formes: # false → apaga el tipus # true → defaults del tipus # { radius: N, flicker: B } → camps presents # sobreescriuen el # default; els # absents cauen al # default del tipus. # Plural per llegir-se natural ("totes les momies de la sala"). Per a # casos particulars, un spawn pot dur el seu propi `light:` (mateixes # formes) que té prioritat sobre l'override de sala. La forma antiga # (`light_level:` plà a l'arrel) també segueix sent vàlida per # retrocompatibilitat. lighting: # Sala fosca de proves. La piràmide declara additive per defecte; aquí # tornem a subtractive perquè volem la dinàmica "negre amb forats de # llum". `level: 0.15` és l'atenuació base de la sala fora dels emissors. mode: subtractive level: 0.15 emitters: players: true torches: radius: 40 color: [255, 170, 60] flicker_params: wave_amplitude_ratio: 0.05 wave_frequency_hz: 3.0 noise_amplitude_ratio: 0.025 noise_frequency_hz: 7.0 # Geometria lògica de la piràmide (separada del render visual del tileset). # La graella de sarcòfags, el pitch entre ells i les amplades dels murs # decideixen els límits del jugador i les seues caixes de col·lisió. Abans # vivien com a `static constexpr` a map.hpp; ara cada piràmide pot definir # la seua pròpia forma sense recompilar. geometry: grid_cols: 4 grid_rows: 5 sarc_w: 48 sarc_h: 16 pitch_x: 64 pitch_y: 32 hud_h: 24 back_wall_h: 24 side_wall_w: 24 # Columna central del tile transitable de la porta. La porta es renderitza # com a sprite 48×32 (3 tiles d'amplada) centrat sobre aquesta columna; els # 16 px centrals (just aquesta columna) són el "forat" del mur trasser per # on el jugador surt de la sala. Les 2 columnes flanquejants segueixen sent # mur visible. El spawn dels jugadors també s'alinea amb aquesta columna. door_col: 10 data: - [11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13] - [11,30,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,31,13] - [11,13,27,28,15,22,28,28,28,28,28,28,28,28,28,28,15,28, 6,11,13] - [11,13, 8, 8,16, 8,17, 8,10, 8,17, 8, 8, 8,17, 8, 8, 8, 8,11,13] - [11,13, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8,11,13] - [11,13,17, 8, 9, 2, 8,10, 8, 8, 8, 8,10, 8, 8,26, 8, 8,17,11,13] - [11,13, 8, 2, 2, 2, 2, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8,11,13] - [11,13,17, 8, 8,26, 8, 8, 9, 8, 8, 8, 8, 8,10, 8,16, 8,17,11,13] - [11,13, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8,11,13] - [11,13,17, 8,10, 8, 8, 8, 2, 8, 8, 8, 9, 8, 8, 8,10, 8,17,11,13] - [11,13, 8, 2, 2, 2, 8, 2, 2, 2,16, 2, 2, 2, 8, 2, 2, 2, 8,11,13] - [11,13,17, 8,10, 8, 8,10, 2, 8, 8,26, 8, 8, 8, 8,10, 8,17,11,13] - [11,13, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8, 2, 2, 2, 8,11,13] - [11,13, 8,10,16,16,17, 8, 8, 8,17, 8, 9, 8,17, 8, 2, 8, 8,11,13] - [11,38, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,39,13] # Spawns d'entitats per a aquest nivell. Es llegeixen des de # EntityManager::loadFromLevel al GameScene. Convencions: # - sarcophagus → `sarc_position: [sarc_col, sarc_row]` en la graella de # sarcòfags (4×5). EntityManager calcula el rect píxel via # Map::getSarcRect i l'ancoratge de tile per al perímetre. # - la resta (torch, door, mummy, rolling_rock, wall_trap, floor_trap) # → `position: [tile_col, tile_row]` en coordenades del tilemap # (origen `[-8, 0]` per defecte). Pixel = tile*16 + tilemap_origin. # # Dos sarcòfags en cantonades oposades → perímetres aïllats (cap tile en # comú). La porta va al centre inferior, on el tilemap té els tiles # d'obertura (262/263). La momia al corredor central. L'antorxa al costat # superior esquerre per verificar render d'una entitat decorativa. entities: - type: torch position: [8, 2] - type: torch position: [12, 2] - type: torch position: [16, 2] - type: sarcophagus sarc_position: [1, 0] - type: sarcophagus sarc_position: [2, 0] - type: sarcophagus sarc_position: [3, 0] - type: sarcophagus sarc_position: [0, 1] - type: sarcophagus sarc_position: [1, 1] - type: sarcophagus sarc_position: [2, 1] - type: sarcophagus sarc_position: [3, 1] - type: sarcophagus sarc_position: [0, 2] - type: sarcophagus sarc_position: [1, 2] - type: sarcophagus sarc_position: [2, 2] - type: sarcophagus sarc_position: [3, 2] - type: sarcophagus sarc_position: [0, 3] - type: sarcophagus sarc_position: [1, 3] - type: sarcophagus sarc_position: [3, 3] - type: sarcophagus sarc_position: [0, 4] - type: sarcophagus sarc_position: [1, 4] - type: sarcophagus sarc_position: [2, 4] - type: sarcophagus sarc_position: [3, 4] - type: torch position: [4, 2] - type: door - type: column position: [3, 4] frame: 2 - type: stone position: [5, 4] frame: 16 - type: stone position: [4, 4] frame: 19 - type: column position: [13, 10] frame: 4 - type: stone position: [12, 10] frame: 13 - type: stone position: [11, 10] frame: 23 - type: hole position: [5, 9] - type: hole position: [9, 11] - type: stone position: [10, 10] frame: 18 - type: mummy position: [10, 13]