JailDesigner
580c13e854
feat: estat DISABLED i spawn aeri al començar la sala — v0.25.0
2026-04-26 14:17:17 +02:00
JailDesigner
645db217fa
Merge branch 'feat/game-states' — FSM de sala, EXITED, bucle complet
2026-04-26 10:51:45 +02:00
JailDesigner
cd961cf718
chore: bump v0.24.0 — FSM de sala, EXITED i bucle complet
2026-04-26 10:51:40 +02:00
JailDesigner
c0214b233b
fix(game-scene): text d'INTRO/OUTRO surt cap a la dreta després del hold
2026-04-26 10:47:41 +02:00
JailDesigner
d054d1b246
fix(player): respawn reseteja facing a DOWN i input/cardinal pendents
2026-04-26 10:47:13 +02:00
JailDesigner
cd5bb94223
fix(player): EXITED no participa al resolver ni a checkPlayerCollisions
2026-04-26 10:41:05 +02:00
JailDesigner
178ce486c2
test(entity-manager): smoke del comptador player_exited i level_complete agregat
2026-04-26 10:32:20 +02:00
JailDesigner
811c6c482d
feat(game-scene): spawn lligat a door_col i respawn a OUTRO->INTRO
2026-04-26 10:30:31 +02:00
JailDesigner
59cd9b524c
feat(entity-manager): reload del nivell + PaintLayer::clear
2026-04-26 10:26:07 +02:00
JailDesigner
28e55a0615
feat(entity-manager): comptador player_exited agrega a level_complete
2026-04-26 10:22:42 +02:00
JailDesigner
5c5cd1d5da
feat(player): estat EXITED i porta oberta despawna jugadors via player_exited
2026-04-26 10:20:13 +02:00
JailDesigner
377e5d0b97
feat(player): clamp permet pujar al passadís + porta tancada bloqueja via Map::collides
2026-04-26 10:09:04 +02:00
JailDesigner
648a5932f8
feat(door): col·locació derivada de Map::door_col i caixa de col·lisió neta
2026-04-26 10:07:37 +02:00
JailDesigner
b54f3fc622
feat(map): door_col a la geometria + passadís de sortida a Map
2026-04-26 10:05:32 +02:00
JailDesigner
63bb41425a
test(game-scene): extracció RoomFsm i smoke test de la FSM de sala
2026-04-26 09:10:54 +02:00
JailDesigner
9a2c677153
feat(locale): claus game.room_intro / game.room_complete (ca + en)
2026-04-26 09:03:37 +02:00
JailDesigner
4a9a037cd8
feat(game-scene): ROOM_OUTRO — text de sortida i fade out del món
2026-04-26 09:02:30 +02:00
JailDesigner
67b06c0a10
feat(game-scene): ROOM_INTRO — fade in del món i text d'entrada de sala
2026-04-26 09:00:15 +02:00
JailDesigner
368f9d2d6a
feat(scenes): data/scenes/game.yaml amb timings i corbes de transició
2026-04-26 08:54:45 +02:00
JailDesigner
651db50a93
feat(game-scene): FSM mínima ROOM_INTRO/PLAYING/ROOM_OUTRO sense efectes
2026-04-26 08:51:56 +02:00
JailDesigner
decf9f5d90
Merge branch 'feat/player-jump' — sistema complet de salt, HURT i polvet
2026-04-25 18:06:24 +02:00
JailDesigner
f921f6bf2b
chore: bump v0.23.0 — sistema de salt, HURT i polvet
2026-04-25 18:06:18 +02:00
JailDesigner
abf52be7e0
tune(player+dust): ajustos finals de timings i física
2026-04-25 18:06:06 +02:00
JailDesigner
3e379ce129
feat(effects): polvet transitori al despegue i a l'aterratge
2026-04-25 17:51:55 +02:00
JailDesigner
c38c80753a
feat(player): direcció preferida al HURT segons l'offset d'impacte
2026-04-25 15:29:48 +02:00
JailDesigner
4667e0abf9
fix(player): saltar enmig d'un gir de 180° comprometeix la direcció final
2026-04-25 15:17:45 +02:00
JailDesigner
7f78f556f3
fix(player): el disparador del HURT en aterrar usa la hit-box, no la base-box
2026-04-25 15:01:56 +02:00
JailDesigner
e8407ce35e
feat(player): nou estat HURT — caure damunt d'un altre el llança projectat
2026-04-25 14:56:15 +02:00
JailDesigner
188f035333
feat(player): saltar travessa el caminant; rebot mid-aire entre dos saltadors
2026-04-25 14:20:38 +02:00
JailDesigner
3646e6a4aa
feat(player): efectes de so configurables al despegue i a l'aterratge
2026-04-25 13:50:30 +02:00
JailDesigner
f3f5fa5e92
feat(player): animacions stun_* durant l'aterratge
2026-04-25 13:48:03 +02:00
JailDesigner
3a750822f6
fix(player): la resolució del solapament en aterrar usa la base-box, no la hit-box
2026-04-25 12:23:21 +02:00
JailDesigner
06ff11d563
fix(player): el z-order del saltador respecta la seua posició al sòl
2026-04-25 12:21:27 +02:00
JailDesigner
f0a0515f28
fix(player): puja la sombra pel valor jump.shadow_y_offset del YAML
2026-04-25 12:19:51 +02:00
JailDesigner
4758d5d8a4
refactor(player): mou height de jump a collision per coherència amb les entitats
2026-04-25 12:16:03 +02:00
JailDesigner
64390f8ad7
feat(player): sombra translúcida sota el jugador mentre està en l'aire
2026-04-25 11:59:13 +02:00
JailDesigner
c4caa9021e
feat(player): resol el solapament en aterrar damunt d'un altre jugador
2026-04-25 11:55:04 +02:00
JailDesigner
a64f33fe43
feat(player): no pinta el sòl mentre està en l'aire; aterratge sí pinta
2026-04-25 11:52:25 +02:00
JailDesigner
cd50626b88
feat(collisions): filtre per altura — saltar esquiva momies, roques i altres jugadors
2026-04-25 11:49:48 +02:00
JailDesigner
7b09a076b2
feat(player): salt vertical amb física, màquina d'estats i animació jump_*
2026-04-25 11:42:07 +02:00
JailDesigner
91614fc545
fix(input): mou gamecontrollerdb.txt a l'arrel i el copia al build/ via CMake
2026-04-25 10:36:55 +02:00
JailDesigner
c77f90f6b6
feat(input): carrega gamecontrollerdb i corregeix l'ordre d'assignació de mandos
2026-04-25 10:32:09 +02:00
JailDesigner
4f1a3260a5
fix(player): snapToLane respecta col·lisió PvP i empeny amb push_factor
2026-04-24 22:38:36 +02:00
JailDesigner
1af43ef052
fix(player): llegeix sprite.size al loadFrom (frameWidth/Height ja no existeixen)
2026-04-24 22:05:21 +02:00
JailDesigner
d5a73a7dad
chore(tidy): elimina NOLINTs de naming obsolets a gif.cpp
2026-04-24 21:44:23 +02:00
JailDesigner
578916bc58
chore(tidy): amplia regles de naming per a constants, tipus i constexpr
2026-04-24 21:42:02 +02:00
JailDesigner
ae8b9d8fe6
refactor(entities): fusiona momia i mummy en un sol tipus canònic 16×32
2026-04-24 21:02:02 +02:00
JailDesigner
50aae790b1
refactor(anim): migra AnimatedSprite al format sprite:/frame_ms, animacions en mapa
2026-04-24 21:01:21 +02:00
JailDesigner
ea0f6d98a9
feat(player): inèrcia de frenada amb acumulador de moviment
2026-04-24 20:20:30 +02:00
JailDesigner
291cbdc957
Merge branch 'p2-support': suport del segon jugador
2026-04-24 19:30:32 +02:00
JailDesigner
858e444842
feat(player): hit-box 8×8 per a contacte actor-actor (player, momia, trampa)
2026-04-24 19:23:30 +02:00
JailDesigner
511f8d5b09
fix(player): el jugador empentat es queda en stand, no walk
2026-04-24 19:00:04 +02:00
JailDesigner
e22f3240da
feat(player): col·lisió i empenta entre jugadors amb push_factor al YAML del mapa
2026-04-24 18:54:19 +02:00
JailDesigner
1cc2e28b1b
refactor(player): divideix update en tick+applyMovement i exposa velocitat intencionada
2026-04-24 18:49:52 +02:00
JailDesigner
820b9f2d21
feat(ui): bloc del jugador 2 al menú de teclat (només lectura)
2026-04-24 18:18:55 +02:00
JailDesigner
f3977170b7
fix(ui): trunca el value al menú amb "..." quan se sol·lapa amb la label
2026-04-24 18:15:39 +02:00
JailDesigner
996ff0053e
fix(input): dedup de mandos, auto-assign per ordre i cycles sense col·lisió
2026-04-24 18:06:24 +02:00
JailDesigner
e5b8d7731b
feat(ui): tria del mando per jugador al menú de servei
2026-04-24 15:17:14 +02:00
JailDesigner
a725b76684
feat(input): assignació mando↔jugador persistida a config.yaml
2026-04-24 15:13:44 +02:00
JailDesigner
4e9d5df872
feat(players): suport del segon jugador amb events amb player_id
2026-04-24 14:33:52 +02:00
JailDesigner
74dad71cc2
feat(player): gir de 180° amb pose intermèdia configurable al YAML
2026-04-24 13:49:17 +02:00
JailDesigner
5c70019eb5
feat(game): pausa graduada amb easing i separador al HUD
2026-04-24 11:56:38 +02:00
JailDesigner
8aa4ec3daf
build: aïlla la implementació de stb_vorbis en un TU propi
...
Mateix patró que stb_image_write: jail_audio.cpp defineix
STB_VORBIS_HEADER_ONLY i només veu les declaracions; les definicions
viuen a source/external/stb_vorbis_impl.cpp, ja exclòs del pre-commit.
Això permet retirar també la desactivació global de
clang-analyzer-core.UndefinedBinaryOperatorResult al .clang-tidy, i el
check queda actiu arreu del nostre propi codi.
2026-04-24 11:18:59 +02:00
JailDesigner
6c1c042637
build: aïlla la implementació de stb_image_write en un TU propi
...
screenshot.cpp ara només inclou les declaracions de stb_image_write.h;
la macro STB_IMAGE_WRITE_IMPLEMENTATION viu a un .cpp nou dins de
source/external/, que ja està exclòs del pre-commit hook (clang-format
i clang-tidy) i cobert pel seu .clang-tidy amb Checks: '-*'. Així
podem retirar la desactivació global de clang-analyzer-optin.portability
.UnixAPI i el check queda actiu arreu del nostre propi codi.
2026-04-24 11:15:32 +02:00
JailDesigner
dc8a7723e3
feat(ui): captura F9, tema a data/ui.yaml i retocs estètics
...
Captura de pantalla amb F9: volca el canvas ARGB a
screenshots/scr_<timestamp>.png via stb_image_write.
Tot el tema d'UI (colors, timings, fonts, flag hud.bg_enabled)
passa a data/ui.yaml via UiConfig; els valors de Defaults::UI
queden com a fallbacks si el fitxer falta o li manca alguna clau.
Retocs estètics: paleta "uzebox" per a la UI, strings del HUD
(P1/P2/V/T/PIRAMIDE/SALA) traduïts a locale, i fons del marcador
opcional amb backdrop continu de franja per evitar el trencament
visual durant el shake o l'animació d'entrada dels panells.
2026-04-24 10:58:02 +02:00
JailDesigner
82b229222f
feat(hud): marcador de la franja superior amb 3 blocs i animació d'entrada
2026-04-23 23:46:41 +02:00
JailDesigner
67ecb704d2
feat(pyramid): usa variants 16×32 sam (jugador) i momia
2026-04-23 17:33:47 +02:00
JailDesigner
936adf1405
Merge branch 'feat/paint-layer'
...
Fase 6: pintat de tiles amb PaintLayer com a font única del pintat.
Cadena on_tile_entered → tile_painted → sarcs. Feedback visual per
jugador via player{1,2}_paint_tile al YAML del mapa.
2026-04-23 13:42:49 +02:00
JailDesigner
0d914cc6dd
docs(entities): documenta la fase 6 — pintat de tiles
2026-04-23 13:41:57 +02:00
JailDesigner
1117264758
feat(pyramid): declara player1_paint_tile i player2_paint_tile
2026-04-23 13:32:15 +02:00
JailDesigner
d0503ff8b1
feat(game_scene): integra PaintLayer i llegeix paint_tile del YAML del mapa
2026-04-23 13:31:13 +02:00
JailDesigner
e3cf2eb773
refactor(entities): rename notifyTileEntered → notifyTilePainted i escolta tile_painted
2026-04-23 13:22:02 +02:00
JailDesigner
0f56ce7567
feat(player): publica PaintedTile amb l'índex de pintat propi
2026-04-23 13:19:01 +02:00
JailDesigner
87b08a7c7c
feat(map): afegeix PaintLayer com a font única del pintat
2026-04-23 13:17:47 +02:00
JailDesigner
00eb696859
feat(map): afegeix Map::isPaintable(col, row)
2026-04-23 13:15:08 +02:00
JailDesigner
48ff1839bc
feat(event_bus): afegeix PaintedTile al payload
2026-04-23 13:13:47 +02:00
JailDesigner
01145464ed
fix(editor): resol ruta via Resource::Helper per guardar amb CWD arbitrari
2026-04-23 12:43:23 +02:00
JailDesigner
f30bb1fb0f
feat(editor): TilePicker amb scroll vertical i selecció per clic
2026-04-23 12:18:22 +02:00
JailDesigner
05cdcfa660
feat(editor): brush amb preview snap-to-grid i pintura per clic
2026-04-23 12:11:54 +02:00
JailDesigner
a612a8255f
feat(editor): mode editor mínim amb toggle, border blau i mutex amb pausa
2026-04-23 12:09:04 +02:00
JailDesigner
329bf692e6
feat(editor): Screen::windowToCanvas() per a input de ratòli
2026-04-23 11:58:58 +02:00
JailDesigner
219f8033eb
feat(editor): Tilemap editable amb setTileAt/save (Debug-only)
2026-04-23 11:56:06 +02:00
JailDesigner
6d8423764d
feat(editor): writer surgical del bloc data: al YAML del tilemap
2026-04-23 11:51:49 +02:00
JailDesigner
459d18b49c
feat(game): pausa amb F11/START i contorn NSEO al Text
2026-04-23 09:47:59 +02:00
JailDesigner and Claude Opus 4.7
243ba06351
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 >
2026-04-23 09:11:21 +02:00
JailDesigner
4da05b3d76
chore(release): v0.21.0 — empaquetat de recursos (AE26) i neteja de fonts
...
- Nou format de pack AE26 v1 (XOR + djb2), eina `pack_resources`,
regeneració automàtica de `build/resources.pack` a cada build.
- `Resource::Helper` amb init/shutdown, fallback a disc només en Debug
(apunta al source tree); Release exigeix pack present.
- Callers de YAML migrats a `loadFile`+deserialize des de buffer.
- Arrel neta: el pack viu a `build/`, eliminat `sync_data`.
- Placeholder font -> `ari-w9500-condensed-display`; esborrades variants
bold/condensed no usades a `data/fonts/`.
2026-04-23 08:51:21 +02:00
JailDesigner
aeed0e01c2
Merge branch 'feat/mummy-intersections': decisió de direcció a creuaments
2026-04-22 22:53:56 +02:00
JailDesigner
9d256b7f2d
feat(mummy): decisió a creuaments de corredor
...
La mòmia ara decideix direcció a cada creuament de corredor (edge-detect
de travessar la línia central d'un corredor perpendicular) i no només
quan topa amb un mur o sarc. A la detecció, amarra la caixa al centre
exacte del creuament per evitar drift sub-píxel i tria entre continuar
recta o girar a una perpendicular lliure. Mai mitja volta a un creuament
— la mitja volta queda reservada al cas de bloqueig sense alternatives.
2026-04-22 22:52:51 +02:00
JailDesigner
5312abc761
chore(release): v0.20.0 — notificacions en case frase i renom de presets
2026-04-22 22:05:18 +02:00
JailDesigner
4dd2b6d2a9
feat(mouse): amaga el cursor automàticament després de 3s sense moviment
2026-04-22 21:34:05 +02:00
JailDesigner
d5abc6343e
fix(gamepad): no retallar el nom del mand a 25 caràcters
2026-04-22 21:20:53 +02:00
JailDesigner
a2b01ba9d5
Merge branch 'feat/gamepad'
2026-04-22 19:44:42 +02:00
JailDesigner
a230351b79
feat(gamepad): controls de gamepad per al player i el menú de servei
2026-04-22 19:43:37 +02:00
JailDesigner
7c35ffaa74
feat(gamepad): detecció i notificacions hot-plug amb GamepadManager
2026-04-22 19:39:16 +02:00
JailDesigner
be9309d342
feat(notifier): suport multilinia amb wrap automàtic per espais
2026-04-22 19:33:18 +02:00
JailDesigner
591b4b58e5
Merge branch 'feat/service-menu'
2026-04-22 19:07:41 +02:00
JailDesigner
fb40d0effb
feat(menu): submenú Controls i bloqueig de polling amb menú obert
2026-04-22 19:05:36 +02:00
JailDesigner
350625dec0
feat(menu): primera versió del menú de servei
2026-04-22 18:15:00 +02:00
JailDesigner
e4a8b4cd3e
docs: pla d'implementació del menú de servei
2026-04-22 13:55:05 +02:00
JailDesigner and Claude Opus 4.7
eb07e7e564
feat(fonts): deinterlace GIF i font ari-w9500 per placeholders
...
Fix: gif.cpp no desfeia l'interlace, trinxava qualsevol GIF entrellaçat
(tota la sortida de Pillow). Afegeix Defaults::UI::Font per centralitzar
noms/rutes i mou data/font → data/fonts.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-22 13:45:06 +02:00