JailDesigner and Claude Opus 4.7
c4933875dd
fix(input): impedeix que els events traspassin al joc en acabar el rebind
...
El menu de servei queda obert per sota de l'overlay DefineInputs durant
tot el rebind (en lloc de tancar-se al activar la accio), de manera que
absorbeix qualsevol KEY_DOWN que arribi un cop l'overlay s'auto-cancela.
La pantalla de titol tambe pausa la seua logica mentre el menu de servei
esta obert, igual que GameScene, per evitar que detecti un START fantasma
si l'usuari encara te una tecla pulsada al moment de tancar-se el modal.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 20:36:51 +02:00
JailDesigner and Claude Opus 4.7
10a54aef91
fix(ui): nom del mando en majuscules a la UI sense modificar el config
...
VectorText nomes admet ASCII en majuscules; els noms dels mandos (i el
git hash) passaven pel toUpperAscii local del service_menu, pero les
notificacions de hot-plug i el text del CYCLE de la pagina CONTROLS
es mostraven amb el case original. Mou el helper a un utils compartit i
l'aplica a tots els punts de display sense tocar gamepad_name al config.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 20:33:01 +02:00
JailDesigner and Claude Opus 4.7
34be79192c
feat(service_menu): pagina CONTROLS amb assignacio de pad i rebind per jugador
...
Afegeix submenu CONTROLS al menu de servei amb 2 items CYCLE per
seleccionar el mando assignat a cada jugador (persistit per name + path)
i 4 items ACTION per arrancar DefineInputs (teclat/mando per a P1/P2).
Tambe afegeix:
- Director: init/update/draw/destroy del singleton DefineInputs.
- GlobalEvents: routing prioritari de tots els events a DefineInputs
mentre l'overlay esta actiu.
- Locale ca/en: claus del submenu CONTROLS i de l'overlay de rebind.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 20:18:49 +02:00
JailDesigner and Claude Opus 4.7
fcf13591be
feat(input): modul DefineInputs per redefinir teclat i mando
...
Singleton inspirat en aee_arcade DefineButtons: pinta una caixa central
modal, captura events SDL i avança per una sequencia fixa d'accions per
jugador. Teclat: LEFT/RIGHT/FIRE/ACCELERATE. Mando: FIRE/ACCELERATE/
START/MENU. ESC cancel-la, duplicats dins la sessio es rebutgen.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 20:17:30 +02:00
JailDesigner and Claude Opus 4.7
3e8f2f35bf
feat(input): accio MENU i assignacio de mando per path + name
...
Afegeix l'accio MENU a InputAction (obre el menu de servei des del mando,
equivalent a F12 al teclat) i els camps gamepad.button_start i
gamepad.button_menu al config per jugador. Tambe afegeix gamepad_path
per distingir dos mandos del mateix model i prioritza path > name >
slot a applyPlayerNBindings via el nou resolvePlayerGamepad.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 19:56:59 +02:00
JailDesigner and Claude Opus 4.7
e5a91825b1
feat(input): notifica connexio/desconnexio de mandos via Notifier
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 19:55:42 +02:00
JailDesigner
b3271b17a2
Merge branch 'feat/preload-resources': precàrrega completa al boot
2026-05-24 19:32:04 +02:00
JailDesigner
d4117e3505
feat(boot): precàrrega de música, sons i shapes a l'arrencada
2026-05-24 19:31:35 +02:00
JailDesigner
73c7e4ea76
Merge branch 'fix/fps-rounding': FPS arrodonit
2026-05-24 19:20:14 +02:00
JailDesigner
23cc5ce68d
fix(debug-hud): FPS arrodonit en lloc de truncat
2026-05-24 19:20:06 +02:00
JailDesigner
e42059e486
chore(sounds): normalitza sons a pcm_u8 48 kHz mono peak -1 dB
2026-05-24 19:11:43 +02:00
JailDesigner
00f40d194b
Merge branch 'feat/audio-persistence': persistència d'àudio + toggles com a mute pur
2026-05-24 19:06:43 +02:00
JailDesigner
31f348328e
fix(audio): toggles són mute pur, no aturen la reproducció
2026-05-24 18:52:05 +02:00
JailDesigner
8c48a9a772
feat(config): persistència de les opcions d'àudio al config.yaml
2026-05-24 18:40:33 +02:00
JailDesigner
bacfbe6eac
Merge branch 'tweak/debug-hud-layout': FPS gran, RES i DRIVER al HUD de debug
2026-05-24 14:15:05 +02:00
JailDesigner
63d08aef46
tweak(debug-hud): FPS més gran, afegeix RES i DRIVER
2026-05-24 14:14:50 +02:00
JailDesigner
87f818ef96
Merge branch 'feat/service-menu': menu de servei F12 amb VIDEO/AUDIO/OPCIONS/SISTEMA
2026-05-24 12:32:55 +02:00
JailDesigner
7eafe21623
feat(service-menu): submenu RESOLUCIO amb canvi en calent de l'offscreen
2026-05-24 12:30:47 +02:00
JailDesigner
22827c28fa
feat(service-menu): pobla SISTEMA amb reinici, eixir i confirmacions
2026-05-24 12:18:39 +02:00
JailDesigner
8c21345f14
feat(service-menu): pobla OPCIONS amb idioma i toggle del HUD de debug
2026-05-24 11:56:11 +02:00
JailDesigner
56d7d4af52
feat(service-menu): pobla AUDIO amb toggles i sliders de volum
2026-05-24 11:49:14 +02:00
JailDesigner
71c43ec6fe
feat(service-menu): pobla VIDEO amb zoom, fullscreen, vsync, AA i postfx
2026-05-24 11:37:36 +02:00
JailDesigner
443b461974
feat(service-menu): esquelet amb F12, brackets sci-fi i highlight animat
2026-05-24 11:25:09 +02:00
JailDesigner
cc16908b86
Merge branch 'feat/locale-system': sistema i18n amb canvi al vol
2026-05-24 10:36:54 +02:00
JailDesigner
c4c6881bd6
feat(locale): canvi d'idioma al vol amb F7 i persistència
2026-05-24 10:35:39 +02:00
JailDesigner
35d720bb77
feat(locale): sistema i18n YAML amb català i anglès
2026-05-24 10:28:56 +02:00
JailDesigner
274ce1ca63
Merge branch 'refactor/english-identifiers': identificadors valencians/castellans a anglès
2026-05-24 08:12:56 +02:00
JailDesigner
252e881e93
refactor: renombra jugador*/zona/radi/MARGE/origen/letra residuals a anglès
2026-05-24 08:09:41 +02:00
JailDesigner
d36ad7d1c5
refactor(scenes): renombra ancho/altura/centre_punt residuals a anglès
2026-05-24 08:03:28 +02:00
JailDesigner
7305d2f5dc
refactor(scenes): renombra identificadors valencians de logo/title a anglès
2026-05-24 08:00:40 +02:00
JailDesigner
4cfad053f0
refactor(effects): renombra temps_vida/temps_max a elapsed_time/max_lifetime
2026-05-24 07:59:14 +02:00
JailDesigner
807f71ffa7
refactor(defaults): renombra VELOCITAT/CANVI_ANGLE/MAX_BALES a anglès
2026-05-24 07:57:12 +02:00
JailDesigner
d12f24d798
refactor(enemy): renombra esta_/animacio_/timer_invulnerabilitat_ a anglès
2026-05-24 07:56:35 +02:00
JailDesigner
f9d2539a45
refactor(enemy): renombra drotacio/rotacio/FACTOR_HERENCIA a anglès
2026-05-24 07:52:21 +02:00
JailDesigner
87bfccd14f
refactor(enemy): renombra palpitacio* a pulse*
2026-05-24 07:46:07 +02:00
JailDesigner
e5e3729215
refactor(enemies): renombra QUADRAT/MOLINILLO a SQUARE/PINWHEEL
2026-05-24 07:40:54 +02:00
JailDesigner
6210985548
Merge branch 'fix/shaders-glslc-optional': glslc opcional si els headers SPV ja estan al repo
2026-05-23 12:55:51 +02:00
JailDesigner
20250a0d6d
fix(cmake): glslc opcional si els headers SPV ja estan commiteats al repo
2026-05-23 12:55:48 +02:00
JailDesigner
e5616f7c3a
Merge branch 'tweak/misc-adjustments': retocs varis (paleta, glow, audio, física, destell del títol)
2026-05-22 23:48:59 +02:00
JailDesigner
3b1e469a4f
feat(title): destell hiperespacial al VP quan la nau desapareix (sparkle 4-puntes còncau)
2026-05-22 23:46:56 +02:00
JailDesigner
70ca19eb87
fix(wounded-chain): amplifier 1.25 perquè la cadena agafi el contacte post-rebot
2026-05-22 23:32:28 +02:00
JailDesigner
7e52eaeddb
tweak(friendly-fire): la bala empeny la nau abans de morir → els debris hereten la inèrcia
2026-05-22 23:24:42 +02:00
JailDesigner
d618b6d561
feat(audio): so propi per a la nau a HURT (hurt.wav, separat del HIT de bala)
2026-05-22 23:20:18 +02:00
JailDesigner
e954d4ea59
tweak(playfield): rejilla violeta synthwave + brillos +5%; starfield unificat al color del títol
2026-05-22 23:10:06 +02:00
JailDesigner
b1ee23cd20
tweak(stage-messages): missatges level start/completed amb color ambre del PRESS START
2026-05-22 23:02:23 +02:00
JailDesigner
d86b10c14e
tweak(collision): impuls extra a l'enemic en el moment que mata la nau (factor 0.3·mass·vel)
2026-05-22 22:59:27 +02:00
JailDesigner
1ea38d4f6a
fix(ship-death): debris hereten inèrcia (captura velocitat abans del markHit) i comparteixen dispersió amb enemics
2026-05-22 22:47:02 +02:00
JailDesigner
26bd5a9efa
tweak(playfield): el grid principal es dibuixa sobre el subgrid a les interseccions
2026-05-22 22:43:32 +02:00
JailDesigner
4b0d85c010
tweak(palette): colors neon purs per als 3 enemics (cyan/roig/magenta)
2026-05-22 22:39:04 +02:00
JailDesigner
149b485a9b
Merge branch 'tweak/enemy-mix-stage1': ajustos d'enemics (mix stage 1, spawn col·lidible, ull al cuadrado)
2026-05-22 22:34:54 +02:00
JailDesigner
6b1f064cda
tweak(cuadrado): ull amb pupil·la al centre del rombe
2026-05-22 22:34:54 +02:00
JailDesigner
1cef6a2c23
tweak(enemy): durant l'spawn ja poden ser abatuts i rebotar amb la nau (sense fer dany)
2026-05-22 22:27:44 +02:00
JailDesigner
007460dc51
tweak(stages): stage 1 amb mix dels 3 tipus d'enemic (34/33/33)
2026-05-22 22:12:17 +02:00
JailDesigner
10057a82de
tweak(audio): amplifica hit.wav +6dB i puja canals simultanis a 50
2026-05-22 22:09:03 +02:00
JailDesigner
73fa5bf1d1
Merge branch 'tweak/firework-glow': halo neon per a fireworks amb color propi
2026-05-22 21:57:36 +02:00
JailDesigner
c32b564da1
feat(firework): halo neon per partícula amb color de glow propi (explosió enemic: línia blanca + halo daurat)
2026-05-22 21:57:11 +02:00
JailDesigner
7b9b5ce569
Merge branch 'tweak/pentagon-design': halo neon proporcional i pentàgon doble
2026-05-22 21:38:29 +02:00
JailDesigner
f0b3a1fbc4
feat(render): halo neon proporcional al bounding_radius de la shape (opt-out a text)
2026-05-22 21:35:01 +02:00
JailDesigner
869b4374ba
tweak(pentagon): pentàgon doble concentric (interior rotat 36°)
2026-05-22 20:11:29 +02:00
JailDesigner
ea192cd9de
tweak(debug): l'overlay arranca ocult sempre; F11 segueix alternant-lo
2026-05-22 19:53:26 +02:00
JailDesigner
5d30f6be68
Merge branch 'tweak/playfield-grid': ones d'aigua + starfield parallax al fons
2026-05-22 19:52:07 +02:00
JailDesigner
a342d79b86
feat(starfield): mou estrelles amb la mitjana de velocitats de les naus
2026-05-22 19:51:40 +02:00
JailDesigner
1db7368c9f
feat(starfield): capa parallax al fons del playfield amb tint blanc-cyan
2026-05-22 19:46:57 +02:00
JailDesigner
88b002b277
feat(playfield): ones d'aigua a la rejilla per explosions i pas de nau
2026-05-22 19:22:09 +02:00
JailDesigner
044a3a3bbf
tweak(playfield): subdivisions de 5 a 4 a la subgraella
2026-05-22 18:56:24 +02:00
JailDesigner
49070aa843
Merge branch 'fix/bullet-collision-swept': col·lisió bales swept + debris
2026-05-22 18:43:46 +02:00
JailDesigner
18e05e36e6
feat(bullet): debris en trencar-se amb so HIT mogut des d'enemy.herir()
2026-05-22 18:42:23 +02:00
JailDesigner
bf79eecca0
fix(bullet): col·lisió swept, sense grace_timer, mor al border visual
2026-05-22 18:24:54 +02:00
JailDesigner
b80216dce1
Merge branch 'feat/ship-hurt-state': estat HURT a la nau
2026-05-22 17:32:04 +02:00
JailDesigner
87138f9a1f
feat(ship): la nau entra a HURT al xocar amb un enemic, mor en un segon impacte
2026-05-22 17:30:33 +02:00
JailDesigner
c6560514d8
Merge branch 'feat/title-intro-sequence': intro coreografiada al títol
2026-05-22 14:05:57 +02:00
JailDesigner
839f73e1ef
feat(title): intro amb path Z (zoom+pivot al VP) en lloc d'offset Y
...
El logo i el footer ara entren simulant un moviment 3D des de l'usuari
cap al VP: arrenquen grans i a la posició projectada extrema (factor
d'escala SCALE_START > 1, pivot al centre de pantalla) i convergeixen
a la seva mida i posició finals. Substitueix l'offset Y lineal anterior.
2026-05-22 14:03:28 +02:00
JailDesigner
2ca2062011
feat(title): intro coreografiada amb logo, footer i naus escalonats
...
Logo cau des de dalt; quan aterra, JAILGAMES i COPYRIGHT pugen des de
baix amb stagger pam-pam; després arrenquen les naus i, en aterrar
elles, apareix PRESS START. Magic numbers a Defaults::Title::Sequence.
2026-05-22 13:51:09 +02:00
JailDesigner
03209ee23b
Merge branch 'feat/title-neon-palette': paleta neon synthwave a títol
2026-05-22 13:25:18 +02:00
JailDesigner
c61299f17f
feat(title): paleta neon synthwave per element a l'escena de títol
2026-05-22 13:04:11 +02:00
JailDesigner
880af293ef
log: primer missatge 'Game start', últim 'Bye!'
2026-05-22 12:50:53 +02:00
JailDesigner
67c59992c9
Merge branch 'feat/sdl-callbacks': migració a SDL_MAIN_USE_CALLBACKS
2026-05-22 12:48:39 +02:00
JailDesigner
be3d696f60
feat(main): activa SDL_MAIN_USE_CALLBACKS
...
main.cpp queda amb les 4 callbacks de SDL3: AppInit construeix el
Director, AppEvent enruta cada event a handleEvent(), AppIterate crida
iterate(), AppQuit reabsorbeix la propietat amb unique_ptr.
El Director::run() i el bucle while interns desapareixen; el bootstrap
de SDLManager/Audio/Context/DebugOverlay/Notifier viu ara al final del
constructor. SDL_Quit() ja no es crida explícitament — SDL ho fa
després de SDL_AppQuit.
2026-05-22 12:45:12 +02:00
JailDesigner
6b8f6a267d
refactor(director): migra la persistència ConfigYaml al Director
...
main.cpp queda només amb 'Director director(argc, argv); return director.run()'.
El Director crida ConfigYaml::* directament; l'struct ConfigPersistence
desapareix de engine_config.hpp. La separació core/game es relaxa al
Director, que és EL programa, no part del motor.
2026-05-22 12:41:05 +02:00
JailDesigner
120b8ada38
refactor(director): extreu iterate/handleEvent/advanceScene del runFrameLoop
...
run() ara delega a iterate() i handleEvent() per cada frame.
runFrameLoop desapareix; la seva lògica es divideix entre els tres
nous mètodes. La primera escena es construeix lazy via advanceScene()
dins d'iterate(). Cap canvi de comportament visible.
2026-05-22 12:38:16 +02:00
JailDesigner
8bb052981d
refactor(director): locals de run() a membres unique_ptr
...
Preparació per a SDL_MAIN_USE_CALLBACKS: SDLManager, SceneContext,
DebugOverlay i l'escena actual ja viuen com a membres del Director.
El flux de run() és idèntic; només canvia el storage.
2026-05-22 12:35:19 +02:00
JailDesigner
7fc8e48596
Merge branch 'feat/title-3d': escena del títol migrada a 3D real
2026-05-22 12:12:22 +02:00
JailDesigner
ff518195f8
fix(title): comentari trencat per la substitució sed del cleanup
2026-05-22 12:06:48 +02:00
JailDesigner
54d3e683a1
refactor(title): la 3D és l'única — elimina backup 2D i renomena als noms canònics
2026-05-22 12:04:16 +02:00
JailDesigner
a29c2b9cc2
fix(ship-3d): exit convergeix al VP sense travessar-lo (sense creuament entre naus)
2026-05-22 11:57:16 +02:00
JailDesigner
85e7e70767
feat(title-3d): horitzó ampliat (starfield Z=1500, naus exiting travessen el VP)
2026-05-22 11:50:26 +02:00
JailDesigner
3f10c61e22
tweak(ship-3d): SHIP_FLOAT_SCALE a 2.0
2026-05-22 11:40:47 +02:00
JailDesigner
5de9a5003b
tweak(ship-3d): descans més amunt i naus més grans (FLOAT_SCALE 1.5, TARGET_DIST 480)
2026-05-22 11:30:54 +02:00
JailDesigner
d3076fbdec
tweak(ship-3d): descans prop de P-PRESS / Y-PLAY, més mida, pitch +14° lift
2026-05-22 10:20:39 +02:00
JailDesigner
26c6decd74
fix(ship-3d): path únic VP→les7/les5 perquè initial, target i VP siguen col·lineals
2026-05-22 10:06:06 +02:00
JailDesigner
54702a5afe
feat(ship-3d): look-at dinàmic, naus alineades amb el path (punta+cul)
2026-05-22 09:52:14 +02:00
JailDesigner
b45390a8d1
tweak(ship-3d): tornar a extruir amb depth 1.0 (més baixa que 1.5)
2026-05-22 09:48:57 +02:00
JailDesigner
2faa3ede84
tweak(ship-3d): pitch -120° i naus planes (sense extrusió)
2026-05-22 09:39:19 +02:00
JailDesigner
85e1933a83
fix(ship-3d): oscil·lació contínua entre ENTERING i FLOATING (sense salt)
2026-05-22 09:31:28 +02:00
JailDesigner
07788ab3b6
tweak(ship-3d): pitch -108°, Z 90, X 25 (més inclinació, més lluny)
2026-05-22 09:30:39 +02:00
JailDesigner
2ed7463069
tweak(ship-3d): pitch a -100° per inclinar el cul avall i veure el dors
2026-05-22 09:24:53 +02:00
JailDesigner
e533387ce5
fix(title-3d): naus rotades cap al VP, alçada mínima, eix X de càmera corregit
2026-05-22 09:11:26 +02:00
JailDesigner
b654fd0428
feat(title-3d): TitleScene3D, SceneType::TITLE_3D i trigger ORNI_TITLE_3D
2026-05-22 08:22:36 +02:00
JailDesigner
7a3a71e1dc
feat(ship-animator3d): animador 3D de naus per al títol amb extrusió de ship.shp
2026-05-22 08:14:29 +02:00
JailDesigner
8722a46d06
feat(starfield3d): camp d'estrelles 3D amb octaedres rotants cap a càmera
2026-05-22 08:10:52 +02:00