refactor(tilemap): índexs directes al YAML en lloc de llegenda ASCII

`data` passa a ser una llista de files d'enters (tile index lineal),
sense la indirecció `legend:` + símbols. Desapareix el límit implícit
de ~60 tiles distints i el grid segueix llegint-se com a matriu visual
gràcies al padding de 3 dígits. `-1` marca cel·la buida.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
JailDesignerandClaude Opus 4.7 committed 2026-04-23 09:11:21 +02:00
1 parent 4da05b3d76
commit 243ba06351
3 files changed
+52 -96

No files matched your search

+22 -40
View File
@@ -3,13 +3,11 @@
# en el tilemap però només 1.5 visibles al canvas, així que la textura es
# dibuixa amb un origen de x=-8). Vertical no cal overscan: 15·16 = 240.
#
# Símbols del grid:
# W = paret (tile 99 del tileset, o (3,3) en 0-indexed)
# F = sòl (llista = un tile aleatori entre aquests per cada casella)
# . = cap tile (els sarcòfags seran actors, ací deixem transparent)
#
# Índexs lineals: els tiles van d'esquerra a dreta, de dalt a baix. Amb un
# tileset de 512×256 i tiles de 16×16 hi ha 32 tiles per fila.
# Format del tilemap:
# `data` és una llista de files; cada fila és una llista d'índexs del
# tileset (lineal esq→dre, dalt→baix). Amb un tileset de 512×256 i tiles
# de 16×16 hi ha 32 tiles per fila. Un valor negatiu (p.ex. -1) deixa
# la cel·la buida (transparent), útil per caselles que ocuparà un actor.
tileset: data/tilesets/tomb.gif
tile_size: 16
@@ -31,38 +29,22 @@ geometry:
back_wall_h: 24
side_wall_w: 24
legend:
W: 292
X: 169
Y: 1
Z: 202
T: 200
R: 262
G: 263
H: 230
I: 231
J: 233
A: 2
B: 34
C: 33
D: 32
data: |
YYYYYYYYYYYYYYYYYYYYY
YHJJJJJJJJJJJJJJJJJIY
YZWWWWWWWWWWWWWWWWWTY
YZDDADDBBDDADDDDBDDTY
YZDAAADAAADAAABAAADTY
YZDDDCCDDDDDADDDBDDTY
YZDAAADAAAAAAADAAADTY
YZDDCCDDDDDADDBDDDDTY
YZDAAADAAADAAADAAADTY
YZDDDDCCDDDDADDDDDDTY
YZDAAADAAADAAADAAADTY
YZDDDABDDDDADCDDBDDTY
YZDAAADAAADAAADAAADTY
YZDDBBDDADDDBCDDDDDTY
YRXXXXXXXXXXXXXXXXXGY
data:
- [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
- [ 1,230,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,231, 1]
- [ 1,202,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,200, 1]
- [ 1,202, 32, 32, 2, 32, 32, 34, 34, 32, 32, 2, 32, 32, 32, 32, 34, 32, 32,200, 1]
- [ 1,202, 32, 2, 2, 2, 32, 2, 2, 2, 32, 2, 2, 2, 34, 2, 2, 2, 32,200, 1]
- [ 1,202, 32, 32, 32, 33, 33, 32, 32, 32, 32, 32, 2, 32, 32, 32, 34, 32, 32,200, 1]
- [ 1,202, 32, 2, 2, 2, 32, 2, 2, 2, 2, 2, 2, 2, 32, 2, 2, 2, 32,200, 1]
- [ 1,202, 32, 32, 33, 33, 32, 32, 32, 32, 32, 2, 32, 32, 34, 32, 32, 32, 32,200, 1]
- [ 1,202, 32, 2, 2, 2, 32, 2, 2, 2, 32, 2, 2, 2, 32, 2, 2, 2, 32,200, 1]
- [ 1,202, 32, 32, 32, 32, 33, 33, 32, 32, 32, 32, 2, 32, 32, 32, 32, 32, 32,200, 1]
- [ 1,202, 32, 2, 2, 2, 32, 2, 2, 2, 32, 2, 2, 2, 32, 2, 2, 2, 32,200, 1]
- [ 1,202, 32, 32, 32, 2, 34, 32, 32, 32, 32, 2, 32, 33, 32, 32, 34, 32, 32,200, 1]
- [ 1,202, 32, 2, 2, 2, 32, 2, 2, 2, 32, 2, 2, 2, 32, 2, 2, 2, 32,200, 1]
- [ 1,202, 32, 32, 34, 34, 32, 32, 2, 32, 32, 32, 34, 33, 32, 32, 32, 32, 32,200, 1]
- [ 1,262,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,263, 1]
# Spawns d'entitats per a aquest nivell. Es llegeixen des de
# EntityManager::loadFromLevel al GameScene. Convencions:
@@ -75,7 +57,7 @@ data: |
#
# 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 (R/G). La momia al corredor central. L'antorxa al costat
# 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
+10 -12
View File
@@ -2,6 +2,8 @@
# per a poder carregar Map sense errors, però el seu propòsit real són
# els spawns de sota: l'smoke verifica que EntityLoader::readSpawns els
# retorna correctament i que EntityManager pot instanciar-los i wire-ar-los.
#
# Format del tilemap: vegeu pyramid.yaml.
tileset: data/tilesets/tomb.gif
tile_size: 16
@@ -18,18 +20,14 @@ geometry:
back_wall_h: 24
side_wall_w: 24
legend:
Y: 1
X: 169
data: |
YYYYYYYYYYYYYY
YXXXXXXXXXXXXY
YXXXXXXXXXXXXY
YXXXXXXXXXXXXY
YXXXXXXXXXXXXY
YXXXXXXXXXXXXY
YYYYYYYYYYYYYY
data:
- [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
- [ 1,169,169,169,169,169,169,169,169,169,169,169,169, 1]
- [ 1,169,169,169,169,169,169,169,169,169,169,169,169, 1]
- [ 1,169,169,169,169,169,169,169,169,169,169,169,169, 1]
- [ 1,169,169,169,169,169,169,169,169,169,169,169,169, 1]
- [ 1,169,169,169,169,169,169,169,169,169,169,169,169, 1]
- [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
entities:
- type: torch