3 #include <msp/game/events.h>
4 #include <msp/game/stage.h>
9 namespace Msp::GameView {
11 Presenter::Presenter(Game::Director &d, GL::View &v):
14 resources(director.get_resources()),
15 event_observer(director.get_event_bus())
17 event_observer.observe<Game::Events::StageActivated>([this](auto &e){ stage_activated(e); });
19 if(Game::Stage *active_stage = director.get_active_stage())
20 stage_activated({ *active_stage });
23 Presenter::~Presenter()
25 for(Renderer *r: renderers)
26 r->get_stage().remove_system(*r);
29 void Presenter::stage_activated(const Game::Events::StageActivated &event)
31 if(!event.stage.get_system<Renderer>())
32 renderers.push_back(&event.stage.add_system<Renderer>(ref(gl_view)));
35 } // namespace Msp::GameView