mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 09:34:19 +00:00
Make PlayerResult messages an union variant
as it is only used for DIRECT and ALL variants and for no other variants
This commit is contained in:
parent
4a810091b1
commit
67643e82b0
|
@ -874,23 +874,22 @@ void CPlayer::ProcessSqlResult(CSqlPlayerResult &Result)
|
||||||
{
|
{
|
||||||
if(Result.m_Done) // SQL request was successful
|
if(Result.m_Done) // SQL request was successful
|
||||||
{
|
{
|
||||||
int NumMessages = (int)(sizeof(Result.m_aaMessages)/sizeof(Result.m_aaMessages[0]));
|
|
||||||
switch(Result.m_MessageKind)
|
switch(Result.m_MessageKind)
|
||||||
{
|
{
|
||||||
case CSqlPlayerResult::DIRECT:
|
case CSqlPlayerResult::DIRECT:
|
||||||
for(int i = 0; i < NumMessages; i++)
|
for(int i = 0; i < CSqlPlayerResult::MAX_MESSAGES; i++)
|
||||||
{
|
{
|
||||||
if(Result.m_aaMessages[i][0] == 0)
|
if(Result.m_Data.m_aaMessages[i][0] == 0)
|
||||||
break;
|
break;
|
||||||
GameServer()->SendChatTarget(m_ClientID, Result.m_aaMessages[i]);
|
GameServer()->SendChatTarget(m_ClientID, Result.m_Data.m_aaMessages[i]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CSqlPlayerResult::ALL:
|
case CSqlPlayerResult::ALL:
|
||||||
for(int i = 0; i < NumMessages; i++)
|
for(int i = 0; i < CSqlPlayerResult::MAX_MESSAGES; i++)
|
||||||
{
|
{
|
||||||
if(Result.m_aaMessages[i][0] == 0)
|
if(Result.m_Data.m_aaMessages[i][0] == 0)
|
||||||
break;
|
break;
|
||||||
GameServer()->SendChat(-1, CGameContext::CHAT_ALL, Result.m_aaMessages[i]);
|
GameServer()->SendChat(-1, CGameContext::CHAT_ALL, Result.m_Data.m_aaMessages[i]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CSqlPlayerResult::BROADCAST:
|
case CSqlPlayerResult::BROADCAST:
|
||||||
|
|
|
@ -36,8 +36,8 @@ void CSqlPlayerResult::SetVariant(Variant v)
|
||||||
{
|
{
|
||||||
case DIRECT:
|
case DIRECT:
|
||||||
case ALL:
|
case ALL:
|
||||||
for(int i = 0; i < (int)(sizeof(m_aaMessages)/sizeof(m_aaMessages[0])); i++)
|
for(int i = 0; i < MAX_MESSAGES; i++)
|
||||||
m_aaMessages[i][0] = 0;
|
m_Data.m_aaMessages[i][0] = 0;
|
||||||
break;
|
break;
|
||||||
case BROADCAST:
|
case BROADCAST:
|
||||||
m_Data.m_Broadcast[0] = 0;
|
m_Data.m_Broadcast[0] = 0;
|
||||||
|
@ -335,7 +335,7 @@ void CSqlScore::MapVote(int ClientID, const char* MapName)
|
||||||
bool CSqlScore::MapVoteThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
bool CSqlScore::MapVoteThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
||||||
{
|
{
|
||||||
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
||||||
auto paMessages = pData->m_pResult->m_aaMessages;
|
auto paMessages = pData->m_pResult->m_Data.m_aaMessages;
|
||||||
|
|
||||||
if (HandleFailure)
|
if (HandleFailure)
|
||||||
return true;
|
return true;
|
||||||
|
@ -444,7 +444,7 @@ bool CSqlScore::MapInfoThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerR
|
||||||
|
|
||||||
if(pSqlServer->GetResults()->rowsCount() != 1)
|
if(pSqlServer->GetResults()->rowsCount() != 1)
|
||||||
{
|
{
|
||||||
str_format(pData->m_pResult->m_aaMessages[0], sizeof(pData->m_pResult->m_aaMessages[0]),
|
str_format(pData->m_pResult->m_Data.m_aaMessages[0], sizeof(pData->m_pResult->m_Data.m_aaMessages[0]),
|
||||||
"No map like \"%s\" found.", pData->m_Name.Str());
|
"No map like \"%s\" found.", pData->m_Name.Str());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -499,7 +499,7 @@ bool CSqlScore::MapInfoThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerR
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
str_format(pData->m_pResult->m_aaMessages[0], sizeof(pData->m_pResult->m_aaMessages[0]),
|
str_format(pData->m_pResult->m_Data.m_aaMessages[0], sizeof(pData->m_pResult->m_Data.m_aaMessages[0]),
|
||||||
"\"%s\" by %s on %s, %s, %d %s%s, %d %s by %d %s%s%s",
|
"\"%s\" by %s on %s, %s, %d %s%s, %d %s by %d %s%s%s",
|
||||||
aMap, aMapper, aServer, aStars,
|
aMap, aMapper, aServer, aStars,
|
||||||
Points, Points == 1 ? "point" : "points",
|
Points, Points == 1 ? "point" : "points",
|
||||||
|
@ -548,7 +548,7 @@ void CSqlScore::SaveScore(int ClientID, float Time, const char *pTimestamp, floa
|
||||||
bool CSqlScore::SaveScoreThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
bool CSqlScore::SaveScoreThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
||||||
{
|
{
|
||||||
const CSqlScoreData *pData = dynamic_cast<const CSqlScoreData *>(pGameData);
|
const CSqlScoreData *pData = dynamic_cast<const CSqlScoreData *>(pGameData);
|
||||||
auto paMessages = pData->m_pResult->m_aaMessages;
|
auto paMessages = pData->m_pResult->m_Data.m_aaMessages;
|
||||||
|
|
||||||
if(HandleFailure)
|
if(HandleFailure)
|
||||||
{
|
{
|
||||||
|
@ -838,7 +838,7 @@ bool CSqlScore::ShowRankThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayer
|
||||||
|
|
||||||
if(pSqlServer->GetResults()->rowsCount() != 1)
|
if(pSqlServer->GetResults()->rowsCount() != 1)
|
||||||
{
|
{
|
||||||
str_format(pData->m_pResult->m_aaMessages[0], sizeof(pData->m_pResult->m_aaMessages[0]),
|
str_format(pData->m_pResult->m_Data.m_aaMessages[0], sizeof(pData->m_pResult->m_Data.m_aaMessages[0]),
|
||||||
"%s is not ranked", pData->m_Name.Str());
|
"%s is not ranked", pData->m_Name.Str());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -849,13 +849,13 @@ bool CSqlScore::ShowRankThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayer
|
||||||
int Rank = pSqlServer->GetResults()->getInt("Rank");
|
int Rank = pSqlServer->GetResults()->getInt("Rank");
|
||||||
if(g_Config.m_SvHideScore)
|
if(g_Config.m_SvHideScore)
|
||||||
{
|
{
|
||||||
str_format(pData->m_pResult->m_aaMessages[0], sizeof(pData->m_pResult->m_aaMessages[0]),
|
str_format(pData->m_pResult->m_Data.m_aaMessages[0], sizeof(pData->m_pResult->m_Data.m_aaMessages[0]),
|
||||||
"Your time: %02d:%05.2f", (int)(Time/60), Time-((int)Time/60*60));
|
"Your time: %02d:%05.2f", (int)(Time/60), Time-((int)Time/60*60));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pData->m_pResult->m_MessageKind = CSqlPlayerResult::ALL;
|
pData->m_pResult->m_MessageKind = CSqlPlayerResult::ALL;
|
||||||
str_format(pData->m_pResult->m_aaMessages[0], sizeof(pData->m_pResult->m_aaMessages[0]),
|
str_format(pData->m_pResult->m_Data.m_aaMessages[0], sizeof(pData->m_pResult->m_Data.m_aaMessages[0]),
|
||||||
"%d. %s Time: %02d:%05.2f, requested by %s",
|
"%d. %s Time: %02d:%05.2f, requested by %s",
|
||||||
Rank, pSqlServer->GetResults()->getString("Name").c_str(),
|
Rank, pSqlServer->GetResults()->getString("Name").c_str(),
|
||||||
(int)(Time/60), Time-((int)Time/60*60), pData->m_RequestingPlayer.Str());
|
(int)(Time/60), Time-((int)Time/60*60), pData->m_RequestingPlayer.Str());
|
||||||
|
@ -927,7 +927,7 @@ bool CSqlScore::ShowTeamRankThread(CSqlServer* pSqlServer, const CSqlData<CSqlPl
|
||||||
|
|
||||||
if(Rows < 1)
|
if(Rows < 1)
|
||||||
{
|
{
|
||||||
str_format(pData->m_pResult->m_aaMessages[0], sizeof(pData->m_pResult->m_aaMessages[0]),
|
str_format(pData->m_pResult->m_Data.m_aaMessages[0], sizeof(pData->m_pResult->m_Data.m_aaMessages[0]),
|
||||||
"%s has no team ranks", pData->m_Name.Str());
|
"%s has no team ranks", pData->m_Name.Str());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -949,13 +949,13 @@ bool CSqlScore::ShowTeamRankThread(CSqlServer* pSqlServer, const CSqlData<CSqlPl
|
||||||
|
|
||||||
if(g_Config.m_SvHideScore)
|
if(g_Config.m_SvHideScore)
|
||||||
{
|
{
|
||||||
str_format(pData->m_pResult->m_aaMessages[0], sizeof(pData->m_pResult->m_aaMessages[0]),
|
str_format(pData->m_pResult->m_Data.m_aaMessages[0], sizeof(pData->m_pResult->m_Data.m_aaMessages[0]),
|
||||||
"Your team time: %02d:%05.02f", (int)(Time/60), Time-((int)Time/60*60));
|
"Your team time: %02d:%05.02f", (int)(Time/60), Time-((int)Time/60*60));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pData->m_pResult->m_MessageKind = CSqlPlayerResult::ALL;
|
pData->m_pResult->m_MessageKind = CSqlPlayerResult::ALL;
|
||||||
str_format(pData->m_pResult->m_aaMessages[0], sizeof(pData->m_pResult->m_aaMessages[0]),
|
str_format(pData->m_pResult->m_Data.m_aaMessages[0], sizeof(pData->m_pResult->m_Data.m_aaMessages[0]),
|
||||||
"%d. %s Team time: %02d:%05.02f, requested by %s",
|
"%d. %s Team time: %02d:%05.02f, requested by %s",
|
||||||
Rank, aNames, (int)(Time/60), Time-((int)Time/60*60), pData->m_RequestingPlayer.Str());
|
Rank, aNames, (int)(Time/60), Time-((int)Time/60*60), pData->m_RequestingPlayer.Str());
|
||||||
}
|
}
|
||||||
|
@ -1010,21 +1010,21 @@ bool CSqlScore::ShowTop5Thread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayer
|
||||||
pSqlServer->executeSqlQuery(aBuf);
|
pSqlServer->executeSqlQuery(aBuf);
|
||||||
|
|
||||||
// show top5
|
// show top5
|
||||||
strcpy(pData->m_pResult->m_aaMessages[0], "----------- Top 5 -----------");
|
strcpy(pData->m_pResult->m_Data.m_aaMessages[0], "----------- Top 5 -----------");
|
||||||
|
|
||||||
int Line = 1;
|
int Line = 1;
|
||||||
while(pSqlServer->GetResults()->next())
|
while(pSqlServer->GetResults()->next())
|
||||||
{
|
{
|
||||||
float Time = (float)pSqlServer->GetResults()->getDouble("Time");
|
float Time = (float)pSqlServer->GetResults()->getDouble("Time");
|
||||||
int Rank = pSqlServer->GetResults()->getInt("Rank");
|
int Rank = pSqlServer->GetResults()->getInt("Rank");
|
||||||
str_format(pData->m_pResult->m_aaMessages[Line], sizeof(pData->m_pResult->m_aaMessages[0]),
|
str_format(pData->m_pResult->m_Data.m_aaMessages[Line], sizeof(pData->m_pResult->m_Data.m_aaMessages[0]),
|
||||||
"%d. %s Time: %02d:%05.2f",
|
"%d. %s Time: %02d:%05.2f",
|
||||||
Rank, pSqlServer->GetResults()->getString("Name").c_str(),
|
Rank, pSqlServer->GetResults()->getString("Name").c_str(),
|
||||||
(int)(Time/60), Time-((int)Time/60*60)
|
(int)(Time/60), Time-((int)Time/60*60)
|
||||||
);
|
);
|
||||||
Line++;
|
Line++;
|
||||||
}
|
}
|
||||||
strcpy(pData->m_pResult->m_aaMessages[Line], "-------------------------------");
|
strcpy(pData->m_pResult->m_Data.m_aaMessages[Line], "-------------------------------");
|
||||||
|
|
||||||
pData->m_pResult->m_Done = true;
|
pData->m_pResult->m_Done = true;
|
||||||
dbg_msg("sql", "Showing top5 done");
|
dbg_msg("sql", "Showing top5 done");
|
||||||
|
@ -1047,7 +1047,7 @@ void CSqlScore::ShowTeamTop5(int ClientID, int Offset)
|
||||||
bool CSqlScore::ShowTeamTop5Thread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
bool CSqlScore::ShowTeamTop5Thread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
||||||
{
|
{
|
||||||
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
||||||
auto paMessages = pData->m_pResult->m_aaMessages;
|
auto paMessages = pData->m_pResult->m_Data.m_aaMessages;
|
||||||
if (HandleFailure)
|
if (HandleFailure)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -1132,7 +1132,7 @@ void CSqlScore::ShowTimes(int ClientID, const char* pName, int Offset)
|
||||||
bool CSqlScore::ShowTimesThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
bool CSqlScore::ShowTimesThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
||||||
{
|
{
|
||||||
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
||||||
auto paMessages = pData->m_pResult->m_aaMessages;
|
auto paMessages = pData->m_pResult->m_Data.m_aaMessages;
|
||||||
|
|
||||||
if (HandleFailure)
|
if (HandleFailure)
|
||||||
return true;
|
return true;
|
||||||
|
@ -1236,7 +1236,7 @@ void CSqlScore::ShowPoints(int ClientID, const char* pName)
|
||||||
bool CSqlScore::ShowPointsThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
bool CSqlScore::ShowPointsThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
||||||
{
|
{
|
||||||
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
||||||
auto paMessages = pData->m_pResult->m_aaMessages;
|
auto paMessages = pData->m_pResult->m_Data.m_aaMessages;
|
||||||
|
|
||||||
if (HandleFailure)
|
if (HandleFailure)
|
||||||
return true;
|
return true;
|
||||||
|
@ -1293,7 +1293,7 @@ void CSqlScore::ShowTopPoints(int ClientID, int Offset)
|
||||||
bool CSqlScore::ShowTopPointsThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
bool CSqlScore::ShowTopPointsThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
||||||
{
|
{
|
||||||
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
||||||
auto paMessages = pData->m_pResult->m_aaMessages;
|
auto paMessages = pData->m_pResult->m_Data.m_aaMessages;
|
||||||
|
|
||||||
if (HandleFailure)
|
if (HandleFailure)
|
||||||
return true;
|
return true;
|
||||||
|
@ -1821,7 +1821,7 @@ void CSqlScore::GetSaves(int ClientID)
|
||||||
bool CSqlScore::GetSavesThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
bool CSqlScore::GetSavesThread(CSqlServer* pSqlServer, const CSqlData<CSqlPlayerResult> *pGameData, bool HandleFailure)
|
||||||
{
|
{
|
||||||
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
const CSqlPlayerRequest *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
|
||||||
auto paMessages = pData->m_pResult->m_aaMessages;
|
auto paMessages = pData->m_pResult->m_Data.m_aaMessages;
|
||||||
|
|
||||||
if (HandleFailure)
|
if (HandleFailure)
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -20,6 +20,10 @@ struct CSqlPlayerResult
|
||||||
std::atomic_bool m_Done;
|
std::atomic_bool m_Done;
|
||||||
CSqlPlayerResult();
|
CSqlPlayerResult();
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MAX_MESSAGES = 7,
|
||||||
|
};
|
||||||
|
|
||||||
enum Variant
|
enum Variant
|
||||||
{
|
{
|
||||||
DIRECT,
|
DIRECT,
|
||||||
|
@ -28,8 +32,8 @@ struct CSqlPlayerResult
|
||||||
MAP_VOTE,
|
MAP_VOTE,
|
||||||
PLAYER_INFO,
|
PLAYER_INFO,
|
||||||
} m_MessageKind;
|
} m_MessageKind;
|
||||||
char m_aaMessages[7][512];
|
|
||||||
union {
|
union {
|
||||||
|
char m_aaMessages[MAX_MESSAGES][512];
|
||||||
char m_Broadcast[1024];
|
char m_Broadcast[1024];
|
||||||
struct {
|
struct {
|
||||||
float m_Time;
|
float m_Time;
|
||||||
|
|
Loading…
Reference in a new issue