+
+ int start_x;
+ int start_y;
+
+ TileManager* tile_manager;
+
+public:
+ struct SpecialTile
+ {
+ Vector pos;
+
+ /** Optional flags: */
+
+ /** Position to swap to player */
+ Vector teleport_dest;
+
+ /** Message to show in the Map */
+ std::string map_message;
+ bool passive_message;
+
+ /** Hide special tile */
+ bool invisible;
+
+ /** Only applies actions (ie. passive messages) when going to that direction */
+ bool apply_action_north;
+ bool apply_action_east;
+ bool apply_action_south;
+ bool apply_action_west;
+ };
+
+ struct Level
+ {
+ Vector pos;
+
+ std::string name;
+ std::string title;
+ bool solved;
+
+ /** Statistics for level tiles */
+ Statistics statistics;
+
+ /** Optional flags: */
+
+ /** Check if this level should be vertically flipped */
+ bool vertical_flip;
+
+ /** Filename of the extro text to show once the level is
+ successfully completed */
+ std::string extro_filename;
+
+ /** Go to this world */
+ std::string next_worldmap;
+
+ /** Quit the worldmap */
+ bool quit_worldmap;
+
+ /** If false, disables the auto walking after finishing a level */
+ bool auto_path;
+
+ // Directions which are walkable from this level
+ bool north;
+ bool east;
+ bool south;
+ bool west;
+ };
+
+ /** Variables to deal with the passive map messages */
+ Timer2 passive_message_timer;
+ std::string passive_message;
+
+private:
+ std::string map_filename;
+
+ typedef std::vector<SpecialTile> SpecialTiles;
+ SpecialTiles special_tiles;