]> git.localhorst.tv Git - l2e.git/blobdiff - src/app/State.h
wrapped some virtual State methods in non-virtual calls
[l2e.git] / src / app / State.h
index 6783d76052c41f17a2b1d8ea24e9b9ffccf42b2a..a84afde9941a26b0809cdd20c884f9e6ab0920be 100644 (file)
@@ -19,9 +19,29 @@ namespace app {
 class State {
 
 public:
-       virtual ~State() { };
+       virtual ~State();
 
 public:
+       /// Called by Application when pushing this state.
+       void EnterState(Application &ctrl, SDL_Surface *screen);
+       /// Called by Application when popping this state.
+       void ExitState(Application &ctrl, SDL_Surface *screen);
+       /// Called by Application when this state becomes the top state.
+       void ResumeState(Application &ctrl, SDL_Surface *screen);
+       /// Called by Application when this state no longer is the top state.
+       void PauseState(Application &ctrl, SDL_Surface *screen);
+
+       /// Called by Application on SDL window resize events.
+       void Resize(int width, int height);
+
+       /// Handle interactive events such as input and timers.
+       virtual void HandleEvents(const Input &) = 0;
+       /// Update the time-dependant world representation.
+       virtual void UpdateWorld(float deltaT) = 0;
+       /// Draw a picture of the world.
+       virtual void Render(SDL_Surface *) = 0;
+
+private:
        /// Do some setup that needs an application and/or screen handle and thus
        /// can not be done by the constructor.
        /// Called when the state first enters the stack.
@@ -41,13 +61,6 @@ public:
        ///       Will be fixed soom ;).
        virtual void OnResize(int width, int height) = 0;
 
-       /// Handle interactive events such as input and timers.
-       virtual void HandleEvents(const Input &) = 0;
-       /// Update the time-dependant world representation.
-       virtual void UpdateWorld(float deltaT) = 0;
-       /// Draw a picture of the world.
-       virtual void Render(SDL_Surface *) = 0;
-
 public:
        /// Timers handle intended for graphics, sync'ed with render time.
        /// These timers are only updated for the stack top and thus appear paused