JailDesigner
47e9d85708
tweak(titol): ORNI ATTACK en cian (ombra color estrelles), naus blanques, JAILGAMES menys brillant i PULSA START una mica més amunt
2026-05-29 22:17:30 +02:00
JailDesigner
82027e4975
docs(titol): corregeix comentari obsolet (cian, no verd) de COPYRIGHT_BRIGHTNESS
2026-05-29 22:00:23 +02:00
JailDesigner
ab06cb32c9
tweak(titol): JAILGAMES i copyright en cian pur en lloc de verd
2026-05-29 22:00:07 +02:00
JailDesigner
9e7061d8b7
tweak(titol): PREMEU START en blanc, JAILGAMES en verd estàndard i copyright el mateix verd amb menys brillo
2026-05-29 21:56:33 +02:00
JailDesigner
b4b95c883f
Merge branch 'feature/marcador': redisseny del marcador (color per jugador, ceros atenuats, vides com a slots/dígits commutables i layout centrat)
2026-05-29 21:42:21 +02:00
JailDesigner
a46b93c917
tweak(hud): el mode numèric de vides mostra repuestos (vides-1), coherent amb els slots
2026-05-29 21:39:52 +02:00
JailDesigner
8d18c50aaa
tweak(hud): mode de vides commutable a Defaults (slots o dígits); per defecte dígits per veure'l
2026-05-29 21:36:51 +02:00
JailDesigner
b412435862
tweak(hud): NIVELL encès i el número amb els zeros de farciment atenuats com els punts
2026-05-29 21:27:11 +02:00
JailDesigner
5b90a9a767
tweak(hud): jugador inactiu = marcador apagat (tot atenuat, no en blanc)
2026-05-29 21:11:53 +02:00
JailDesigner
5ba562178b
tweak(hud): el bloc d'un jugador inactiu es deixa apagat (sense dibuixar, reservant l'ample)
2026-05-29 21:06:29 +02:00
JailDesigner
55b37ba594
tweak(hud): alinea verticalment els slots de vides amb la línia del marcador (centre del bbox, no el declarat)
2026-05-29 21:00:21 +02:00
JailDesigner
20825c8138
tweak(hud): puja una mica l'alçada dels slots de vides (factor d'ajust sobre el glif)
2026-05-29 20:56:37 +02:00
JailDesigner
9235e684e8
tweak(hud): redueix els slots de vides a l'alçada real del glif i els pinta sense glow
2026-05-29 20:52:17 +02:00
JailDesigner
0350063fb7
tweak(hud): torna el tracking de les xifres a l'original (spacing 0.0)
2026-05-29 20:52:17 +02:00
JailDesigner
56065995fd
tweak(hud): fila del marcador centrada amb posicions fixes (sense justificar a les vores)
2026-05-29 20:44:37 +02:00
JailDesigner
17e9206d26
tweak(hud): vides com a slots fixos (NUM_SLOTS = MAX_VIDES-1) que s'encenen/atenuen
2026-05-29 20:43:26 +02:00
JailDesigner
462e91d967
tweak(hud): restaura el tracking de les xifres del marcador (spacing 2.0)
2026-05-29 20:41:32 +02:00
JailDesigner
3bc87ad652
tweak(hud): l'últim dígit de la puntuació sempre encès (puntuació 0 no apaga el marcador)
2026-05-29 20:41:05 +02:00
JailDesigner
a7233e13df
tweak(hud): MAX_VIDES com a font única de vides i recalibra el groc atenuat de P2
2026-05-29 20:40:40 +02:00
JailDesigner
0abd661905
tweak(hud): vides com a icones de la nau en miniatura en lloc d'un número
2026-05-29 20:14:32 +02:00
JailDesigner
a808226481
tweak(hud): zeros de farciment de la puntuació atenuats i etiqueta NIVELL en verd atenuat
2026-05-29 20:11:37 +02:00
JailDesigner
317e2a3fd9
tweak(hud): marcador en tres blocs ancorats (P1 esquerra, P2 dreta, nivell centrat) amb color per jugador
2026-05-29 20:09:28 +02:00
JailDesigner
e4f8f586d6
tweak(hud): constants de l'esquema de color per jugador i de les icones de vides
2026-05-29 20:06:01 +02:00
JailDesigner
6f29731679
Merge branch 'tweaks/varis': nau ferida en roig i retorn al logo en acabar la partida
2026-05-29 19:55:11 +02:00
JailDesigner
d7a9bd4ab2
tweak(game over): en acabar la partida es torna al logo en lloc del títol
2026-05-29 19:13:07 +02:00
JailDesigner
ab5489a080
tweak(nau): la nau ferida parpelleja en roig pur en lloc de daurat
2026-05-29 19:12:53 +02:00
JailDesigner
f4567a2e82
Merge branch 'fix/attract-dive-i-debris': logo silenciós en explotar i dive de càmera continu sota la cortinilla
2026-05-29 19:07:37 +02:00
JailDesigner
4b298ffc1c
fix(attract): el logo no sona en explotar i la càmera del dive no frena amb la cortinilla
2026-05-29 19:06:40 +02:00
JailDesigner
0f986cbf80
Merge branch 'docs/arquitectura': document d'arquitectura per a nous companys
2026-05-29 11:56:23 +02:00
JailDesigner
582bd0ee30
docs: detalla el pipeline de shaders i la física al document d'arquitectura
2026-05-29 11:56:14 +02:00
JailDesigner
2e4030c2f2
docs: document d'arquitectura del projecte per a nous companys
2026-05-29 11:54:39 +02:00
JailDesigner
a9b662840b
Merge branch 'feature/attract-polish': polish de l'attract mode (logo silenciós, demo sense SFX, fons ja muntat, rètol de demo i transició dive+cortinilla títol→demo)
2026-05-29 10:15:04 +02:00
JailDesigner
30bbb37bff
fix(demo): el dive movia només la posició de la càmera i s'invertia el forward; ara mou posició i target alhora
2026-05-29 10:13:30 +02:00
JailDesigner
2f6d6c405f
feat(demo): transició títol→demo amb dive de càmera + cortinilla negra (substitueix el fundido)
2026-05-29 10:03:17 +02:00
JailDesigner
068f42782b
feat(demo): transició per fosa a/desde negre en el salt títol→demo
2026-05-29 09:21:02 +02:00
JailDesigner
472c543c7b
feat(demo): el marcador mostra el rètol de demo en lloc de puntuacions
2026-05-29 09:16:55 +02:00
JailDesigner
4e67a67ace
feat(demo): la graella del fons apareix ja muntada en entrar a la demo
2026-05-29 09:12:30 +02:00
JailDesigner
1e63d3ae9d
feat(demo): silenciar els efectes de so durant la demo (música intacta)
2026-05-29 09:09:37 +02:00
JailDesigner
b363efd1f0
feat(demo): logo silenciós dins el cicle d'atracció (no sons ni reinici de música si ja sona)
2026-05-29 08:54:56 +02:00
JailDesigner
0abbaa09f8
Merge branch 'feature/attract-mode': attract mode (demo jugant-se sola) amb IA, 1P/2P, vides infinites i música contínua
2026-05-28 13:25:40 +02:00
JailDesigner
455b7a6893
feat(demo): demos a 1 i 2 jugadors, esquiva de bales enemigues i vides infinites
2026-05-28 13:14:19 +02:00
JailDesigner
92f76d091d
fix(col·lisions): les bales d'enemic deixen de comptar com a foc amic (out-of-bounds a lives_per_player) i maten d'un toc
2026-05-28 13:13:36 +02:00
JailDesigner
c1956e0028
feat(demo): attract mode amb pilot IA, escenaris curats i música contínua del títol
2026-05-28 12:01:12 +02:00
JailDesigner
491992a4d7
bump version a 0.8.1
2026-05-26 19:40:08 +02:00
JailDesigner
e5b727216c
Merge branch 'refactor/move-gamecontrollerdb-to-root': gamecontrollerdb fora de data/ (al costat del binari) + logs uniformes
2026-05-26 19:39:11 +02:00
JailDesigner
f03e337b9a
refactor(input): gamecontrollerdb.txt a l'arrel + target controllerdb + logs estil [Input]
2026-05-26 19:38:31 +02:00
JailDesigner
99e99e7e08
Merge branch 'refactor/remove-dead-oscillator-code': neteja del ColorOscillator (ara via shader)
2026-05-26 19:23:45 +02:00
JailDesigner
b93761eb1e
refactor(render): eliminar restes del ColorOscillator (setLineColor/getLineColor/global mutable) i deixar DEFAULT_LINE_COLOR constexpr
2026-05-26 19:23:29 +02:00
JailDesigner
4f5421191d
Merge branch 'feat/hud-palette': HUD amb colors per funció + diferenciació P1/P2
2026-05-26 19:18:07 +02:00
JailDesigner
71ed9dc24f
feat(hud): paleta per segments (P1 blanc, vides ambre, nivell verd, P2 rosa)
2026-05-26 19:17:22 +02:00
JailDesigner
1a0cc504c4
Merge branch 'refactor/rename-explosion-sounds': sons d'explosió i bullet_zap amb noms descriptius + enemy_hit per a debris_partial
2026-05-26 19:06:00 +02:00
JailDesigner
86775d4642
refactor(audio): renombrar hit.wav a bullet_zap.wav (desintegració de bala, no HURT d'enemic)
2026-05-26 19:05:43 +02:00
JailDesigner
b936f410ce
feat(audio): so enemy_hit per a debris_partial (impacte parcial a enemic amb HP>1)
2026-05-26 19:03:19 +02:00
JailDesigner
ddcd2076a1
refactor(audio): renombrar explosion/explosion2 a enemy_explosion/player_explosion
2026-05-26 18:57:26 +02:00
JailDesigner
9345facaed
Merge branch 'feat/orb-counterattack': orb taronja rosat dispara bullet_double cap al jugador en cada hit
2026-05-26 18:54:27 +02:00
JailDesigner
885caa6bc3
feat(orb): contra-atac amb bullet_double dirigida al jugador en rebre impacte
2026-05-26 18:53:34 +02:00
JailDesigner
a77bbe4420
Merge branch 'feat/reorganize-shapes': renombre big_pentagon→orb i reorganització de data/shapes per categoria
2026-05-26 18:27:11 +02:00
JailDesigner
61a4886e62
refactor(shapes): reorganitzar data/shapes en subcarpetes per categoria (enemy/bullet/ship/effect)
2026-05-26 18:25:15 +02:00
JailDesigner
164f58c883
refactor(enemies): renombrar big_pentagon a orb i enemy_big_orb a enemy_orb
2026-05-26 18:09:29 +02:00
JailDesigner
fbfacb825b
Merge branch 'refactor/revert-stl-loops': bucles for explícits en lloc de std::ranges::* on aplica
2026-05-26 13:50:46 +02:00
JailDesigner
5e4d2cf993
refactor(physics): tornar std::ranges::find a bucle for explícit
2026-05-26 13:49:16 +02:00
JailDesigner
97d3749269
refactor: tornar std::ranges::{any,all,find}_of a bucles for explícits
2026-05-26 13:45:54 +02:00
JailDesigner
0dcecf9a3c
tune(lint): desactivar readability-use-anyofallof per coherència amb cppcheck
2026-05-26 13:41:06 +02:00
JailDesigner
c75e6406cd
Merge branch 'feat/wave-based-stages': sistema d'onades declaratives per fase
2026-05-26 13:37:24 +02:00
JailDesigner
0254b44369
tune(stages): netejar comentaris obsolets a processPlaying
2026-05-26 13:36:48 +02:00
JailDesigner
ff11567471
feat(stages): sistema d'onades declaratives amb condicions de transició
2026-05-26 13:32:43 +02:00
JailDesigner
06e383fe2c
Merge branch 'feat/enemy-health-system': sistema d'HP declaratiu, big_pentagon i ajustos visuals
2026-05-25 22:47:54 +02:00
JailDesigner
dc5b31087a
Merge branch 'feat/debris-bullet-impulse': la bala impacta al cos O als trossos
2026-05-25 22:47:54 +02:00
JailDesigner
9e745dc3fc
tune(enemy): trossos parcials i firework petit en color wounded
2026-05-25 22:47:31 +02:00
JailDesigner
14b10c663e
tune(enemy): big_pentagon orb circular, firework petit per hit, sense wounded chain
2026-05-25 22:28:36 +02:00
JailDesigner
f64c72f9a6
feat(enemy): sistema d'HP declaratiu i nou enemic big_pentagon
2026-05-25 21:46:48 +02:00
JailDesigner
610eaf257e
refactor(debris): la bala impacta al cos O als trossos, mai a tots dos
2026-05-25 21:26:32 +02:00
JailDesigner
b511740d93
Merge branch 'feat/enemy-ai-shoot': els enemics poden disparar bales declaratives des del YAML
2026-05-25 20:23:30 +02:00
JailDesigner
b0643b6f62
Merge branch 'feat/enemy-ai-wander-chase-flee': afegir WANDER/CHASE/FLEE i target multi-ship
2026-05-25 20:23:25 +02:00
JailDesigner
7e8d79222c
Merge branch 'feat/enemy-ai-movement-migration': moviment dels enemics a un sistema d'IA declaratiu
2026-05-25 20:23:02 +02:00
JailDesigner
14295ce859
feat(enemy): els enemics poden disparar bales via tick d'IA
2026-05-25 20:05:01 +02:00
JailDesigner
5ad433e63a
feat(enemy): afegir behaviors WANDER/CHASE/FLEE i target multi-ship
2026-05-25 18:08:11 +02:00
JailDesigner
61e40e88f4
feat(enemy): migrar el moviment dels enemics a un sistema d'IA declaratiu
2026-05-25 17:45:30 +02:00
JailDesigner
410955de3c
Merge branch 'feat/entity-event-system': sistema d'events declaratius per a enemics
2026-05-25 13:44:06 +02:00
JailDesigner
9c0502eefb
feat(enemy): sistema d'events declaratius via YAML
2026-05-25 13:34:48 +02:00
JailDesigner
9b3da3a6e7
Merge branch 'feat/enemy-star': afegir tipus STAR i 3 nous shapes
2026-05-25 12:42:06 +02:00
JailDesigner
bc41169176
feat(enemy): afegir tipus STAR (estrella de 5 puntes) i 3 nous shapes
...
- Nou enemic STAR amb shape star_5.shp, escala 0.7 i color groc pur.
Reusa el comportament zigzag del Pentagon i carrega via EnemyRegistry.
- DistribucioEnemics estesa amb camp 'star' opcional (default 0) per
mantenir compat amb stages antics.
- Stage 1 reconfigurat a 25/25/25/25 per mostrar els 4 tipus.
- Afegits també shapes bullet_long.shp i bullet_double.shp (encara no
utilitzats; preparats per futures variants de bala).
2026-05-25 12:36:26 +02:00
JailDesigner
b3a1afce06
Merge branch 'feat/entities-yaml-enemy-shared': paràmetres compartits dels enemics a cada YAML
2026-05-25 11:59:28 +02:00
JailDesigner
4b6dc8a47a
feat(entities): migrar paràmetres compartits dels enemics a cada YAML
2026-05-25 11:54:40 +02:00
JailDesigner
3dadd5fc1a
Merge branch 'feat/entities-yaml-bullet': migració de la bala a YAML
2026-05-25 11:47:36 +02:00
JailDesigner
bea844d51e
feat(entities): migrar bullet a data/entities/bullet/bullet.yaml
2026-05-25 11:42:43 +02:00
JailDesigner
5fb6c68df4
Merge branch 'feat/entities-shape-scale': collision_radius derivat del shape + scale al YAML
2026-05-25 11:33:52 +02:00
JailDesigner
866a057704
feat(entities): derivar collision_radius del shape + scale/collision_factor al YAML
2026-05-25 11:29:43 +02:00
JailDesigner
da8eab330d
Merge branch 'feat/entities-yaml-enemies': configuració dels enemics en YAML
2026-05-25 10:15:34 +02:00
JailDesigner
39bda0775e
feat(entities): migrar la configuració dels 3 enemics a data/entities/<type>/*.yaml
2026-05-25 10:01:12 +02:00
JailDesigner
ed4d3a3915
Merge branch 'feat/entities-yaml-player': configuració del player en YAML
2026-05-25 09:39:39 +02:00
JailDesigner
6447932212
feat(entities): migrar la configuració del player a data/entities/player/player.yaml
2026-05-25 08:32:49 +02:00
JailDesigner
9f278772bb
Merge branch 'feat/pack-resources-align': alinear pack_resources amb projectes germans
2026-05-25 07:55:49 +02:00
JailDesigner
2d073b6055
feat(pack): alinear sortida i build amb projectes germans
2026-05-25 07:55:30 +02:00
JailDesigner and Claude Opus 4.7
99b18d208d
chore: bump version a 0.8.0
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 22:41:25 +02:00
JailDesigner
1321566910
Merge branch 'feature/sistema-gestio-inputs': sistema de gestio d'inputs
...
Modul DefineInputs per redefinir teclat i mando amb overlay modal,
pagina CONTROLS al menu de servei (picker de mando amb llista, swap
automatic en conflicte, slot SENSE MANDO, rebind per jugador), so
accept en cada captura, navegacio del menu amb dpad/stick i triggers
L2/R2, glyphs ( ) i / al charset, autoassignacio de mando al primer
arranque, i diversos fixes de pipeline d'events.
2026-05-24 22:39:47 +02:00
JailDesigner and Claude Opus 4.7
cefafe99e4
feat(service_menu): triggers L2/R2 navegables + so al rebind
...
El menu de servei nomes processava AXIS_MOTION dels sticks i descartava
els triggers. Com SDL3 mai emet button events per a L2/R2 (nomes axis),
rebindar FIRE o ACCEL a un trigger feia que no funcionaren al menu, fins
i tot estant correctament al joc per via del poll de Input::checkTriggerInput.
Afegim edge-detect dels dos triggers al handleGamepadAxis i, quan creuen
el llindar, mirem si el codi virtual (100=L2, 101=R2) coincideix amb el
binding de FIRE → activateCurrent, o ACCEL → popPage. Estat held per
trigger per evitar repeticions mentre es mante premut.
DefineInputs ara reprodueix el so accept del menu en cada captura
valida, que estava silent i no donava feedback al rebind.
Tambe extraiem processStickX/Y i processTriggerEdge per mantenir
handleGamepadAxis com a dispatcher i sota el llindar de complexitat
cognitiva del clang-tidy.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 22:38:10 +02:00
JailDesigner and Claude Opus 4.7
daa7eaf811
feat(service_menu): glyphs () + tanca picker al seleccionar mando
...
Afegim els glyphs ( i ) a VectorText (char_lparen.shp, char_rparen.shp,
arcs de 4 trams dins la caixa 20x40) perque el sufix (P1)/(P2) de la
picker de mando es renderitze net sense warnings.
A mes, al triar un mando o "SENSE MANDO" a la picker fem popPage
automatic, perque l'usuari no haja de tornar enrere a ma després
d'una assignacio.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 22:20:29 +02:00
JailDesigner and Claude Opus 4.7
3dcf5c3a99
feat(service_menu): picker de mando per llista i fix SENSE MANDO
...
El cycle anterior fallava al desasignar perque Input::resolvePlayerGamepad
tenia un fallback per slot que reasignava gamepads_[player_index] quan
name+path eren buits. Això el contradeia el slot "SENSE MANDO" del cycle:
el YAML quedava buit pero el runtime seguia lligant el mando. Treure el
fallback i moure l'autoassignacio inicial al boot (nomes si tots dos
jugadors venen buits) restaura la semàntica: buit vol dir buit.
Sobre el fix, redissenyem la UX dels items MANDO P1/P2: ja no son CYCLE
sino SUBMENU que obrin una pàgina-llista (estil RESOLUCIÓ) amb tots els
mandos detectats. Cada item porta sufix (P1)/(P2) nomes si el mando el
te l'altre jugador, perque sapigues que assignar-lo li'l "robarà".
L'ultim item es "SENSE MANDO" per a desassignar explícitament. La
lògica de swap automatic en conflicte queda extreta a assignPadToPlayer
i es reutilitza des de la picker.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 22:12:53 +02:00
JailDesigner and Claude Opus 4.7
99d0f62ab5
feat(service_menu): slot 'sense mando' al cycle i swap automatic en conflicte
...
El CYCLE de la pagina CONTROLS ara inclou un slot virtual al final que
desassigna el mando (gamepad_name + gamepad_path buits → padDisplayName
mostra "SENSE MANDO"). Aixi l'usuari pot recuperar el control teclat
sense haver d'editar el YAML.
A mes, si en assignar un mando l'altre jugador ja el tenia, fem swap
automatic: l'altre jugador rep l'assignacio previa d'aquest, evitant
que dos jugadors comparteixen el mateix dispositiu. La deteccio
prioritza path (mateixa branca que resolvePlayerGamepad).
Extracta tambe reapplyBindings per mantenir cyclePlayerPad llegible.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-24 21:22:23 +02:00