101 lines
4.1 KiB
C++
101 lines
4.1 KiB
C++
|
|
#ifndef _ArenaSystem_h_
|
|
#define _ArenaSystem_h_
|
|
|
|
#include "Arena\\ArenaUtility.h"
|
|
#include "SGameMessage.h"
|
|
#include "K3DTypes.h"
|
|
|
|
struct sArenaSystem
|
|
{
|
|
public:
|
|
typedef SMSG_BATTLE_ARENA_BATTLE_INFO::sPlayerInfo sPlayerInfo;
|
|
typedef SMSG_BATTLE_ARENA_BATTLE_SCORE::sTeamScore sTeamScore;
|
|
typedef SMSG_BATTLE_ARENA_BATTLE_SCORE::sPlayerScore sPlayerScore;
|
|
|
|
sArenaSystem();
|
|
~sArenaSystem();
|
|
void process(float elapsedTime);
|
|
/// join을 보낼 때, 현재의 데이타들을 삭제해 준다
|
|
void clear();
|
|
void recvMsgBattleArenaJoinQueue(SGameMessage* msg);
|
|
void recvMsgBattleArenaLeave(SGameMessage* msg);
|
|
void recvMsgBattleArenaBattleInfo(SGameMessage* msg);
|
|
void recvMsgBattleArenaBattleStatus(SGameMessage* msg);
|
|
void recvMsgBattleArenaBattleScore(SGameMessage* msg);
|
|
void recvMsgBattleArenaJoinBattle(SGameMessage* msg);
|
|
void recvMsgBattleArenaDisconnectBattle(SGameMessage* msg);
|
|
void recvMsgBattleArenaReconnectBattle(SGameMessage* msg);
|
|
void recvMsgBattleArenaResult(SGameMessage* msg);
|
|
void recvMsgBattleArenaAbsenceCheck(SGameMessage *msg);
|
|
void recvMsgBattleArenaPenaltyInfo(SGameMessage* msg);
|
|
void recvMsgBattleArenaUpdateWaitUserCount(SGameMessage* msg);
|
|
void recvMsgBattleArenaExerciseReadyStatus(SGameMessage* msg);
|
|
|
|
int findTeam(char const* playerName) const;
|
|
sPlayerInfo* findPlayerInfo(char const* playerName, int& team);
|
|
sPlayerInfo* findPlayerInfo(char const* playerName, int& team, int& player);
|
|
sPlayerInfo* findEmptyPlayerInfo(int team);
|
|
//sPlayerInfo* findPlayerInfo(int team, AR_HANDLE handle);
|
|
sPlayerInfo* getPlayerInfo(int team, int player);
|
|
sPlayerScore* findPlayerScore(char const* playerName);
|
|
void erasePlayerScore(char const* playerName);
|
|
sPlayerScore* getMyPlayerScore();
|
|
void findMyTeam();
|
|
bool isEnoughHalfPlayerCount(int maxMember) const;
|
|
/// 가명과 아레나 상태에 따른 플레이어 이름을 리턴한다
|
|
char const* getPlayerName(class SPlayerInfoMgr const* playerInfo);
|
|
|
|
sTeamScore* getTeamScore(int team);
|
|
int getPlayerCount(int team);
|
|
bool isWaiting();
|
|
bool isPlaying();
|
|
bool isReady(int team);
|
|
/// 배틀 인포를 받았는지 안 받았는지, 대기 카운트 전인지 아닌지를 체크할 때 쓰인다
|
|
bool isRecvBattleInfo();
|
|
bool isEqualScore() const;
|
|
bool isExercise() const;
|
|
bool isJoin() const; /// 입장 대기까지 포함해서 아레나에 조인 했는지
|
|
void setReportDrivePlayerName(char const* name) { m_reportDrivePlayerName = name; }
|
|
char const* getReportDrivePlayerName() const { return m_reportDrivePlayerName.c_str(); }
|
|
/// TS_SC_BATTLE_ARENA_BATTLE_STATUS에서 갖고 옴
|
|
_PROP_STATE getBingoManStatus(int bingoManIndex) const { assert( bingoManIndex >= 0 && bingoManIndex < 9 ); return static_cast< _PROP_STATE >( ( m_status >> ( bingoManIndex * 2 ) ) & 0x3 ); }
|
|
int getMyTeam();
|
|
int getOpponentTeam() const { return m_opponentTeam; }
|
|
int getBlockTime() const { return (int)(m_blockTime * 100.0f); }
|
|
int getPenaltyCount() const { return m_penaltyCount; }
|
|
int getPenaltyCountTime() const { return (int)(m_penaltyCountTime * 100.0f); }
|
|
int getArenaId() const { return m_arenaId; }
|
|
AR_TIME getEndTime() const { return m_endTime; }
|
|
AR_TIME getForceEnterTime() const { return m_forceEnterTime; }
|
|
AR_TIME getStartTime() const { return m_startTime; }
|
|
int getWaitingUserCount() const { return m_waitingUserCount; }
|
|
int getReadyState() const { return m_readyState; }
|
|
std::vector<K3DVector2> const& getBlockList() const { return m_blockList; }
|
|
|
|
private:
|
|
void extractBlockList();
|
|
void procBlockList();
|
|
|
|
private:
|
|
int m_arenaId;
|
|
int m_myTeam;
|
|
int m_opponentTeam;
|
|
float m_blockTime;
|
|
AR_TIME m_forceEnterTime;
|
|
AR_TIME m_endTime;
|
|
AR_TIME m_startTime;
|
|
int m_penaltyCount;
|
|
float m_penaltyCountTime;
|
|
int m_status;
|
|
int m_readyState;
|
|
int m_waitingUserCount;
|
|
int m_playerCount[sArenaUtility::MAX_TEAM_NUM];
|
|
sPlayerInfo m_playerInfo[sArenaUtility::MAX_TEAM_NUM][sArenaUtility::MAX_MEMBER_ONE_TEAM];
|
|
sTeamScore m_teamScore[sArenaUtility::MAX_TEAM_NUM];
|
|
sPlayerScore m_playerScore[sArenaUtility::MAX_TEAM_NUM][sArenaUtility::MAX_MEMBER_ONE_TEAM];
|
|
std::string m_reportDrivePlayerName;
|
|
std::vector<K3DVector2> m_blockList;
|
|
};
|
|
|
|
#endif |