+enum Direction { NONE, WEST, EAST, NORTH, SOUTH };
+
+class WorldMap;
+
+class Tux
+{
+private:
+ WorldMap* worldmap;
+ Surface* sprite;
+
+ Direction input_direction;
+ Direction direction;
+ Point tile_pos;
+ /** Length by which tux is away from its current tile, length is in
+ input_direction direction */
+ float offset;
+ bool moving;
+
+ void stop();
+public:
+ Tux(WorldMap* worldmap_);
+
+ 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; }
+};
+