afegeix CHANGELOG.md per a release v2.4.0
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# Changelog
|
||||
|
||||
## v2.4.0
|
||||
|
||||
### Novetats principals
|
||||
|
||||
- **Migració a temps real (time-based)**. Tot el joc ja no depèn d'una cadència fixa de 60 frames per segon: els moviments, les animacions, les fades, els temporitzadors i els comptadors es calculen a partir del temps real transcorregut entre frames (`dt_s`). Això corregeix l'acceleració del jugador i les animacions en monitors de 144 Hz, i prepara el joc per a qualsevol freqüència de refresc. El refactor s'ha fet entitat per entitat (Bullet, Item, Player, Balloon) i, finalment, al motor principal `Game`.
|
||||
- **Demo multi-set**. El sistema de demo s'ha portat al patró time-based de Coffee Crisis Arcade Edition: 3 fitxers de demo distints (`demo1.bin`, `demo2.bin`, `demo3.bin`) es trien aleatòriament en cada execució, l'índex es calcula a partir del temps acumulat i el playback és immune a salts de frames. En saltar-la amb una tecla es torna correctament al títol amb el menú visible.
|
||||
- **Modes de presentació del canvas**. Nou cicle de presentació de la imatge a la finestra: `integer_scale` (escalat enter), `letterbox` (manté l'aspect ratio amb barres negres), `stretched` (omple la finestra deformant) i `overscan` (omple la finestra retallant). El valor antic `integer_scale` del config es migra automàticament.
|
||||
|
||||
### Hotkeys (notificacions visibles a la part superior del canvas)
|
||||
|
||||
| Tecla | Acció |
|
||||
|------:|-------|
|
||||
| F1 / F2 | Reduir / augmentar el zoom de la finestra |
|
||||
| F3 | Alternar pantalla completa |
|
||||
| F4 | Activar/desactivar post-procesat (shaders) |
|
||||
| F5 | Alternar entre shader PostFX i CrtPi |
|
||||
| F6 | Següent preset del shader actiu |
|
||||
| F7 | Activar/desactivar V-Sync |
|
||||
| F8 | Cicla el mode de presentació (integer_scale → letterbox → stretched → overscan) |
|
||||
| F10 | Mostrar/amagar comptador de FPS (cantonada superior dreta) |
|
||||
| F11 | Mostrar nom de l'app + versió + hash de git |
|
||||
| F12 | Pausa |
|
||||
| ESC | Eixir (doble pulsació per confirmar) |
|
||||
| BACKSPACE | Cancel·lar a menús |
|
||||
|
||||
Les notificacions tenen ara una paleta semàntica (informació, toggle, confirmació, èxit, perill) i un color més saturat (a mig camí entre pastel i color pur).
|
||||
|
||||
### Millores
|
||||
|
||||
- **Cap tecla de funció ni ESC fa "saltar" cap secció**. Logo, intro, instruccions, títol i demo només es passen amb tecles humanes (Enter, disparar, moviment, botons de gamepad) — les F1–F12 i ESC es reserven íntegrament per als hotkeys globals.
|
||||
- **Notificacions en mode overscan**. Quan el mode `overscan` retalla la franja superior del canvas segons l'aspect ratio de la finestra, les notificacions i el comptador de FPS es desplacen automàticament a la primera fila visible.
|
||||
- **Versió única de l'aplicació**. La cadena de versió ja només viu a `source/utils/defines.hpp`; CMake l'extreu via regex per al projecte i el Makefile l'usa per als noms dels release. F11 mostra `Coffee Crisis v2.4.0 (<git_hash>)`.
|
||||
- **Comptador de FPS** dibuixat a la part superior dreta en verd, recalcat cada segon de temps real.
|
||||
- **Confirmació d'eixida (ESC × 2)** amb finestra visual de confirmació en roig.
|
||||
- **Pausa amb compte enrere configurable** (`gameplay.pause_countdown` a `config.yaml`).
|
||||
- **Zoom màxim de la finestra detectat automàticament** segons la resolució del display.
|
||||
- **Paquet de recursos més robust**: `resources.pack` localitzat via `SDL_GetBasePath` amb fallback al filesystem.
|
||||
- **Build estandarditzada**: llista explícita de fonts en lloc de `GLOB_RECURSE`, `-Wextra -Wpedantic` activats i warnings netejats.
|
||||
- **`pre-commit` hooks** per `clang-format`, `clang-tidy` i `cppcheck`.
|
||||
|
||||
### Correccions de bugs
|
||||
|
||||
- Demo congelada en obrir-se per culpa d'un doble `DeltaTime::tick()` al títol (Game rebia `dt ≈ 0`).
|
||||
- Salt visual al fons diagonal del títol per posició inicial no ancorada al cicle de tile.
|
||||
- Rotació de la `PowerBall` perduda en passar per `Game::startAllBalloons` després del rellotge.
|
||||
- Pausa que es disparava amb el flanc residual de CANCEL/EXIT en entrar al menú.
|
||||
- Animació del jugador accelerada en monitors de 144 Hz (no propagava `dt_s` als sprites).
|
||||
- Sub-bucles aniats de pausa, game over, instruccions i demo aplanats a un únic loop SDL3.
|
||||
- WASM/Emscripten: reset en fer "exit", eliminades les opcions d'eixida, fix de fullscreen, mode `integer_scale=false` per defecte.
|
||||
- Windows: parsers de text amb finals de línia CRLF, headers SPV del PostFX regenerats.
|
||||
- `pack_resources` anava a la rel en comptes de `build/`.
|
||||
|
||||
### Canvis interns destacats
|
||||
|
||||
- **Pipeline SDL3 GPU + fallback `SDL_Renderer`**: shaders PostFX i CrtPi (Vulkan/Metal/D3D12), presets persistents en YAML, scanlines analítiques sense supersampling.
|
||||
- **Sistema d'opcions modern**: tot a `config.yaml` amb fkyaml; `postfx.yaml` i `crtpi.yaml` per als presets.
|
||||
- **Sistema d'àudio nou** (`Ja::` namespace, streaming d'OGG, tipus sense prefix `JA_`).
|
||||
- **API SDL3 Callbacks** (`SDL_AppInit`/`Iterate`/`Event`/`Quit`).
|
||||
- Migració a `enum class` per a Input::Action, Input::Device, Input::Repeat, Input::Disable, Fade::Type i Bullet::Kind.
|
||||
- Convencions `CamelCase` aplicades a tipus que encara duien `_t`/`_e` o eren niats sense format.
|
||||
- Singletons (Lang, Audio, Input, Resource) i sistema de loaders de recursos.
|
||||
- Migració d'estructura a `source/core/{audio,input,locale,rendering,resources,system}/` i `source/game/{entities,scenes,ui}/`.
|
||||
- Generació automàtica de `version.h` amb el hash curt de git.
|
||||
- `clang-format` i `clang-tidy` unificats amb la resta de projectes germans.
|
||||
Reference in New Issue
Block a user