68 lines
2.2 KiB
C++
68 lines
2.2 KiB
C++
#pragma once
|
|
|
|
//_NA_007065_20140217_BATTLEGROUND_REFACTORYING
|
|
typedef STLX_VECTOR<Player*> PLAYER_SORT_VECTOR;
|
|
|
|
class ChaosZoneBattleTeam
|
|
{
|
|
protected:
|
|
enum ChaosZoneTeamState {
|
|
eCHAOSTEAM_STATE_NONE = 0,
|
|
eCHAOSTEAM_STATE_MATCHED,
|
|
eCHAOSTEAM_STATE_END,
|
|
eCHAOSTEAM_MAX
|
|
|
|
};
|
|
public:
|
|
ChaosZoneBattleTeam() :
|
|
team_key_(kChaosZoneTeamNone),
|
|
team_state_(eCHAOSTEAM_STATE_NONE)
|
|
{}
|
|
virtual ~ChaosZoneBattleTeam() {}
|
|
|
|
virtual void Update()=0;
|
|
virtual void Start()=0;
|
|
|
|
//Team Member Control
|
|
virtual void AddMember(Player* const player)=0;
|
|
void RemoveMember(const DWORD char_guid);
|
|
Player* FindMember(const DWORD char_guid);
|
|
|
|
//Agent의 MatchingSystem에서 받아온 유저들 정보를 ReadyPlayer로 저장해둔다.
|
|
//GameServer에서 유저가 실제로 Zone에 입장할 경우 실질적으로 팀 객체에 등록된다.
|
|
//About ReadyPlayer
|
|
void SetReadyPlayer(Player* const player);
|
|
void SetReadyPlayer(const BYTE player_count, DWORD* user_key_list);
|
|
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
|
|
VOID SetReadyPlayer(MSG_AG_BATTLE_GROUND_ENTER_TEAM_CMD* cmd_msg);
|
|
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
|
|
|
|
bool IsReadyPlayer(const DWORD user_key);
|
|
bool IsAllPlayerEntered();
|
|
|
|
virtual RC::eSTATUS_RESULT OnMoveToSafezone(Player* const player)=0;
|
|
|
|
virtual void OnResult(const eBATTLEGROUND_RESULT result_type)=0;
|
|
|
|
//packet send
|
|
void SendPacketToAll(MSG_BASE_FORWARD* msg, WORD msg_size);
|
|
|
|
//inline function
|
|
inline BYTE GetMemberCount() const { return player_hash_map_.size(); }
|
|
inline void SetTeamKey(ChaosZoneTeam team_key) { team_key_ = team_key; }
|
|
inline ChaosZoneTeam GetTeamKey() const { return team_key_; }
|
|
inline bool IsExpired() const { return team_state_ == eCHAOSTEAM_STATE_END; }
|
|
|
|
protected:
|
|
ChaosZoneTeam team_key_; // 팀 키
|
|
ChaosZoneTeamState team_state_; //팀의 상태
|
|
PLAYER_HASH player_hash_map_; // 팀 멤버
|
|
|
|
BYTE ready_player_count_; // 입장하려는 플레이어 수
|
|
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
|
|
STLX_MAP<DWORD, BYTE> ready_user_keys_; // 입장 대기 중인유저키 리스트 <유저키, team_index>
|
|
#else
|
|
STLX_SET<DWORD> ready_user_keys_; // 입장 대기 중인유저키 리스트
|
|
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
|
|
|
|
}; |