aadc49b781505336bab80bd544e78033219713ec
[supertux.git] / src / supertux / level.hpp
1 //  SuperTux
2 //  Copyright (C) 2006 Matthias Braun <matze@braunis.de>
3 //
4 //  This program is free software: you can redistribute it and/or modify
5 //  it under the terms of the GNU General Public License as published by
6 //  the Free Software Foundation, either version 3 of the License, or
7 //  (at your option) any later version.
8 //
9 //  This program is distributed in the hope that it will be useful,
10 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
11 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 //  GNU General Public License for more details.
13 //
14 //  You should have received a copy of the GNU General Public License
15 //  along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17 #ifndef HEADER_SUPERTUX_SUPERTUX_LEVEL_HPP
18 #define HEADER_SUPERTUX_SUPERTUX_LEVEL_HPP
19
20 #include "supertux/statistics.hpp"
21 #include "util/reader_fwd.hpp"
22
23 class TileSet;
24 class Sector;
25
26 /**
27  * Represents a collection of Sectors running in a single GameSession.
28  *
29  * Each Sector in turn contains GameObjects, e.g. Badguys and Players.
30  */
31 class Level
32 {
33 public:
34   typedef std::vector<Sector*> Sectors;
35
36   std::string name;
37   std::string author;
38   std::string contact;
39   std::string license;
40   std::string filename;
41   std::string on_menukey_script;
42   Sectors     sectors;
43   Statistics  stats;
44   float       target_time;
45   TileSet    *tileset;
46   bool        free_tileset;
47
48 public:
49   Level();
50   ~Level();
51
52   // loads a levelfile
53   void load(const std::string& filename);
54
55   const std::string& get_name() const
56   { return name; }
57
58   const std::string& get_author() const
59   { return author; }
60
61   void add_sector(Sector* sector);
62
63   Sector* get_sector(const std::string& name);
64
65   size_t get_sector_count();
66   Sector* get_sector(size_t num);
67
68   const TileSet *get_tileset() const
69   { return tileset; }
70
71   int get_total_coins();
72   int get_total_badguys();
73   int get_total_secrets();
74
75 private:
76   void load_old_format(const Reader& reader);
77
78 private:
79   Level(const Level&);
80   Level& operator=(const Level&);
81 };
82
83 #endif /*SUPERTUX_LEVEL_H*/
84
85 /* EOF */