]> git.tdb.fi Git - libs/game.git/blobdiff - source/game/director.cpp
Put Director's destructor in the .cpp file
[libs/game.git] / source / game / director.cpp
index 741965bc290988a7f73210bf453d5cb081533f98..b06dff4d4c0045c49a98840831071e7845030603 100644 (file)
@@ -7,12 +7,30 @@ using namespace std;
 
 namespace Msp::Game {
 
+Director::Director(DataFile::Collection &r):
+       resources(r),
+       event_source(event_bus)
+{ }
+
+// Hide ~unique_ptr<Stage> from the header
+Director::~Director()
+{ }
+
 Stage &Director::create_stage()
 {
-       stages.emplace_back(std::make_unique<Stage>());
+       stages.emplace_back(std::make_unique<Stage>(std::ref(resources)));
+       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();