X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgame%2Fdirector.h;h=05be9f7172c653bd04a9a01f72920a42e123b665;hb=41fa4483d8f017175800992d8fdacd7ee312d0c3;hp=24ef6341caaf7e93e784ccc7bde1176621ef7e55;hpb=248d62f7240d342982ade65a510be912b867fe49;p=libs%2Fgame.git diff --git a/source/game/director.h b/source/game/director.h index 24ef634..05be9f7 100644 --- a/source/game/director.h +++ b/source/game/director.h @@ -3,8 +3,12 @@ #include #include +#include #include #include +#include "eventbus.h" +#include "events.h" +#include "eventsource.h" namespace Msp::Game { @@ -12,8 +16,15 @@ class Stage; class Director { +public: + using EventSource = Game::EventSource; + private: + DataFile::Collection &resources; + EventBus event_bus; + EventSource event_source; std::vector> stages; + Stage *active_stage = nullptr; Time::TimeStamp last_tick; Time::TimeDelta stepsize = Time::sec/60; Time::TimeDelta backlog; @@ -21,7 +32,16 @@ private: unsigned max_backlog_steps = 600; public: + Director(DataFile::Collection &); + + DataFile::Collection &get_resources() const { return resources; } + EventBus &get_event_bus() { return event_bus; } + EventSource &get_event_source() { return event_source; } + const std::vector> &get_stages() const { return stages; } + Stage &create_stage(); + void activate_stage(Stage &); + Stage *get_active_stage() const { return active_stage; } void tick(); };