added object remove_listener so that you can get a message if some objects are remove...
[supertux.git] / lib / special / timer.h
index 734c896..1866a2c 100644 (file)
 #ifndef SUPERTUX_TIMER_H
 #define SUPERTUX_TIMER_H
 
-extern unsigned int st_pause_ticks, st_pause_count;
-
-unsigned int st_get_ticks(void);
-void st_pause_ticks_init(void);
-void st_pause_ticks_start(void);
-void st_pause_ticks_stop(void);
-bool st_pause_ticks_started(void);
-
-class Timer
-{
- public:
-  unsigned int period;
-  unsigned int time;
-  unsigned int (*get_ticks) (void);  
-
- public:
-  Timer();
-  
-  void init(bool st_ticks);
-  void start(unsigned int period);
-  void stop();
-
-  /*======================================================================
-    return: NO  = the timer is not started
-    or it is over
-    YES = otherwise
-    ======================================================================*/
-  int check();
-  int started();
-
-  /*======================================================================
-    return: the time left (in millisecond)
-    note  : the returned value can be negative
-    ======================================================================*/
-  int get_left();
-
-  int  get_gone();
-  void fwrite(FILE* fi);
-  void fread(FILE* fi);
-};
+#include <cstdlib>
+
+namespace SuperTux
+  {
+
+  class Ticks
+    {
+    public:
+      /// Time a game is running. (Non-pause mode, etc.)
+      static unsigned int get();
+
+      static void pause_init();
+      static void pause_start();
+      static void pause_stop();
+      static bool pause_started();
+
+    private:
+      static unsigned int pause_ticks;
+      static unsigned int pause_count;
+
+    };
+
+  /// Timer
+  /** This class can be used as stop watch
+      for example. It's also possible to calculate
+      frames per seconds and things like that with it.
+      It's a general timing class, but it
+      can esspecially be used together with Ticks::get(). */
+  class Timer
+    {
+    public:
+      unsigned int period;
+      unsigned int time;
+      unsigned int (*get_ticks) (void);
+
+    public:
+      Timer();
+
+      /// Initialize the timer.
+      /** @param st_ticks: If true internally Ticks::get() is used, else SDL_GetTicks() is used. */
+      void init(bool game_ticks);
+
+      /// Start the timer with the given period (in ms).
+      void start(unsigned int period);
+
+      /// Stop the timer.
+      void stop();
+
+      /// Check if the timer is started and within its period.
+      /** If one of these requirements isn't the case the timer
+          is automatically reseted. */
+      int check();
+
+      /// Is the timer started?
+      int started();
+
+      /// Get time left until the last timing period is finished.
+      /** The returned value can be negative. */
+      int get_left();
+
+      /// Get the gone time, since last timer start.
+      /** The returned value can be negative. */
+      int  get_gone();
+
+      /// Write the timer value to a file (For save games in example).
+      void fwrite(FILE* fi);
+      /// Read a timer value from a file (From save games in example).
+      void fread(FILE* fi);
+    };
+
+} //namespace SuperTux
 
 #endif /*SUPERTUX_TIMER_H*/