YAPOG  0.0.1
Yet Another Pokemon Online Game
CollidableArea.hpp
Go to the documentation of this file.
1 #ifndef YAPOG_COLLIDABLEAREA_HPP
2 # define YAPOG_COLLIDABLEAREA_HPP
3 
4 # include "YAPOG/Macros.hpp"
9 
10 namespace yap
11 {
12  struct ICollidable;
13 
14  class WorldObject;
15  class DynamicWorldObject;
16  class MapEventQueue;
17 
19  {
21 
22  public:
23 
24  virtual ~CollidableArea ();
25 
26  void SetSize (const Vector2& size);
27 
28  void AddPhysicsCollidable (
29  ICollidable* collidable,
30  const MapCollidableInfo::PtrType& mapCollidableInfo);
31  void RemovePhysicsCollidable (ICollidable* collidable);
32 
33  void AddEventCollidable (
34  ICollidable* collidable,
35  const MapEventInfo::PtrType& mapEventInfo);
36  void RemoveEventCollidable (ICollidable* collidable);
37 
38  virtual bool CollidesWith (
39  const ICollidable& collidable,
40  const Vector2& offset,
41  const WorldObject& parent) const = 0;
42 
43  virtual void GetEventsCollidingWith (
44  const ICollidable& collidable,
45  MapEventQueue& events,
46  DynamicWorldObject& parent) const = 0;
47 
48  protected:
49 
50  CollidableArea ();
51 
52  virtual void HandleSetSize (const Vector2& size);
53 
54  virtual void HandleAddPhysicsCollidable (
55  ICollidable* collidable,
56  const MapCollidableInfo::PtrType& mapCollidableInfo) = 0;
57  virtual void HandleRemovePhysicsCollidable (ICollidable* collidable) = 0;
58 
59  virtual void HandleAddEventCollidable (
60  ICollidable* collidable,
61  const MapEventInfo::PtrType& mapEventInfo) = 0;
62  virtual void HandleRemoveEventCollidable (ICollidable* collidable) = 0;
63 
64  private:
65 
67  };
68 } // namespace yap
69 
70 #endif // YAPOG_COLLIDABLEAREA_HPP