MCPcopy Create free account
hub / github.com/ddnet/ddnet / LoadPlayerTimeCp

Method LoadPlayerTimeCp

src/game/server/scoreworker.cpp:256–304  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

254}
255
256bool CScoreWorker::LoadPlayerTimeCp(IDbConnection *pSqlServer, const ISqlData *pGameData, char *pError, int ErrorSize)
257{
258 const auto *pData = dynamic_cast<const CSqlPlayerRequest *>(pGameData);
259 auto *pResult = dynamic_cast<CScorePlayerResult *>(pGameData->m_pResult.get());
260 auto *paMessages = pResult->m_Data.m_aaMessages;
261
262 char aBuf[1024];
263 str_format(aBuf, sizeof(aBuf),
264 "SELECT"
265 " Time, cp1, cp2, cp3, cp4, cp5, cp6, cp7, cp8, cp9, cp10, cp11, cp12, cp13, "
266 " cp14, cp15, cp16, cp17, cp18, cp19, cp20, cp21, cp22, cp23, cp24, cp25 "
267 "FROM %s_race "
268 "WHERE Map = ? AND Name = ? AND "
269 " (cp1 + cp2 + cp3 + cp4 + cp5 + cp6 + cp7 + cp8 + cp9 + cp10 + cp11 + cp12 + cp13 + cp14 + "
270 " cp15 + cp16 + cp17 + cp18 + cp19 + cp20 + cp21 + cp22 + cp23 + cp24 + cp25) > 0 "
271 "ORDER BY Time ASC "
272 "LIMIT 1",
273 pSqlServer->GetPrefix());
274 if(!pSqlServer->PrepareStatement(aBuf, pError, ErrorSize))
275 {
276 return false;
277 }
278
279 const char *pPlayer = pData->m_aName[0] != '\0' ? pData->m_aName : pData->m_aRequestingPlayer;
280 pSqlServer->BindString(1, pData->m_aMap);
281 pSqlServer->BindString(2, pPlayer);
282
283 bool End;
284 if(!pSqlServer->Step(&End, pError, ErrorSize))
285 {
286 return false;
287 }
288 if(!End)
289 {
290 pResult->SetVariant(CScorePlayerResult::PLAYER_TIMECP);
291 pResult->m_Data.m_Info.m_Time = pSqlServer->GetFloat(1);
292 for(int i = 0; i < NUM_CHECKPOINTS; i++)
293 {
294 pResult->m_Data.m_Info.m_aTimeCp[i] = pSqlServer->GetFloat(i + 2);
295 }
296 str_copy(pResult->m_Data.m_Info.m_aRequestedPlayer, pPlayer, sizeof(pResult->m_Data.m_Info.m_aRequestedPlayer));
297 }
298 else
299 {
300 pResult->SetVariant(CScorePlayerResult::DIRECT);
301 str_format(paMessages[0], sizeof(paMessages[0]), "'%s' has no checkpoint times available", pPlayer);
302 }
303 return true;
304}
305
306bool CScoreWorker::MapVote(IDbConnection *pSqlServer, const ISqlData *pGameData, char *pError, int ErrorSize)
307{

Callers

nothing calls this directly

Calls 9

str_formatFunction · 0.85
getMethod · 0.80
GetPrefixMethod · 0.80
SetVariantMethod · 0.80
str_copyFunction · 0.50
PrepareStatementMethod · 0.45
BindStringMethod · 0.45
StepMethod · 0.45
GetFloatMethod · 0.45

Tested by

no test coverage detected