Replaced Gnome.AppBar with a dialog (stored in .glade file)
[supertux.git] / src / statistics.hpp
index 5419f5b..a6c6c37 100644 (file)
 #ifndef SUPERTUX_STATISTICS_H
 #define SUPERTUX_STATISTICS_H
 
-#include "timer.hpp"
-#include "lisp/lisp.hpp"
-#include "lisp/writer.hpp"
-#include "video/surface.hpp"
-#include "video/drawing_context.hpp"
+#include <squirrel.h>
+#include "video/color.hpp"
+
+namespace lisp { class Writer; }
+namespace lisp { class Lisp; }
+class Surface;
+class DrawingContext;
 
 /** This class is a layer between level and worldmap to keep
  *  track of stuff like scores, and minor, but funny things, like
  *  number of jumps and stuff */
 class Statistics
-{ 
+{
+  static Color header_color;
+  static Color text_color;
 public:
   int coins; /**< coins collected */
   int total_coins; /**< coins in level */
@@ -47,24 +51,38 @@ public:
   ~Statistics();
 
   /// read statistics from lisp file
-  void parse(const lisp::Lisp& lisp);
+  //void parse(const lisp::Lisp& lisp);
   /// write statistics to lisp file
-  void write(lisp::Writer& writer);
+  //void write(lisp::Writer& writer);
+
+  /**
+   * serialize statistics object as squirrel table "statistics"
+   */
+  void serialize_to_squirrel(HSQUIRRELVM vm);
+
+  /**
+   * unserialize statistics object from squirrel table "statistics"
+   */
+  void unserialize_from_squirrel(HSQUIRRELVM vm);
 
   void draw_worldmap_info(DrawingContext& context); /**< draw worldmap stat HUD */
-  void draw_message_info(DrawingContext& context, std::string title); /**< draw stats at level start */
   void draw_endseq_panel(DrawingContext& context, Statistics* best_stats, Surface* backdrop); /**< draw panel shown during level's end sequence */
 
+  void zero(); /**< Set stats to zero */
   void reset(); /**< Set stats (but not totals) to zero */
-  void merge(Statistics& stats); /**< Given another Statistics object finds the best of each one */
+  void merge(const Statistics& stats); /**< Given another Statistics object finds the best of each one */
   void operator+=(const Statistics& o); /**< Add two Statistics objects */
 
   void declare_invalid(); /**< marks statistics as invalid for their entire lifetime (e.g. after cheating). Invalid statistics will not be merged or drawn. */
+  
+  static std::string coins_to_string(int coins, int total_coins);
+  static std::string frags_to_string(int badguys, int total_badguys);
+  static std::string time_to_string(float time);
+  static std::string secrets_to_string(int secrets, int total_secrets);
 
 private:
-  bool valid; /**< stores whether this statistics can be trusted */
-  Timer timer; /**< for draw_worldmap_info: time until switching to next stat */
-  int display_stat; /**< for draw_worldmap_info: which stat is currently displayed */
+  bool valid; /**< stores whether these statistics can be trusted */
+
 };
 
 #endif /*SUPERTUX_STATISTICS_H*/