refactor: migració a l'arquitectura SDL3 Callback API

Substitueix el bucle blocant main() → Director::run() → escena::run() per
SDL_AppInit/Iterate/Event/Quit. Cada escena implementa ara iterate() (un frame)
i handleEvent() (un event) sota una interfície base Scene.

- Director gestiona l'escena activa i les transicions via switchToActiveScene()
- Setup/cleanup que estava al voltant del while de run() mogut a ctor/dtor
  (música de Game/Ending/Ending2, volum de LoadingScreen)
- GlobalEvents ja no processa SDL_EVENT_QUIT (ho fa Director::handleEvent)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-13 08:49:19 +02:00
parent 714de067c8
commit c32a880b6a
21 changed files with 319 additions and 362 deletions

View File

@@ -0,0 +1,13 @@
#pragma once
#include <SDL3/SDL.h>
// Interfície base per a totes les escenes del joc.
// Cada escena concreta implementa iterate() (un frame) i handleEvent() (un event).
// Director crida aquests mètodes des de SDL_AppIterate / SDL_AppEvent.
class Scene {
public:
virtual ~Scene() = default;
virtual void iterate() = 0;
virtual void handleEvent(const SDL_Event& event) = 0;
};