X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fworldmap.h;h=f44ba506064c68736cfd0c97da02bd06a50adbd0;hb=29453e7cce40aa40726c3c31b0ce893fe18d6e1a;hp=287d0552524e87c11023aec2affa9fa8af45decd;hpb=2236c2d6e68a9a3bbff4dd2953f868ee2aae8f6a;p=supertux.git diff --git a/src/worldmap.h b/src/worldmap.h index 287d05525..f44ba5060 100644 --- a/src/worldmap.h +++ b/src/worldmap.h @@ -158,9 +158,32 @@ private: public: struct SpecialTile { - int x; - int y; - std::string level_name; + 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; @@ -176,16 +199,6 @@ public: successfully completed */ std::string extro_filename; - /** Position to swap to player */ - int teleport_dest_x, teleport_dest_y; - - /** Message to show in the Map */ - std::string map_message; - bool passive_message; - - /** Hide special tile */ - bool invisible; - /** Go to this world */ std::string next_worldmap; @@ -200,12 +213,6 @@ public: bool east; bool south; bool west; - - /** 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; }; /** Variables to deal with the passive map messages */ @@ -218,6 +225,9 @@ private: typedef std::vector SpecialTiles; SpecialTiles special_tiles; + typedef std::vector Levels; + Levels levels; + MusicRef song; bool enter_level; @@ -225,7 +235,7 @@ private: Vector offset; std::string savegame_file; - void get_level_title(SpecialTile& special_tile); + void get_level_title(Level& level); void draw_status(DrawingContext& context); @@ -255,6 +265,8 @@ public: Vector get_next_tile(Vector pos, Direction direction); Tile* at(Vector pos); + + WorldMap::Level* at_level(); WorldMap::SpecialTile* at_special_tile(); /** Check if it is possible to walk from \a pos into \a direction,