]> git.tdb.fi Git - libs/game.git/blobdiff - source/game/director.h
Add stage activation and events
[libs/game.git] / source / game / director.h
index 24ef6341caaf7e93e784ccc7bde1176621ef7e55..9d221b0678345a8def4c06b5936c3bee95ebe865 100644 (file)
@@ -5,6 +5,9 @@
 #include <vector>
 #include <msp/time/timedelta.h>
 #include <msp/time/timestamp.h>
+#include "eventbus.h"
+#include "events.h"
+#include "eventsource.h"
 
 namespace Msp::Game {
 
@@ -12,8 +15,14 @@ class Stage;
 
 class Director
 {
+public:
+       using EventSource = Game::EventSource<Events::StageCreated, Events::StageActivated, Events::StageDeactivated>;
+
 private:
+       EventBus event_bus;
+       EventSource event_source;
        std::vector<std::unique_ptr<Stage>> stages;
+       Stage *active_stage = nullptr;
        Time::TimeStamp last_tick;
        Time::TimeDelta stepsize = Time::sec/60;
        Time::TimeDelta backlog;
@@ -21,7 +30,9 @@ private:
        unsigned max_backlog_steps = 600;
 
 public:
+       Director();
        Stage &create_stage();
+       void activate_stage(Stage &);
 
        void tick();
 };