Roguelike
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
shape.h
Go to the documentation of this file.
1 #ifndef ROGUELIKE_COMPONENT_SHAPE_H_
2 #define ROGUELIKE_COMPONENT_SHAPE_H_
3 
4 // Inheritance
6 
7 // External Dependencies
8 #include <set> // template class
9 #include <ugdk/math/integer2D.h>
10 #include "utils/integer2Dutils.h"
11 
12 // Internal Dependencies
13 #include "game/action/aim.h"
14 
15 // Forward Declarations
16 #include "game/base.h"
18 #include "game/base/gametile.h"
19 
20 namespace game {
21 namespace component {
22 
23 class Shape : public ComponentBase {
24  typedef ComponentBase super;
25  public:
26  Shape(game::base::GameObject* owner, double stay_sizeclass = 1.0, double pass_sizeclass = 0.25, double enter_sizeclass = 1.0e-5 )
28  virtual ~Shape() {
29  for(auto it = occupying_tiles_.begin(); it != occupying_tiles_.end(); it++)
31  if(aim_) delete aim_;
32  }
33 
37 
38  double stay_sizeclass() const { return stay_sizeclass_; }
39  double pass_sizeclass() const { return pass_sizeclass_; }
40  double enter_sizeclass() const { return enter_sizeclass_; }
41  const std::set<ugdk::math::Integer2D>& occupying_tiles() const { return occupying_tiles_; }
42  std::set<ugdk::math::Integer2D>& occupying_tiles() { return occupying_tiles_; }
43 
44  action::Aim* aim() { return aim_; }
45 
46  virtual const ugdk::math::Integer2D& PlaceAt(const ugdk::math::Integer2D& tile) = 0;
47  virtual const ugdk::math::Integer2D& Move(const std::list<ugdk::math::Integer2D>& mov) = 0;
48  virtual const ugdk::math::Integer2D& Step(const ugdk::math::Integer2D& dir) = 0;
49 
50  virtual bool TryPlace(const ugdk::math::Integer2D& destination, game::base::GameObject* ignore = 0) const = 0;
51 
52  protected:
56  std::set<ugdk::math::Integer2D> occupying_tiles_;
57 
59 };
60 
61 } // namespace component
62 } // namespace game
63 
64 #endif // ROGUELIKE_COMPONENT_SHAPE_H_
Definition: gameobject.h:53
double enter_sizeclass() const
Definition: shape.h:40
std::set< ugdk::math::Integer2D > & occupying_tiles()
Definition: shape.h:42
double enter_sizeclass_
Definition: shape.h:55
std::set< ugdk::math::Integer2D > occupying_tiles_
Definition: shape.h:56
double pass_sizeclass() const
Definition: shape.h:39
Shape(game::base::GameObject *owner, double stay_sizeclass=1.0, double pass_sizeclass=0.25, double enter_sizeclass=1.0e-5)
Definition: shape.h:26
void RemoveObject(GameObject *obj)
Definition: gametile.cc:48
Definition: aim.cc:15
action::Aim * aim()
Definition: shape.h:44
Definition: aim.h:20
void set_stay_sizeclass(double stay_sizeclass)
Definition: shape.h:34
virtual const ugdk::math::Integer2D & PlaceAt(const ugdk::math::Integer2D &tile)=0
static GameController * reference()
Definition: gamecontroller.cc:52
GameTile * Tile(int x, int y) const
Definition: gamecontroller.h:44
Definition: componentbase.h:19
virtual const ugdk::math::Integer2D & Step(const ugdk::math::Integer2D &dir)=0
const std::set< ugdk::math::Integer2D > & occupying_tiles() const
Definition: shape.h:41
virtual ~Shape()
Definition: shape.h:28
game::base::GameObject * owner_
Definition: componentbase.h:25
double pass_sizeclass_
Definition: shape.h:54
void set_pass_sizeclass(double pass_sizeclass)
Definition: shape.h:35
action::Aim * aim_
Definition: shape.h:58
void set_enter_sizeclass(double enter_sizeclass)
Definition: shape.h:36
double stay_sizeclass() const
Definition: shape.h:38
virtual bool TryPlace(const ugdk::math::Integer2D &destination, game::base::GameObject *ignore=0) const =0
virtual const ugdk::math::Integer2D & Move(const std::list< ugdk::math::Integer2D > &mov)=0
double stay_sizeclass_
Definition: shape.h:53
Definition: shape.h:23