// $Id$
-//
+//
// SuperTux
-// Copyright (C) 2004 SuperTux Development Team, see AUTHORS for details
+// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
-//
+//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
#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;
- std::string extro_music;
- float extro_length;
- 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);