X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp%2FState.h;h=41af536280c92acfff4de02172123dbdf56ad343;hb=ede708d4e15a34a4443727fc64fd28946fcbeb41;hp=b4c26d047cd7c88429e62d56a164be048fdcd7aa;hpb=bce16ed519add0d5398d504d2554395c43c74571;p=l2e.git diff --git a/src/app/State.h b/src/app/State.h index b4c26d0..41af536 100644 --- a/src/app/State.h +++ b/src/app/State.h @@ -8,42 +8,54 @@ #ifndef APP_APPLICATIONSTATE_H_ #define APP_APPLICATIONSTATE_H_ +#include "fwd.h" #include "Timer.h" #include namespace app { -class Application; -class Input; - +/// Application state base class for use with app::Application. class State { public: virtual ~State() { }; public: - /// do some setup - /// called when the state first enters the stack + /// 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. /// @param ctrl the Application running the state virtual void EnterState(Application &ctrl, SDL_Surface *screen) = 0; - /// do some cleanup - /// called when the state is popped from the stack + /// 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 + /// Called when the state becomes the active one. virtual void ResumeState(Application &ctrl, SDL_Surface *screen) = 0; - /// called when the state becomes inactive + /// Called when the state becomes inactive. virtual void PauseState(Application &ctrl, SDL_Surface *screen) = 0; - /// adapt the state's graphics to given dimensions + /// Adapt the state's graphics to given dimensions. + /// NOTE: currently, this is only called for the stack top and not + /// propagated on stack changes. + /// Will be fixed soom ;). virtual void Resize(int width, int height) = 0; - virtual void HandleInput(const Input &) = 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 + /// when the state is visible (roughly). Timers &GraphicsTimers() { return graphicsTimers; } + /// Timers handle intended for graphics, sync'ed with world time. + /// These timers are only updated for the stack top and thus appear paused + /// when the state is visible (roughly). Timers &PhysicsTimers() { return physicsTimers; } private: