GameServer
AreaBase.h
[詳解]
1 
7 #ifndef __AREABASE_H__
8 #define __AREABASE_H__
9 
10 #include <boost/enable_shared_from_this.hpp>
11 #include "PlayerManager.h"
12 #include "AnpanManager.h"
13 #include "HeightMap.h"
14 
15 struct AreaItem;
16 class PacketBase;
17 class CharacterBase;
18 
23 class AreaBase : public enable_shared_from_this<AreaBase>
24 {
25 
26 public:
27 
32  AreaBase(const AreaItem *pItem);
33 
37  virtual ~AreaBase() {}
38 
43  virtual void Initialize() {}
44 
50  void Poll(int DeltaTime);
51 
57  void AddPlayerCharacter(const PlayerCharacterPtr &pPlayer);
58 
64  void RemovePlayerCharacter(u32 Uuid);
65 
75  void OnRecvMove(u32 Uuid, float X, float Y, float Z, float Rotation);
76 
85  void OnRecvSkillUse(u32 Uuid, u32 SkillId, u8 TargetType, u32 TargetUuid);
86 
95  void OnRecvItemUse(u32 Uuid, u32 ItemId, u8 TargetType, u32 TargetUuid);
96 
104  void BroadcastPacket(PacketBase *pPacket, Client *pIgnoreClient = NULL);
105 
115  void BroadcastPacketWithRange(PacketBase *pPacket, const Vector3D &Center, float Range, Client *pIgnoreClient = NULL);
116 
125  float GetHeight(float X, float Y) const;
126 
137  bool CheckMovable(const Vector3D &Start, const Vector3D &End, float ClimbableHeight, Vector3D &OutHit) const;
138 
145  virtual u32 GetId() const = 0;
146 
152  u32 GetMasterId() const { return MasterId; }
153 
159  virtual bool IsAbleDelete() const = 0;
160 
166  virtual bool IsInstance() const { return false; }
167 
176  void CollectCircle(const Vector3D &Center, float Radius, u8 TargetType, std::vector<CharacterBase *> &OutTargets);
177 
187  void CollectBox(const Vector3D &Center, float Width, float Height, u8 TargetType, std::vector<CharacterBase *> &OutTargets);
188 
189 protected:
190 
193 
196 
197 
202  virtual void Update() {}
203 
204 private:
205 
206  // ハイトマップ
207  HeightMap HeightData;
208 
210  u32 MasterId;
211 
212 
213  // アンパンが生成された。
214  void OnSpawnAnpan(u32 Uuid, AnpanPtr pAnpan);
215 
216 };
217 
218 #endif // #ifndef __AREABASE_H__
Definition: PlayerManager.h:15
void BroadcastPacketWithRange(PacketBase *pPacket, const Vector3D &Center, float Range, Client *pIgnoreClient=NULL)
範囲を指定したパケットのブロードキャスト
Definition: AreaBase.cpp:120
virtual bool IsAbleDelete() const =0
消去可能か?
weak_ptr< Anpan > AnpanPtr
Definition: WeakPtrDefine.h:16
unsigned char u8
Definition: TypeDefs.h:6
AreaBase(const AreaItem *pItem)
コンストラクタ
Definition: AreaBase.cpp:21
bool CheckMovable(const Vector3D &Start, const Vector3D &End, float ClimbableHeight, Vector3D &OutHit) const
移動できるかどうかをチェック
Definition: AreaBase.cpp:132
void BroadcastPacket(PacketBase *pPacket, Client *pIgnoreClient=NULL)
パケットのブロードキャスト
Definition: AreaBase.cpp:114
virtual void Update()
更新処理
Definition: AreaBase.h:202
Definition: Rotation.h:5
PlayerManager PlayerMgr
プレイヤー管理.
Definition: AreaBase.h:192
void OnRecvMove(u32 Uuid, float X, float Y, float Z, float Rotation)
移動を受信した
Definition: AreaBase.cpp:66
キャラクタ基底クラス
Definition: CharacterBase.h:24
void Poll(int DeltaTime)
毎フレームの処理
Definition: AreaBase.cpp:38
void AddPlayerCharacter(const PlayerCharacterPtr &pPlayer)
プレイヤーキャラ追加
Definition: AreaBase.cpp:46
float GetHeight(float X, float Y) const
高さを取得
Definition: AreaBase.cpp:126
void CollectBox(const Vector3D &Center, float Width, float Height, u8 TargetType, std::vector< CharacterBase *> &OutTargets)
矩形でターゲットを取得
Definition: AreaBase.cpp:165
void OnRecvItemUse(u32 Uuid, u32 ItemId, u8 TargetType, u32 TargetUuid)
Definition: AreaBase.cpp:93
Definition: AnpanManager.h:15
Definition: Vector3D.h:8
AnpanManager AnpanMgr
アンパン管理.
Definition: AreaBase.h:195
unsigned int u32
Definition: TypeDefs.h:10
エリア基底クラス
Definition: AreaBase.h:23
virtual u32 GetId() const =0
IDを取得
クライアントクラス
Definition: Client.h:26
void RemovePlayerCharacter(u32 Uuid)
プレイヤーキャラ削除
Definition: AreaBase.cpp:60
void OnRecvSkillUse(u32 Uuid, u32 SkillId, u8 TargetType, u32 TargetUuid)
スキル使用を受信した。
Definition: AreaBase.cpp:72
ハイトマップクラス
Definition: PacketBase.h:9
virtual ~AreaBase()
デストラクタ
Definition: AreaBase.h:37
u32 GetMasterId() const
マスタIDを取得
Definition: AreaBase.h:152
weak_ptr< PlayerCharacter > PlayerCharacterPtr
Definition: WeakPtrDefine.h:13
void CollectCircle(const Vector3D &Center, float Radius, u8 TargetType, std::vector< CharacterBase *> &OutTargets)
円形でターゲットを取得
Definition: AreaBase.cpp:138
Definition: AreaMaster.h:9
virtual void Initialize()
初期化
Definition: AreaBase.h:43
ハイトマップ
Definition: HeightMap.h:17
virtual bool IsInstance() const
インスタンスエリアか?
Definition: AreaBase.h:166