Reset play_time when level is restarted
[supertux.git] / src / level.hpp
index 1f988c8..eb3ba5c 100644 (file)
 
 #include <vector>
 #include <string>
-
-class Sector;
+#include "statistics.hpp"
+#include "sector.hpp"
 
 namespace lisp {
 class Lisp;
 }
 
+/**
+ * Represents a collection of Sectors running in a single GameSession.
+ *
+ * Each Sector in turn contains GameObjects, e.g. Badguys and Players.
+ */
 class Level
 {
 public:
   std::string name;
   std::string author;
+  std::string contact;
+  std::string license;
+  std::string on_menukey_script;
   typedef std::vector<Sector*> Sectors;
   Sectors sectors;
+  Statistics stats;
 
 public:
   Level();
@@ -59,8 +68,18 @@ public:
   size_t get_sector_count();
   Sector* get_sector(size_t num);
 
-  int get_total_badguys();
   int get_total_coins();
+  int get_total_badguys();
+
+  /** Get total number of GameObjects of given type */
+  template<class T> int get_total_count()
+  {
+    int total = 0;
+    for(Sectors::iterator i = sectors.begin(); i != sectors.end(); ++i) {
+      total += (*i)->get_total_count<T>();
+    }
+    return total;
+  }
 
 private:
   void load_old_format(const lisp::Lisp& reader);