]> git.localhorst.tv Git - l2e.git/blobdiff - src/app/State.h
added forwarding headers
[l2e.git] / src / app / State.h
index efee32ba2ab0f3a3001dbbe9944ab9d8f44a58c3..958e423c508b1dffd4d2a6562bb4ba90051894c1 100644 (file)
@@ -8,12 +8,13 @@
 #ifndef APP_APPLICATIONSTATE_H_
 #define APP_APPLICATIONSTATE_H_
 
+#include "fwd.h"
+#include "Timer.h"
+
 #include <SDL.h>
 
 namespace app {
 
-class Application;
-
 class State {
 
 public:
@@ -21,17 +22,32 @@ public:
 
 public:
        /// do some setup
+       /// called when the state first enters the stack
        /// @param ctrl the Application running the state
        virtual void EnterState(Application &ctrl, SDL_Surface *screen) = 0;
-       virtual void ExitState() = 0;
+       /// do some cleanup
+       /// called when the state is popped from the stack
+       virtual void ExitState(Application &ctrl, SDL_Surface *screen) = 0;
+       /// called when the state becomes the active one
+       virtual void ResumeState(Application &ctrl, SDL_Surface *screen) = 0;
+       /// called when the state becomes inactive
+       virtual void PauseState(Application &ctrl, SDL_Surface *screen) = 0;
 
        /// adapt the state's graphics to given dimensions
        virtual void Resize(int width, int height) = 0;
 
-       virtual void HandleEvent(const SDL_Event &) = 0;
+       virtual void HandleEvents(const Input &) = 0;
        virtual void UpdateWorld(float deltaT) = 0;
        virtual void Render(SDL_Surface *) = 0;
 
+public:
+       Timers<Uint32> &GraphicsTimers() { return graphicsTimers; }
+       Timers<float> &PhysicsTimers() { return physicsTimers; }
+
+private:
+       Timers<Uint32> graphicsTimers;
+       Timers<float> physicsTimers;
+
 };
 
 }