add code to debug collision rectangles
[supertux.git] / src / player_status.hpp
index ce3dee0..0660d68 100644 (file)
 #define SUPERTUX_PLAYERSTATUS_H
 
 #include <assert.h>
+#include <memory>
 #include "lisp/lisp.hpp"
 #include "timer.hpp"
 #include "serializable.hpp"
 #include "sprite/sprite.hpp"
+#include "console.hpp"
 
 static const float BORDER_X = 10;
 static const float BORDER_Y = 10;
@@ -37,14 +39,13 @@ class DrawingContext;
  * This class memorizes player status between different game sessions (for
  * example when switching maps in the worldmap)
  */
-class PlayerStatus : public Serializable
+class PlayerStatus : public Serializable, public ConsoleCommandReceiver
 {
 public:
   PlayerStatus();
   ~PlayerStatus();
   void reset();     
-  void incLives();
-  void incCoins();
+  void add_coins(int count);
   void set_keys(int new_key);
 
   void write(lisp::Writer& writer);
@@ -53,8 +54,9 @@ public:
   void draw(DrawingContext& context);
   void draw_keys(DrawingContext& context);
 
+  bool consoleCommand(std::string command, std::vector<std::string> arguments); /**< callback from Console; return false if command was unknown, true otherwise */
+  
   int  coins;
-  int  lives;
   BonusType bonus;
 
   int score_multiplier;
@@ -75,11 +77,12 @@ private:
   PlayerStatus(const PlayerStatus& other);
   
   int  keys;
-  Sprite* key_iron;
-  Sprite* key_brass;
-  Sprite* key_bronze;
-  Sprite* key_silver;
-  Sprite* key_gold;
+  std::auto_ptr<Sprite> tux_life;
+  std::auto_ptr<Sprite> key_iron;
+  std::auto_ptr<Sprite> key_brass;
+  std::auto_ptr<Sprite> key_bronze;
+  std::auto_ptr<Sprite> key_silver;
+  std::auto_ptr<Sprite> key_gold;
 };
 
 // global player state