mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 01:58:19 +00:00
Revert "Record Player and Team finishes in Teehistorian"
This reverts commit ece1ec07f5
.
This commit is contained in:
parent
68a64b4ae1
commit
6c9af4d2cc
|
@ -357,8 +357,6 @@ public:
|
||||||
virtual void TeehistorianRecordPlayerDrop(int ClientId, const char *pReason) = 0;
|
virtual void TeehistorianRecordPlayerDrop(int ClientId, const char *pReason) = 0;
|
||||||
virtual void TeehistorianRecordPlayerRejoin(int ClientId) = 0;
|
virtual void TeehistorianRecordPlayerRejoin(int ClientId) = 0;
|
||||||
virtual void TeehistorianRecordPlayerName(int ClientId, const char *pName) = 0;
|
virtual void TeehistorianRecordPlayerName(int ClientId, const char *pName) = 0;
|
||||||
virtual void TeehistorianRecordPlayerFinish(int ClientId, int TimeTicks) = 0;
|
|
||||||
virtual void TeehistorianRecordTeamFinish(int TeamId, int TimeTicks) = 0;
|
|
||||||
|
|
||||||
virtual void FillAntibot(CAntibotRoundData *pData) = 0;
|
virtual void FillAntibot(CAntibotRoundData *pData) = 0;
|
||||||
|
|
||||||
|
|
|
@ -19,5 +19,3 @@ UUID(TEEHISTORIAN_PLAYER_READY, "teehistorian-player-ready@ddnet.tw")
|
||||||
UUID(TEEHISTORIAN_PLAYER_REJOIN, "teehistorian-rejoinver6@ddnet.org")
|
UUID(TEEHISTORIAN_PLAYER_REJOIN, "teehistorian-rejoinver6@ddnet.org")
|
||||||
UUID(TEEHISTORIAN_ANTIBOT, "teehistorian-antibot@ddnet.org")
|
UUID(TEEHISTORIAN_ANTIBOT, "teehistorian-antibot@ddnet.org")
|
||||||
UUID(TEEHISTORIAN_PLAYER_NAME, "teehistorian-player-name@ddnet.org")
|
UUID(TEEHISTORIAN_PLAYER_NAME, "teehistorian-player-name@ddnet.org")
|
||||||
UUID(TEEHISTORIAN_PLAYER_FINISH, "teehistorian-player-finish@ddnet.org")
|
|
||||||
UUID(TEEHISTORIAN_TEAM_FINISH, "teehistorian-team-finish@ddnet.org")
|
|
||||||
|
|
|
@ -1775,22 +1775,6 @@ void CGameContext::TeehistorianRecordPlayerName(int ClientId, const char *pName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGameContext::TeehistorianRecordPlayerFinish(int ClientId, int TimeTicks)
|
|
||||||
{
|
|
||||||
if(m_TeeHistorianActive)
|
|
||||||
{
|
|
||||||
m_TeeHistorian.RecordPlayerFinish(ClientId, TimeTicks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CGameContext::TeehistorianRecordTeamFinish(int TeamId, int TimeTicks)
|
|
||||||
{
|
|
||||||
if(m_TeeHistorianActive)
|
|
||||||
{
|
|
||||||
m_TeeHistorian.RecordTeamFinish(TeamId, TimeTicks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CGameContext::OnClientDDNetVersionKnown(int ClientId)
|
bool CGameContext::OnClientDDNetVersionKnown(int ClientId)
|
||||||
{
|
{
|
||||||
IServer::CClientInfo Info;
|
IServer::CClientInfo Info;
|
||||||
|
|
|
@ -329,8 +329,6 @@ public:
|
||||||
void TeehistorianRecordPlayerDrop(int ClientId, const char *pReason) override;
|
void TeehistorianRecordPlayerDrop(int ClientId, const char *pReason) override;
|
||||||
void TeehistorianRecordPlayerRejoin(int ClientId) override;
|
void TeehistorianRecordPlayerRejoin(int ClientId) override;
|
||||||
void TeehistorianRecordPlayerName(int ClientId, const char *pName) override;
|
void TeehistorianRecordPlayerName(int ClientId, const char *pName) override;
|
||||||
void TeehistorianRecordPlayerFinish(int ClientId, int TimeTicks) override;
|
|
||||||
void TeehistorianRecordTeamFinish(int TeamId, int TimeTicks) override;
|
|
||||||
|
|
||||||
bool IsClientReady(int ClientId) const override;
|
bool IsClientReady(int ClientId) const override;
|
||||||
bool IsClientPlayer(int ClientId) const override;
|
bool IsClientPlayer(int ClientId) const override;
|
||||||
|
|
|
@ -145,14 +145,12 @@ void CScore::MapInfo(int ClientId, const char *pMapName)
|
||||||
ExecPlayerThread(CScoreWorker::MapInfo, "map info", ClientId, pMapName, 0);
|
ExecPlayerThread(CScoreWorker::MapInfo, "map info", ClientId, pMapName, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CScore::SaveScore(int ClientId, int TimeTicks, const char *pTimestamp, const float aTimeCp[NUM_CHECKPOINTS], bool NotEligible)
|
void CScore::SaveScore(int ClientId, float Time, const char *pTimestamp, const float aTimeCp[NUM_CHECKPOINTS], bool NotEligible)
|
||||||
{
|
{
|
||||||
CConsole *pCon = (CConsole *)GameServer()->Console();
|
CConsole *pCon = (CConsole *)GameServer()->Console();
|
||||||
if(pCon->Cheated() || NotEligible)
|
if(pCon->Cheated() || NotEligible)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
GameServer()->TeehistorianRecordPlayerFinish(ClientId, TimeTicks);
|
|
||||||
|
|
||||||
CPlayer *pCurPlayer = GameServer()->m_apPlayers[ClientId];
|
CPlayer *pCurPlayer = GameServer()->m_apPlayers[ClientId];
|
||||||
if(pCurPlayer->m_ScoreFinishResult != nullptr)
|
if(pCurPlayer->m_ScoreFinishResult != nullptr)
|
||||||
dbg_msg("sql", "WARNING: previous save score result didn't complete, overwriting it now");
|
dbg_msg("sql", "WARNING: previous save score result didn't complete, overwriting it now");
|
||||||
|
@ -162,7 +160,7 @@ void CScore::SaveScore(int ClientId, int TimeTicks, const char *pTimestamp, cons
|
||||||
FormatUuid(GameServer()->GameUuid(), Tmp->m_aGameUuid, sizeof(Tmp->m_aGameUuid));
|
FormatUuid(GameServer()->GameUuid(), Tmp->m_aGameUuid, sizeof(Tmp->m_aGameUuid));
|
||||||
Tmp->m_ClientId = ClientId;
|
Tmp->m_ClientId = ClientId;
|
||||||
str_copy(Tmp->m_aName, Server()->ClientName(ClientId), sizeof(Tmp->m_aName));
|
str_copy(Tmp->m_aName, Server()->ClientName(ClientId), sizeof(Tmp->m_aName));
|
||||||
Tmp->m_Time = (float)(TimeTicks) / (float)Server()->TickSpeed();
|
Tmp->m_Time = Time;
|
||||||
str_copy(Tmp->m_aTimestamp, pTimestamp, sizeof(Tmp->m_aTimestamp));
|
str_copy(Tmp->m_aTimestamp, pTimestamp, sizeof(Tmp->m_aTimestamp));
|
||||||
for(int i = 0; i < NUM_CHECKPOINTS; i++)
|
for(int i = 0; i < NUM_CHECKPOINTS; i++)
|
||||||
Tmp->m_aCurrentTimeCp[i] = aTimeCp[i];
|
Tmp->m_aCurrentTimeCp[i] = aTimeCp[i];
|
||||||
|
@ -170,7 +168,7 @@ void CScore::SaveScore(int ClientId, int TimeTicks, const char *pTimestamp, cons
|
||||||
m_pPool->ExecuteWrite(CScoreWorker::SaveScore, std::move(Tmp), "save score");
|
m_pPool->ExecuteWrite(CScoreWorker::SaveScore, std::move(Tmp), "save score");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CScore::SaveTeamScore(int Team, int *pClientIds, unsigned int Size, int TimeTicks, const char *pTimestamp)
|
void CScore::SaveTeamScore(int *pClientIds, unsigned int Size, float Time, const char *pTimestamp)
|
||||||
{
|
{
|
||||||
CConsole *pCon = (CConsole *)GameServer()->Console();
|
CConsole *pCon = (CConsole *)GameServer()->Console();
|
||||||
if(pCon->Cheated())
|
if(pCon->Cheated())
|
||||||
|
@ -180,14 +178,11 @@ void CScore::SaveTeamScore(int Team, int *pClientIds, unsigned int Size, int Tim
|
||||||
if(GameServer()->m_apPlayers[pClientIds[i]]->m_NotEligibleForFinish)
|
if(GameServer()->m_apPlayers[pClientIds[i]]->m_NotEligibleForFinish)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GameServer()->TeehistorianRecordTeamFinish(Team, TimeTicks);
|
|
||||||
|
|
||||||
auto Tmp = std::make_unique<CSqlTeamScoreData>();
|
auto Tmp = std::make_unique<CSqlTeamScoreData>();
|
||||||
for(unsigned int i = 0; i < Size; i++)
|
for(unsigned int i = 0; i < Size; i++)
|
||||||
str_copy(Tmp->m_aaNames[i], Server()->ClientName(pClientIds[i]), sizeof(Tmp->m_aaNames[i]));
|
str_copy(Tmp->m_aaNames[i], Server()->ClientName(pClientIds[i]), sizeof(Tmp->m_aaNames[i]));
|
||||||
Tmp->m_Size = Size;
|
Tmp->m_Size = Size;
|
||||||
Tmp->m_Time = (float)TimeTicks / (float)Server()->TickSpeed();
|
Tmp->m_Time = Time;
|
||||||
str_copy(Tmp->m_aTimestamp, pTimestamp, sizeof(Tmp->m_aTimestamp));
|
str_copy(Tmp->m_aTimestamp, pTimestamp, sizeof(Tmp->m_aTimestamp));
|
||||||
FormatUuid(GameServer()->GameUuid(), Tmp->m_aGameUuid, sizeof(Tmp->m_aGameUuid));
|
FormatUuid(GameServer()->GameUuid(), Tmp->m_aGameUuid, sizeof(Tmp->m_aGameUuid));
|
||||||
str_copy(Tmp->m_aMap, g_Config.m_SvMap, sizeof(Tmp->m_aMap));
|
str_copy(Tmp->m_aMap, g_Config.m_SvMap, sizeof(Tmp->m_aMap));
|
||||||
|
|
|
@ -49,9 +49,9 @@ public:
|
||||||
void MapVote(int ClientId, const char *pMapName);
|
void MapVote(int ClientId, const char *pMapName);
|
||||||
void LoadPlayerData(int ClientId, const char *pName = "");
|
void LoadPlayerData(int ClientId, const char *pName = "");
|
||||||
void LoadPlayerTimeCp(int ClientId, const char *pName = "");
|
void LoadPlayerTimeCp(int ClientId, const char *pName = "");
|
||||||
void SaveScore(int ClientId, int TimeTicks, const char *pTimestamp, const float aTimeCp[NUM_CHECKPOINTS], bool NotEligible);
|
void SaveScore(int ClientId, float Time, const char *pTimestamp, const float aTimeCp[NUM_CHECKPOINTS], bool NotEligible);
|
||||||
|
|
||||||
void SaveTeamScore(int Team, int *pClientIds, unsigned int Size, int TimeTicks, const char *pTimestamp);
|
void SaveTeamScore(int *pClientIds, unsigned int Size, float Time, const char *pTimestamp);
|
||||||
|
|
||||||
void ShowTop(int ClientId, int Offset = 1);
|
void ShowTop(int ClientId, int Offset = 1);
|
||||||
void ShowRank(int ClientId, const char *pName);
|
void ShowRank(int ClientId, const char *pName);
|
||||||
|
|
|
@ -335,9 +335,8 @@ void CGameTeams::CheckTeamFinished(int Team)
|
||||||
|
|
||||||
if(PlayersCount > 0)
|
if(PlayersCount > 0)
|
||||||
{
|
{
|
||||||
int TimeTicks = Server()->Tick() - GetStartTime(apTeamPlayers[0]);
|
float Time = (float)(Server()->Tick() - GetStartTime(apTeamPlayers[0])) / ((float)Server()->TickSpeed());
|
||||||
float Time = (float)TimeTicks / (float)Server()->TickSpeed();
|
if(Time < 0.000001f)
|
||||||
if(TimeTicks <= 0)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -349,7 +348,7 @@ void CGameTeams::CheckTeamFinished(int Team)
|
||||||
char aBuf[256];
|
char aBuf[256];
|
||||||
str_format(aBuf, sizeof(aBuf),
|
str_format(aBuf, sizeof(aBuf),
|
||||||
"Your team would've finished in: %d minute(s) %5.2f second(s). Since you had practice mode enabled your rank doesn't count.",
|
"Your team would've finished in: %d minute(s) %5.2f second(s). Since you had practice mode enabled your rank doesn't count.",
|
||||||
(int)Time / 50 / 60, Time - ((int)Time / 60 * 60));
|
(int)Time / 60, Time - ((int)Time / 60 * 60));
|
||||||
GameServer()->SendChatTeam(Team, aBuf);
|
GameServer()->SendChatTeam(Team, aBuf);
|
||||||
|
|
||||||
for(unsigned int i = 0; i < PlayersCount; ++i)
|
for(unsigned int i = 0; i < PlayersCount; ++i)
|
||||||
|
@ -366,7 +365,7 @@ void CGameTeams::CheckTeamFinished(int Team)
|
||||||
for(unsigned int i = 0; i < PlayersCount; ++i)
|
for(unsigned int i = 0; i < PlayersCount; ++i)
|
||||||
OnFinish(apTeamPlayers[i], Time, aTimestamp);
|
OnFinish(apTeamPlayers[i], Time, aTimestamp);
|
||||||
ChangeTeamState(Team, TEAMSTATE_FINISHED); // TODO: Make it better
|
ChangeTeamState(Team, TEAMSTATE_FINISHED); // TODO: Make it better
|
||||||
OnTeamFinish(Team, apTeamPlayers, PlayersCount, TimeTicks, aTimestamp);
|
OnTeamFinish(apTeamPlayers, PlayersCount, Time, aTimestamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -667,7 +666,7 @@ float *CGameTeams::GetCurrentTimeCp(CPlayer *Player)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGameTeams::OnTeamFinish(int Team, CPlayer **Players, unsigned int Size, int TimeTicks, const char *pTimestamp)
|
void CGameTeams::OnTeamFinish(CPlayer **Players, unsigned int Size, float Time, const char *pTimestamp)
|
||||||
{
|
{
|
||||||
int aPlayerCids[MAX_CLIENTS];
|
int aPlayerCids[MAX_CLIENTS];
|
||||||
|
|
||||||
|
@ -686,16 +685,13 @@ void CGameTeams::OnTeamFinish(int Team, CPlayer **Players, unsigned int Size, in
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Size >= (unsigned int)g_Config.m_SvMinTeamSize)
|
if(Size >= (unsigned int)g_Config.m_SvMinTeamSize)
|
||||||
GameServer()->Score()->SaveTeamScore(Team, aPlayerCids, Size, TimeTicks, pTimestamp);
|
GameServer()->Score()->SaveTeamScore(aPlayerCids, Size, Time, pTimestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGameTeams::OnFinish(CPlayer *Player, int TimeTicks, const char *pTimestamp)
|
void CGameTeams::OnFinish(CPlayer *Player, float Time, const char *pTimestamp)
|
||||||
{
|
{
|
||||||
if(!Player || !Player->IsPlaying())
|
if(!Player || !Player->IsPlaying())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
float Time = TimeTicks / (float)Server()->TickSpeed();
|
|
||||||
|
|
||||||
// TODO:DDRace:btd: this ugly
|
// TODO:DDRace:btd: this ugly
|
||||||
const int ClientId = Player->GetCid();
|
const int ClientId = Player->GetCid();
|
||||||
CPlayerData *pData = GameServer()->Score()->PlayerData(ClientId);
|
CPlayerData *pData = GameServer()->Score()->PlayerData(ClientId);
|
||||||
|
@ -808,7 +804,7 @@ void CGameTeams::OnFinish(CPlayer *Player, int TimeTicks, const char *pTimestamp
|
||||||
|
|
||||||
if(CallSaveScore)
|
if(CallSaveScore)
|
||||||
if(g_Config.m_SvNamelessScore || !str_startswith(Server()->ClientName(ClientId), "nameless tee"))
|
if(g_Config.m_SvNamelessScore || !str_startswith(Server()->ClientName(ClientId), "nameless tee"))
|
||||||
GameServer()->Score()->SaveScore(ClientId, TimeTicks, pTimestamp,
|
GameServer()->Score()->SaveScore(ClientId, Time, pTimestamp,
|
||||||
GetCurrentTimeCp(Player), Player->m_NotEligibleForFinish);
|
GetCurrentTimeCp(Player), Player->m_NotEligibleForFinish);
|
||||||
|
|
||||||
bool NeedToSendNewServerRecord = false;
|
bool NeedToSendNewServerRecord = false;
|
||||||
|
|
|
@ -47,8 +47,8 @@ class CGameTeams
|
||||||
*/
|
*/
|
||||||
void KillTeam(int Team, int NewStrongId, int ExceptId = -1);
|
void KillTeam(int Team, int NewStrongId, int ExceptId = -1);
|
||||||
bool TeamFinished(int Team);
|
bool TeamFinished(int Team);
|
||||||
void OnTeamFinish(int Team, CPlayer **Players, unsigned int Size, int TimeTicks, const char *pTimestamp);
|
void OnTeamFinish(CPlayer **Players, unsigned int Size, float Time, const char *pTimestamp);
|
||||||
void OnFinish(CPlayer *Player, int TimeTicks, const char *pTimestamp);
|
void OnFinish(CPlayer *Player, float Time, const char *pTimestamp);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum
|
enum
|
||||||
|
|
|
@ -811,34 +811,6 @@ void CTeeHistorian::RecordAntibot(const void *pData, int DataSize)
|
||||||
WriteExtra(UUID_TEEHISTORIAN_ANTIBOT, pData, DataSize);
|
WriteExtra(UUID_TEEHISTORIAN_ANTIBOT, pData, DataSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTeeHistorian::RecordPlayerFinish(int ClientId, int TimeTicks)
|
|
||||||
{
|
|
||||||
CPacker Buffer;
|
|
||||||
Buffer.Reset();
|
|
||||||
Buffer.AddInt(ClientId);
|
|
||||||
Buffer.AddInt(TimeTicks);
|
|
||||||
if(m_Debug)
|
|
||||||
{
|
|
||||||
dbg_msg("teehistorian", "player_finish cid=%d Time=%d", ClientId, TimeTicks);
|
|
||||||
}
|
|
||||||
|
|
||||||
WriteExtra(UUID_TEEHISTORIAN_PLAYER_FINISH, Buffer.Data(), Buffer.Size());
|
|
||||||
}
|
|
||||||
|
|
||||||
void CTeeHistorian::RecordTeamFinish(int TeamId, int TimeTicks)
|
|
||||||
{
|
|
||||||
CPacker Buffer;
|
|
||||||
Buffer.Reset();
|
|
||||||
Buffer.AddInt(TeamId);
|
|
||||||
Buffer.AddInt(TimeTicks);
|
|
||||||
if(m_Debug)
|
|
||||||
{
|
|
||||||
dbg_msg("teehistorian", "player_finish cid=%d Time=%d", TeamId, TimeTicks);
|
|
||||||
}
|
|
||||||
|
|
||||||
WriteExtra(UUID_TEEHISTORIAN_TEAM_FINISH, Buffer.Data(), Buffer.Size());
|
|
||||||
}
|
|
||||||
|
|
||||||
void CTeeHistorian::Finish()
|
void CTeeHistorian::Finish()
|
||||||
{
|
{
|
||||||
dbg_assert(m_State == STATE_START || m_State == STATE_INPUTS || m_State == STATE_BEFORE_ENDTICK || m_State == STATE_BEFORE_TICK, "invalid teehistorian state");
|
dbg_assert(m_State == STATE_START || m_State == STATE_INPUTS || m_State == STATE_BEFORE_ENDTICK || m_State == STATE_BEFORE_TICK, "invalid teehistorian state");
|
||||||
|
|
|
@ -91,9 +91,6 @@ public:
|
||||||
|
|
||||||
void RecordAntibot(const void *pData, int DataSize);
|
void RecordAntibot(const void *pData, int DataSize);
|
||||||
|
|
||||||
void RecordPlayerFinish(int ClientId, int TimeTicks);
|
|
||||||
void RecordTeamFinish(int TeamId, int TimeTicks);
|
|
||||||
|
|
||||||
int m_Debug; // Possible values: 0, 1, 2.
|
int m_Debug; // Possible values: 0, 1, 2.
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -849,42 +849,13 @@ TEST_F(TeeHistorian, PlayerName)
|
||||||
// (PLAYER_NAME) id=21 name="nameless tee"
|
// (PLAYER_NAME) id=21 name="nameless tee"
|
||||||
0x15,
|
0x15,
|
||||||
0x6e, 0x61, 0x6d, 0x65, 0x6c, 0x65, 0x73, 0x73,
|
0x6e, 0x61, 0x6d, 0x65, 0x6c, 0x65, 0x73, 0x73,
|
||||||
0x20, 0x74, 0x65, 0x65, 0x00};
|
0x20, 0x74, 0x65, 0x65
|
||||||
|
};
|
||||||
|
|
||||||
m_TH.RecordPlayerName(21, "nameless tee");
|
m_TH.RecordPlayerName(21, "nameless tee");
|
||||||
Expect(EXPECTED, sizeof(EXPECTED));
|
Expect(EXPECTED, sizeof(EXPECTED));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(TeeHistorian, PlayerFinish)
|
|
||||||
{
|
|
||||||
const unsigned char EXPECTED[] = {
|
|
||||||
// EX uuid=68943c01-2348-3e01-9490-3f27f8269d94 datalen=4
|
|
||||||
0x4a,
|
|
||||||
0x68, 0x94, 0x3c, 0x01, 0x23, 0x48, 0x3e, 0x01,
|
|
||||||
0x94, 0x90, 0x3f, 0x27, 0xf8, 0x26, 0x9d, 0x94,
|
|
||||||
0x04,
|
|
||||||
// (PLAYER_FINISH) id=1 time=1000000
|
|
||||||
0x01, 0x80, 0x89, 0x7a};
|
|
||||||
|
|
||||||
m_TH.RecordPlayerFinish(1, 1000000);
|
|
||||||
Expect(EXPECTED, sizeof(EXPECTED));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(TeeHistorian, TeamFinish)
|
|
||||||
{
|
|
||||||
const unsigned char EXPECTED[] = {
|
|
||||||
// EX uuid=9588b9af-3fdc-3760-8043-82deeee317a5 datalen=4
|
|
||||||
0x4a,
|
|
||||||
0x95, 0x88, 0xb9, 0xaf, 0x3f, 0xdc, 0x37, 0x60,
|
|
||||||
0x80, 0x43, 0x82, 0xde, 0xee, 0xe3, 0x17, 0xa5,
|
|
||||||
0x03,
|
|
||||||
// (TEAM_FINISH) team=63 Time=5000
|
|
||||||
0x3f, 0xa8, 0x0f};
|
|
||||||
|
|
||||||
m_TH.RecordTeamFinish(63, 1000);
|
|
||||||
Expect(EXPECTED, sizeof(EXPECTED));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_F(TeeHistorian, PrevGameUuid)
|
TEST_F(TeeHistorian, PrevGameUuid)
|
||||||
{
|
{
|
||||||
m_GameInfo.m_HavePrevGameUuid = true;
|
m_GameInfo.m_HavePrevGameUuid = true;
|
||||||
|
|
Loading…
Reference in a new issue