#include <vector>
#include <string>
+
#include "statistics.hpp"
-#include "sector.hpp"
namespace lisp {
class Lisp;
}
+class TileSet;
+class Sector;
+
+/**
+ * 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;
std::string contact;
std::string license;
+ std::string filename;
std::string on_menukey_script;
- typedef std::vector<Sector*> Sectors;
- Sectors sectors;
- Statistics stats;
+ Sectors sectors;
+ Statistics stats;
+ TileSet *tileset;
+ bool free_tileset;
public:
Level();
size_t get_sector_count();
Sector* get_sector(size_t num);
+ 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;
- }
+ int get_total_secrets();
private:
void load_old_format(const lisp::Lisp& reader);