-/*
- * State.cpp
- *
- * Created on: Oct 17, 2012
- * Author: holy
- */
-
#include "State.h"
+#include <stdexcept>
+
+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");
+ }
+}
+
}