X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp%2FState.h;h=958e423c508b1dffd4d2a6562bb4ba90051894c1;hb=aa1a197e532673f0c4d33dee5bed27298c050d38;hp=471b44bd99ff0ba03025560fa95baabc9882039f;hpb=59d528aaa84a2210b0a357887853f534cfbea156;p=l2e.git diff --git a/src/app/State.h b/src/app/State.h index 471b44b..958e423 100644 --- a/src/app/State.h +++ b/src/app/State.h @@ -8,11 +8,12 @@ #ifndef APP_APPLICATIONSTATE_H_ #define APP_APPLICATIONSTATE_H_ -#include +#include "fwd.h" +#include "Timer.h" -namespace app { +#include -class Application; +namespace app { class State { @@ -21,14 +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; - - virtual void HandleEvent(const SDL_Event &) = 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 HandleEvents(const Input &) = 0; virtual void UpdateWorld(float deltaT) = 0; virtual void Render(SDL_Surface *) = 0; +public: + Timers &GraphicsTimers() { return graphicsTimers; } + Timers &PhysicsTimers() { return physicsTimers; } + +private: + Timers graphicsTimers; + Timers physicsTimers; + }; }