fix cr/lfs and remove trailing whitespaces...
[supertux.git] / src / worldmap / tux.hpp
1 //  $Id$
2 //
3 //  SuperTux -  A Jump'n Run
4 //  Copyright (C) 2004 Ingo Ruhnke <grumbel@gmx.de>
5 //  Copyright (C) 2006 Christoph Sommer <christoph.sommer@2006.expires.deltadevelopment.de>
6 //
7 //  This program is free software; you can redistribute it and/or
8 //  modify it under the terms of the GNU General Public License
9 //  as published by the Free Software Foundation; either version 2
10 //  of the License, or (at your option) any later version.
11 //
12 //  This program is distributed in the hope that it will be useful,
13 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
14 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 //  GNU General Public License for more details.
16 //
17 //  You should have received a copy of the GNU General Public License
18 //  along with this program; if not, write to the Free Software
19 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20 #ifndef __WORLDMAP_TUX_HPP__
21 #define __WORLDMAP_TUX_HPP__
22
23 #include <memory>
24 #include "game_object.hpp"
25 #include "worldmap.hpp"
26
27 class Sprite;
28
29 namespace WorldMapNS
30 {
31
32 class WorldMap;
33
34 class Tux : public GameObject
35 {
36 public:
37   Direction back_direction;
38 private:
39   WorldMap* worldmap;
40   std::auto_ptr<Sprite> sprite;
41   Controller* controller;
42
43   Direction input_direction;
44   Direction direction;
45   Vector tile_pos;
46   /** Length by which tux is away from its current tile, length is in
47       input_direction direction */
48   float offset;
49   bool  moving;
50
51   void stop();
52
53   bool canWalk(const Tile* tile, Direction dir); /**< check if we can leave "tile" in direction "dir" */
54   void updateInputDirection(); /**< if controller was pressed, update input_direction */
55   void tryStartWalking(); /**< try starting to walk in input_direction */
56   void tryContinueWalking(float elapsed_time); /**< try to continue walking in current direction */
57
58 public:
59   Tux(WorldMap* worldmap_);
60   ~Tux();
61
62   void setup(); /**< called prior to first update */
63   void draw(DrawingContext& context);
64   void update(float elapsed_time);
65
66   void set_direction(Direction dir);
67
68   bool is_moving() const { return moving; }
69   Vector get_pos();
70   Vector get_tile_pos() const { return tile_pos; }
71   void  set_tile_pos(Vector p) { tile_pos = p; }
72 };
73
74 }
75
76 #endif