]> git.tdb.fi Git - libs/game.git/blobdiff - source/game/director.cpp
Add stage activation and events
[libs/game.git] / source / game / director.cpp
index 741965bc290988a7f73210bf453d5cb081533f98..28d86e7d142e23142839e186b8b4613c6299d8f6 100644 (file)
@@ -7,12 +7,25 @@ using namespace std;
 
 namespace Msp::Game {
 
+Director::Director():
+       event_source(event_bus)
+{ }
+
 Stage &Director::create_stage()
 {
        stages.emplace_back(std::make_unique<Stage>());
+       event_source.emit<Events::StageCreated>(std::ref(*stages.back()));
        return *stages.back();
 }
 
+void Director::activate_stage(Stage &s)
+{
+       if(active_stage)
+               event_source.emit<Events::StageDeactivated>(std::ref(s));
+       active_stage = &s;
+       event_source.emit<Events::StageActivated>(std::ref(s));
+}
+
 void Director::tick()
 {
        Time::TimeStamp now = Time::now();