]> git.localhorst.tv Git - l2e.git/blobdiff - src/app/State.h
new language, new compiler
[l2e.git] / src / app / State.h
index 19b6fe0475fbb340a81941d193ca2c01af69ff2b..31a4ae0462220a62e5c87d50f7d5920794e83d16 100644 (file)
@@ -1,7 +1,11 @@
 #ifndef APP_APPLICATIONSTATE_H_
 #define APP_APPLICATIONSTATE_H_
 
-#include "fwd.h"
+namespace app {
+       class Application;
+       class Input;
+}
+
 #include "Timer.h"
 
 #include <SDL.h>
@@ -31,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)
@@ -42,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.
@@ -59,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<Uint32> &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<float> &PhysicsTimers() { return physicsTimers; }
+       /// when the state is invisible (roughly).
+       Timers<Uint32> &PhysicsTimers() { return physicsTimers; }
 
 private:
        Application *ctrl;
        Timers<Uint32> graphicsTimers;
-       Timers<float> physicsTimers;
+       Timers<Uint32> physicsTimers;
+       Uint32 timestep;
 
 };
 
 }
 
-#endif /* APP_STATE_H_ */
+#endif