#include <vector>
#include <string>
-
-class Sector;
+#include "statistics.hpp"
+#include "sector.hpp"
namespace lisp {
class Lisp;
}
+class TileSet;
+
+/**
+ * Represents a collection of Sectors running in a single GameSession.
+ *
+ * Each Sector in turn contains GameObjects, e.g. Badguys and Players.
+ */
class Level
{
public:
+ typedef std::vector<Sector*> Sectors;
+
std::string name;
std::string author;
- typedef std::vector<Sector*> Sectors;
- Sectors sectors;
+ std::string contact;
+ std::string license;
+ std::string on_menukey_script;
+ Sectors sectors;
+ Statistics stats;
+ TileSet *tileset;
+ bool free_tileset;
public:
Level();
size_t get_sector_count();
Sector* get_sector(size_t num);
- int get_total_badguys();
+ const TileSet *get_tileset() const
+ { return tileset; }
+
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);