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();