#include <map>
#include <string>
-#include "screen/texture.h"
-#include "lispreader.h"
-#include "musicref.h"
-
-class Tile;
-
-/** This type holds meta-information about a level-subset.
- It could be extended to handle manipulation of subsets. */
-class LevelSubset
-{
-public:
- LevelSubset();
- ~LevelSubset();
-
- static void create(const std::string& subset_name);
- void load(const char* subset);
- void save();
-
- std::string get_level_filename(unsigned int i);
-
- std::string name;
- std::string title;
- std::string description;
- Surface* image;
- int levels;
-
-private:
- void parse(lisp_object_t* cursor);
-};
+using namespace SuperTux;
class Sector;
+namespace SuperTux {
+class LispReader;
+}
+
class Level
{
public:
+ enum EndSequenceType{
+ NONE_ENDSEQ_ANIM,
+ FIREWORKS_ENDSEQ_ANIM
+ };
+
std::string name;
std::string author;
- int time_left;
+ int timelimit;
typedef std::map<std::string, Sector*> Sectors;
Sectors sectors;
+ EndSequenceType end_sequence_type;
public:
Level();
void load(const std::string& filename);
void save(const std::string& filename);
+ static void create(const std::string& filename);
+
+ EndSequenceType get_end_sequence_type() const
+ { return end_sequence_type; }
const std::string& get_name() const
{ return name; }
const std::string& get_author() const
{ return author; }
+ /** Flips the level vertically */
+ void do_vertical_flip();
+
void add_sector(Sector* sector);
Sector* get_sector(const std::string& name);
+ Sector* get_next_sector(const Sector* sector);
+ Sector* get_previous_sector(const Sector* sector);
+
+ int get_total_sectors();
+
+ int get_total_badguys();
+ int get_total_coins();
+
private:
void load_old_format(LispReader& reader);
};