X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp%2FState.cpp;h=2c8f0c32ad6f68a3bc452f01bf85ecca29dcba26;hb=3a86cc937e9fce68384efc08edb6d6ba101d12eb;hp=50b5bf601bc52c7027ce7408cc9410f3e767815d;hpb=7252571fb926a187c4c40e8f4eec718f16d63ffa;p=l2e.git diff --git a/src/app/State.cpp b/src/app/State.cpp index 50b5bf6..2c8f0c3 100644 --- a/src/app/State.cpp +++ b/src/app/State.cpp @@ -7,31 +7,59 @@ #include "State.h" +#include + +using std::domain_error; + namespace app { +State::State() +: ctrl(0) { + +} + State::~State() { } -void State::EnterState(Application &ctrl, SDL_Surface *screen) { - OnEnterState(ctrl, screen); +void State::EnterState(Application &c, SDL_Surface *screen) { + ctrl = &c; + OnEnterState(screen); } -void State::ExitState(Application &ctrl, SDL_Surface *screen) { - OnExitState(ctrl, screen); +void State::ExitState(Application &c, SDL_Surface *screen) { + OnExitState(screen); + ctrl = 0; } -void State::ResumeState(Application &ctrl, SDL_Surface *screen) { - OnResumeState(ctrl, screen); +void State::ResumeState(SDL_Surface *screen) { + OnResumeState(screen); } -void State::PauseState(Application &ctrl, SDL_Surface *screen) { - OnPauseState(ctrl, screen); +void State::PauseState(SDL_Surface *screen) { + OnPauseState(screen); } void State::Resize(int width, int height) { OnResize(width, height); } + +Application &State::Ctrl() { + if (ctrl) { + return *ctrl; + } else { + throw domain_error("call to app::State::Ctrl() without application context"); + } +} + +const Application &State::Ctrl() const { + if (ctrl) { + return *ctrl; + } else { + throw domain_error("call to app::State::Ctrl() without application context"); + } +} + }