Files
aee/source/scenes/scene.hpp
Sergio Valor fe41919e1e clang-format
mogudes coses de config.yaml a debug.yaml
2026-04-16 16:46:18 +02:00

38 lines
1.3 KiB
C++

#pragma once
// Interfície base per a una escena (cinemàtica, menú, banner, etc.) del
// joc. Una escena és una unitat autònoma amb un `tick(delta_ms)` no
// bloquejant. El Director la fa avançar cada frame fins que `done()` és
// cert, i llavors consulta `nextState()` per decidir la següent.
//
// Contracte:
// - `tick(delta_ms)` no pot bloquejar ni cridar JD8_Flip — el caller
// s'encarrega de fer el flip després del tick.
// - `done()` es consulta just després de cada tick.
// - Els assets són propietat de l'escena (normalment via SurfaceHandle)
// i s'alliberen al destructor.
// - `onEnter()` es crida una vegada just abans del primer tick. És el
// moment bo per a arrancar música, disparar un fade-in, etc.
namespace scenes {
class Scene {
public:
virtual ~Scene() = default;
virtual void onEnter() {}
virtual void tick(int delta_ms) = 0;
virtual bool done() const = 0;
// Valor retornat al caller quan l'escena acaba — equivalent al int
// que retornaven les velles funcions `Go()` de ModuleSequence:
// 1 = continuar amb la següent escena segons info::ctx
// 0 = entrar al gameplay (ModuleGame)
// -1 = eixir del joc
virtual int nextState() const { return 1; }
};
} // namespace scenes