X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fapp%2FState.h;h=31a4ae0462220a62e5c87d50f7d5920794e83d16;hb=60e0b9e8ec660a4f6b8e500bf0b77a31bb817b45;hp=4e1fd7fe2bf5feadc90bfcf4edd6acd97f3dd166;hpb=5ca18f73987fb3935ab34654cbbecf5eca4704cb;p=l2e.git diff --git a/src/app/State.h b/src/app/State.h index 4e1fd7f..31a4ae0 100644 --- a/src/app/State.h +++ b/src/app/State.h @@ -1,14 +1,11 @@ -/* - * State.h - * - * Created on: Apr 8, 2012 - * Author: holy - */ - #ifndef APP_APPLICATIONSTATE_H_ #define APP_APPLICATIONSTATE_H_ -#include "fwd.h" +namespace app { + class Application; + class Input; +} + #include "Timer.h" #include @@ -38,10 +35,13 @@ public: /// 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; + virtual void UpdateWorld(Uint32 deltaMs) = 0; /// Draw a picture of the world. virtual void Render(SDL_Surface *) = 0; + /// Number of milliseconds per simulation frame. + Uint32 Timestep() const { return timestep; } + protected: /// Get a handle to the application this state is running on. /// Do not call this while the state is off the stack (e.g. in c'tor/d'tor) @@ -49,6 +49,9 @@ protected: Application &Ctrl(); const Application &Ctrl() const; + /// Set the number of milliseconds per simulation frame. + void Timestep(Uint32 t) { timestep = t; } + private: /// Do some setup that needs an application and/or screen handle and thus /// can not be done by the constructor. @@ -66,26 +69,27 @@ private: /// 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 ;). + /// Will be fixed sometime ;). virtual void OnResize(int width, int height) = 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). + /// when the state is invisible (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; } + /// when the state is invisible (roughly). + Timers &PhysicsTimers() { return physicsTimers; } private: Application *ctrl; Timers graphicsTimers; - Timers physicsTimers; + Timers physicsTimers; + Uint32 timestep; }; } -#endif /* APP_STATE_H_ */ +#endif