YAPOG  0.0.1
Yet Another Pokemon Online Game
WorldObject.hpp
Go to the documentation of this file.
1 #ifndef YAPOG_WORLDOBJECT_HPP
2 # define YAPOG_WORLDOBJECT_HPP
3 
4 # include "YAPOG/Macros.hpp"
7 # include "YAPOG/Game/ID.hpp"
8 # include "YAPOG/System/String.hpp"
11 
12 namespace yap
13 {
14  class CollidableArea;
15  class MapEventQueue;
16 
18  , public IIDLoadable
19  {
21 
22  public:
23 
24  virtual ~WorldObject ();
25 
26  const ID& GetID () const;
27  void SetID (const ID& id);
28 
29  void SetCollidableArea (CollidableArea* collidableArea);
30  void AddPhysicsBoundingBox (BoundingBox* boundingBox);
31  void RemovePhysicsBoundingBox (BoundingBox* boundingBox);
32 
33  bool CollidesWith (
34  const CollidableArea& collidableArea,
35  const Vector2& offset) const;
36 
41  void AdjustCollidablePosition (ICollidable& collidable) const;
42 
45  virtual const Vector2& GetPosition () const;
46  virtual const Vector2& GetSize () const;
47 
48  virtual const Vector2& GetTopLeft () const;
49  virtual const Vector2& GetBottomRight () const;
50  virtual const Vector2& GetCenter () const;
51 
52  virtual const FloatRect& GetRectangle () const;
53 
54  virtual void Move (const Vector2& offset);
55  virtual void Scale (const Vector2& factor);
56 
57  virtual void SetPosition (const Vector2& position);
58  virtual void SetSize (const Vector2& size);
60 
63  virtual const int& GetZ () const;
64  virtual void SetZ (int z);
65 
66  virtual const int& GetH () const;
67  virtual void SetH (int h);
69 
72  virtual bool CollidesWith (const ICollidable& other) const;
73  virtual bool CollidesWith (
74  const ICollidable& other,
75  const Vector2& offset) const;
77 
80  virtual WorldObject* Clone () const { return nullptr; }
82 
83  protected:
84 
85  explicit WorldObject (const ID& id);
86  WorldObject (const WorldObject& copy);
87 
88  const PhysicsBoundingBoxCollection& GetPhysicsBoundingBoxes () const;
89 
90  virtual void HandleSetCollidableArea (CollidableArea* collidableArea);
91 
92  virtual Vector2 HandleGetSize () const;
93  virtual void HandleMove (const Vector2& offset);
94  virtual void HandleScale (const Vector2& factor);
95  virtual void HandleSetZ (int z);
96  virtual void HandleSetH (int h);
97 
98  private:
99 
101 
103 
105  };
106 } // namespace yap
107 
108 #endif // YAPOG_WORLDOBJECT_HPP