| 254 | } |
| 255 | |
| 256 | bool 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 | |
| 306 | bool CScoreWorker::MapVote(IDbConnection *pSqlServer, const ISqlData *pGameData, char *pError, int ErrorSize) |
| 307 | { |
nothing calls this directly
no test coverage detected