X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fworldmap.h;h=a96c4ff27b9592714e1cfbccd5305b97e6c7956c;hb=997685a947eaa0b269873e5956908b734cde1d76;hp=4767c2e4db251f3670c002440ece3db3269f4a04;hpb=3181262386659262786395df341544a24c667caf;p=supertux.git diff --git a/src/worldmap.h b/src/worldmap.h index 4767c2e4d..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 @@ -46,7 +48,7 @@ struct Point struct Tile { - texture_type sprite; + Surface* sprite; // Directions in which Tux is allowed to walk from this tile bool north; @@ -81,7 +83,7 @@ class Tux { private: WorldMap* worldmap; - texture_type sprite; + Surface* sprite; Direction input_direction; Direction direction; @@ -95,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; } }; @@ -111,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; @@ -126,6 +132,7 @@ private: int x; int y; std::string name; + bool solved; }; typedef std::vector 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: */