32 #ifndef INC_C4PlayerInfo
33 #define INC_C4PlayerInfo
84 uint32_t dwColor{0xffffffff};
85 uint32_t dwOriginalColor{0}, dwAlternateColor{0};
86 int32_t idSavegamePlayer{0};
89 int32_t iInGameNumber{-1}, iInGameJoinFrame{-1}, iInGamePartFrame{-1};
93 int32_t iLeagueScore{0};
94 int32_t iLeagueRank{0};
95 int32_t iLeagueRankSymbol{0};
96 int32_t iLeagueScoreProjected;
97 int32_t iLeagueProjectedGain{-1};
99 int32_t iLeaguePerformance{0};
104 : pRes(nullptr), szFilename(), idExtraData(
C4ID::
None), sLeagueAccount(
"") { }
114 void SetID(int32_t iToID) { iID = iToID; }
120 void SetTeam(int32_t idToTeam) { idTeam = idToTeam; }
125 { idSavegamePlayer=aidSavegamePlayer; }
127 {
return idSavegamePlayer; }
134 { szAuthID = sznAuthID; }
135 void SetLeagueData(
const char *szAccount,
const char *szNewClanTag, int32_t iScore, int32_t iRank, int32_t iRankSymbol,
const char *szProgressData)
136 { sLeagueAccount.
CopyValidated(szAccount); sClanTag.
CopyValidated(szNewClanTag); iLeagueScore = iScore; iLeagueRank = iRank; iLeagueRankSymbol = iRankSymbol; sLeagueProgressData.
Copy(szProgressData); }
138 { iLeaguePerformance = iNewPerf; }
140 {
if (szNewProgressData) sLeagueProgressData.
Copy(szNewProgressData);
else sLeagueProgressData.
Clear(); }
144 { assert(iProjectedGain>=0); iLeagueProjectedGain = iProjectedGain; }
146 { iLeagueProjectedGain = -1; }
194 int32_t
GetID()
const {
return iID; }
212 int32_t iPlayerCount{0};
213 int32_t iPlayerCapacity{0};
215 void GrowList(
size_t iByVal);
217 int32_t iClientID{-1};
222 CIF_AddPlayers = 1<<0,
225 CIF_Developer = 1<<3,
247 void SetAdd() { dwFlags |= CIF_AddPlayers; }
281 :
Info(szFilenames, fAdd) { };
309 int32_t iClientCount{0};
310 int32_t iClientCapacity{0};
312 void GrowList(
size_t iByVal);
314 int32_t iLastPlayerID{0};
316 enum MatchingLevel { PML_PlrFileName=0, PML_PlrName, PML_PrefColor, PML_Any };
359 {
return (ppClients && Inside<int32_t>(iIndex, 0, iClientCount-1)) ? ppClients[iIndex] :
nullptr; }
379 if (!pInfoPkt)
return nullptr;
387 { *ppRemoveInfo = ppClients[--iClientCount]; }
394 void SetIDCounter(int32_t idNewCounter) { iLastPlayerID = idNewCounter; }
406 bool SetAsRestoreInfos(
C4PlayerInfoList &rFromPlayers,
bool fSaveUserPlrs,
bool fSaveScriptPlrs,
bool fSetUserPlrRefToLocalGroup,
bool fSetScriptPlrRefToLocalGroup);
void RemoveInfo(int32_t idPlr)
void CompileFunc(StdCompiler *pComp)
bool IsInitialPacket() const
void AddInfo(C4PlayerInfo *pAddInfo)
C4ClientPlayerInfos & operator=(const C4ClientPlayerInfos &rCopy)
int32_t GetClientID() const
C4PlayerInfo * GetPlayerInfoByID(int32_t id) const
C4ClientPlayerInfos(const char *szJoinFilenames=nullptr, bool fAdd=false, C4PlayerInfo *pAddInfo=nullptr)
void RemoveIndexedInfo(int32_t iAtIndex)
void GrabMergeFrom(C4ClientPlayerInfos &rFrom)
C4PlayerInfo * GetPlayerInfo(int32_t iIndex) const
int32_t GetPlayerCount() const
int32_t GetJoinedPlayerCount() const
bool HasUnjoinedPlayers() const
int32_t GetFlaggedPlayerCount(DWORD dwFlag) const
C4PlayerInfo * GetPlayerInfoByRes(int32_t idResID) const
bool IsDeveloperPacket() const
void CompileFunc(StdCompiler *pComp) override
C4PacketPlayerInfo(const C4ClientPlayerInfos &rCopyInfos, bool fRecreationPlayers)
C4PacketPlayerInfoUpdRequest(const C4ClientPlayerInfos &rInfo)
C4PacketPlayerInfoUpdRequest(const char *szFilenames, bool fAdd)
void CompileFunc(StdCompiler *pComp) override
C4PacketPlayerInfoUpdRequest()
bool IsUsingAttribute(Attribute eAttr) const
bool HasAutoGeneratedColor()
bool LoadFromLocalFile(const char *szFilename)
void CompileFunc(StdCompiler *pComp)
uint32_t GetOriginalColor() const
StdStrBuf GetLobbyName() const
const char * getAuthID() const
uint32_t GetColor() const
void SetLeagueData(const char *szAccount, const char *szNewClanTag, int32_t iScore, int32_t iRank, int32_t iRankSymbol, const char *szProgressData)
C4ID GetScriptPlayerExtraID() const
bool IsAttributesFixed() const
bool IsUsingPlayerFile() const
bool SetSavegameResume(C4PlayerInfo *pSavegameInfo)
bool LoadBigIcon(C4FacetSurface &fctTarget)
void SetJoined(int32_t iNumber)
void SetID(int32_t iToID)
void ResetLeagueProjectedGain()
bool IsUsingColor() const
void SetOriginalColor(DWORD dwUseClr)
bool IsNoEliminationCheck() const
bool HasJoinIssued() const
void SetJoinForSavegameOnly()
const char * getLeagueAccount() const
void SetAssociatedSavegamePlayer(int32_t aidSavegamePlayer)
bool IsScenarioSaveDesired() const
int32_t GetAssociatedSavegamePlayerID() const
uint32_t GetAlternateColor() const
const char * GetOriginalName() const
int32_t getLeagueRank() const
int32_t getLeagueScore() const
void SetColor(DWORD dwUseClr)
int32_t getLeagueRankSymbol() const
@ PIF_SavegameTakeoverFlags
@ PIF_JoinedForSavegameOnly
int32_t getLeagueScoreProjected() const
void SetLeaguePerformance(int32_t iNewPerf)
const char * GetForcedName() const
void SetLeagueProjectedGain(int32_t iProjectedGain)
uint32_t GetLobbyColor() const
bool IsScenarioInitDesired() const
void SetTeam(int32_t idToTeam)
const char * GetLeagueProgressData() const
void SetFilename(const char *szToFilename)
void SetForcedName(const char *szNewName)
const char * GetLocalJoinFilename() const
const char * GetName() const
int32_t GetInGameNumber() const
void SetToScenarioFilename(const char *szScenFilename)
int32_t GetLeagueProjectedGain() const
void SetAuthID(const char *sznAuthID)
bool HasJoinPending() const
C4PlayerType GetType() const
C4Network2Res * GetRes() const
bool IsJoinForSavegameOnly()
bool SetAsScriptPlayer(const char *szName, uint32_t dwColor, uint32_t dwFlags, C4ID idExtra)
void SetLeagueProgressData(const char *szNewProgressData)
bool IsLeagueProjectedGainValid() const
const char * GetFilename() const
void SetIDCounter(int32_t idNewCounter)
StdStrBuf GetActivePlayerNames(bool fCountInvisible, int32_t iAtClientID=-1) const
C4ClientPlayerInfos * GetInfoByClientID(int32_t iClientID) const
int32_t GetJoinIssuedPlayerCount() const
C4ClientPlayerInfos * GetIndexedInfo(int32_t iIndex) const
bool SetAsRestoreInfos(C4PlayerInfoList &rFromPlayers, bool fSaveUserPlrs, bool fSaveScriptPlrs, bool fSetUserPlrRefToLocalGroup, bool fSetScriptPlrRefToLocalGroup)
C4PlayerInfo * GetPlayerInfoByIndex(int32_t index) const
bool RecreatePlayers(C4ValueNumbers *)
bool Load(C4Group &hGroup, const char *szFromFile, class C4LangStringTable *pLang=nullptr)
void AssignTeams(C4ClientPlayerInfos *pNewClientInfo, bool fByHost)
int32_t GetJoinPendingPlayerCount() const
int32_t GetActiveScriptPlayerCount(bool fCountSavegameResumes, bool fCountInvisible) const
void RecheckAutoGeneratedTeams()
int32_t GetFreePlayerSlotCount()
C4PlayerInfo * GetPlayerInfoBySavegameID(int32_t id) const
int32_t GetStartupCount()
C4PlayerInfo * GetPrimaryInfoByClientID(int32_t iClientID) const
bool Save(C4Group &hGroup, const char *szToFile)
C4PlayerInfo * GetNextPlayerInfoByID(int32_t id) const
C4PlayerInfo * FindUnassociatedRestoreInfo(const C4PlayerInfoList &rRestoreInfoList)
void CreateRestoreInfosForJoinedScriptPlayers(C4PlayerInfoList &rSavegamePlayers)
void RemoveUnassociatedPlayers(C4PlayerInfoList &rSavegamePlayers)
C4PlayerInfo * GetActivePlayerInfoByName(const char *szName)
bool DoPlayerInfoUpdate(C4ClientPlayerInfos *pUpdate)
bool HasSameTeamPlayers(int32_t iClient1, int32_t iClient2) const
bool LocalJoinUnjoinedPlayersInQueue()
int32_t GetActivePlayerCount(bool fCountInvisible) const
void RemoveInfo(C4ClientPlayerInfos **ppRemoveInfo)
bool RecreatePlayerFiles()
void ResolvePlayerAttributeConflicts(C4ClientPlayerInfos *pSecPacket)
C4PlayerInfoList & operator=(const C4PlayerInfoList &rCpy)
C4ClientPlayerInfos * GetClientInfoByPlayerID(int32_t id) const
void UpdatePlayerAttributes()
bool RestoreSavegameInfos(C4PlayerInfoList &rSavegamePlayers)
C4PlayerInfo * GetPlayerInfoByID(int32_t id) const
int32_t GetInfoCount() const
C4ClientPlayerInfos * AddInfo(C4ClientPlayerInfos *pNewClientInfo)
void CompileFunc(StdCompiler *pComp)
bool DoLocalNonNetworkPlayerJoin(const char *szPlayerFile)
C4ClientPlayerInfos ** GetInfoPtrByClientID(int32_t iClientID) const
void ResetLeagueProjectedGain(bool fSetUpdated)
C4PlayerInfo * FindSavegameResumePlayerInfo(const C4PlayerInfo *pMatchInfo, MatchingLevel mlMatchStart, MatchingLevel mlMatchEnd) const
int32_t GetPlayerCount() const
bool DoLocalNonNetworkPlayerInfoUpdate(C4ClientPlayerInfos *pUpdate)
bool AssignPlayerIDs(C4ClientPlayerInfos *pNewClientInfo)
const char * getData() const
void CopyValidated(const char *szFromVal)