X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fworldmap.h;h=80585ea226b66f255347f4f3e7820c9214a76b87;hb=c43ea9b0d5372718888138ea2cc4abcd5acb5299;hp=4bf2b69ceb96071c1a84e5dd312df9fd47d86ef7;hpb=6e843b1780f62f45b7021bd8c38181aa211588ee;p=supertux.git diff --git a/src/worldmap.h b/src/worldmap.h index 4bf2b69ce..80585ea22 100644 --- a/src/worldmap.h +++ b/src/worldmap.h @@ -25,8 +25,10 @@ #include "math/vector.h" #include "audio/musicref.h" #include "video/screen.h" +#include "lisp/lisp.h" #include "statistics.h" #include "timer.h" +#include "tile_manager.h" namespace SuperTux { class Menu; @@ -39,7 +41,7 @@ namespace WorldMapNS { enum WorldMapMenuIDs { MNID_RETURNWORLDMAP, MNID_QUITWORLDMAP - }; +}; // For one way tiles enum { @@ -48,47 +50,6 @@ enum { SOUTH_NORTH_WAY, EAST_WEST_WAY, WEST_EAST_WAY - }; - -class Tile -{ -public: - Tile(); - ~Tile(); - - void draw(DrawingContext& context, Vector pos); - - std::vector images; - float anim_fps; - - // Directions in which Tux is allowed to walk from this tile - bool north; - bool east; - bool south; - bool west; - - /** One way tile */ - int one_way; - - /** Stop on this tile or walk over it? */ - bool stop; - - /** When set automatically turn directions when walked over such a - tile (ie. walk smoothly a curve) */ - bool auto_walk; -}; - -class TileManager -{ -private: - typedef std::vector Tiles; - Tiles tiles; - -public: - TileManager(); - ~TileManager(); - - Tile* get(int i); }; enum Direction { D_NONE, D_WEST, D_EAST, D_NORTH, D_SOUTH }; @@ -265,7 +226,7 @@ public: void draw(DrawingContext& context, const Vector& offset); Vector get_next_tile(Vector pos, Direction direction); - Tile* at(Vector pos); + const Tile* at(Vector pos); WorldMap::Level* at_level(); WorldMap::SpecialTile* at_special_tile(); @@ -296,6 +257,7 @@ public: private: void on_escape_press(); + void parse_special_tiles(const lisp::Lisp* lisp); }; } // namespace WorldMapNS