Files
Sun1602/Server/GameServer/World/ChaosZoneSystem/ChaosZoneBattleTeam.h
T
2022-10-26 12:25:11 +08:00

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
};