X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fworldmap.h;h=a96c4ff27b9592714e1cfbccd5305b97e6c7956c;hb=997685a947eaa0b269873e5956908b734cde1d76;hp=b347bc928c55f03ef9774afce63a8b23bca3e648;hpb=7d3e916fd2af697e7aa24e739d9adfd30aeb58a5;p=supertux.git diff --git a/src/worldmap.h b/src/worldmap.h index b347bc928..a96c4ff27 100644 --- a/src/worldmap.h +++ b/src/worldmap.h @@ -17,12 +17,14 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -#ifndef HEADER_WORLDMAP_HXX -#define HEADER_WORLDMAP_HXX +#ifndef SUPERTUX_WORLDMAP_H +#define SUPERTUX_WORLDMAP_H #include #include +#include + namespace WorldMapNS { struct Point @@ -44,16 +46,9 @@ struct Point int y; }; -struct Level -{ - int x; - int y; - std::string name; -}; - struct Tile { - texture_type sprite; + Surface* sprite; // Directions in which Tux is allowed to walk from this tile bool north; @@ -88,7 +83,7 @@ class Tux { private: WorldMap* worldmap; - texture_type sprite; + Surface* sprite; Direction input_direction; Direction direction; @@ -102,12 +97,13 @@ private: public: Tux(WorldMap* worldmap_); - void draw(); + void draw(const Point& offset); void update(float delta); void set_direction(Direction d) { input_direction = d; } bool is_moving() const { return moving; } + Point get_pos(); Point get_tile_pos() const { return tile_pos; } void set_tile_pos(Point p) { tile_pos = p; } }; @@ -118,7 +114,10 @@ class WorldMap private: Tux* tux; - texture_type level_sprite; + Surface* level_sprite; + Surface* leveldot_green; + Surface* leveldot_red; + bool quit; std::string name; @@ -128,6 +127,14 @@ private: int width; int height; + struct Level + { + int x; + int y; + std::string name; + bool solved; + }; + typedef std::vector Levels; Levels levels; @@ -136,6 +143,9 @@ private: Direction input_direction; bool enter_level; + Point offset; + + void draw_status(); public: WorldMap(); ~WorldMap(); @@ -151,11 +161,16 @@ public: void update(); /** Draw one frame */ - void draw(); + void draw(const Point& offset); Point get_next_tile(Point pos, Direction direction); Tile* at(Point pos); - bool path_ok(Direction direction, Point old_pos, Point* new_pos); + + /** Check if it is possible to walk from \a pos into \a direction, + if possible, write the new position to \a new_pos */ + bool path_ok(Direction direction, Point pos, Point* new_pos); + + void savegame(const std::string& filename); }; } // namespace WorldMapNS @@ -166,4 +181,4 @@ void worldmap_run(); /* Local Variables: */ /* mode:c++ */ -/* End */ +/* End: */