Files
aee-arcade/source/core/scene/scene.hpp
T

25 lines
771 B
C++

#pragma once
#include <any>
#include <utility>
// Base de totes les escenes. La transició entre escenes va per
// `exit_request_`: l'escena hi posa un `ExitRequest` (definit a
// `game/scenes/scene_flow.hpp`) amagat dins d'un `std::any` perquè
// `core/scene/scene.hpp` no ha de saber dels tipus del joc. `Director`
// fa el `std::any_cast` al canvi de frame i construeix la nova escena.
class Scene {
public:
virtual ~Scene() = default;
virtual void update(int delta_ms) = 0;
virtual void render() = 0;
[[nodiscard]] auto wantsQuit() const -> bool { return wants_quit_; }
[[nodiscard]] auto takeExitRequest() -> std::any { return std::exchange(exit_request_, {}); }
protected:
bool wants_quit_{false};
std::any exit_request_;
};