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

Method SaveTeam

src/game/server/score.cpp:309–354  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

307}
308
309void CScore::SaveTeam(int ClientId, const char *pCode, const char *pServer)
310{
311 if(RateLimitPlayer(ClientId))
312 return;
313 auto *pController = GameServer()->m_pController;
314 int Team = pController->Teams().m_Core.Team(ClientId);
315 if(pController->Teams().GetSaving(Team))
316 {
317 GameServer()->SendChatTarget(ClientId, "Team save already in progress");
318 return;
319 }
320 if(pController->Teams().IsPractice(Team))
321 {
322 GameServer()->SendChatTarget(ClientId, "Team save disabled for teams in practice mode");
323 return;
324 }
325
326 auto SaveResult = std::make_shared<CScoreSaveResult>(ClientId, Server()->ClientName(ClientId), pServer);
327 SaveResult->m_SaveId = RandomUuid();
328 ESaveResult Result = SaveResult->m_SavedTeam.Save(GameServer(), Team);
329 if(CSaveTeam::HandleSaveError(Result, ClientId, GameServer()))
330 return;
331 pController->Teams().SetSaving(Team, SaveResult);
332
333 auto Tmp = std::make_unique<CSqlTeamSaveData>(SaveResult);
334 str_copy(Tmp->m_aCode, pCode, sizeof(Tmp->m_aCode));
335 str_copy(Tmp->m_aMap, GameServer()->Map()->BaseName(), sizeof(Tmp->m_aMap));
336 str_copy(Tmp->m_aServer, pServer, sizeof(Tmp->m_aServer));
337 str_copy(Tmp->m_aClientName, this->Server()->ClientName(ClientId), sizeof(Tmp->m_aClientName));
338 Tmp->m_aGeneratedCode[0] = '\0';
339 GeneratePassphrase(Tmp->m_aGeneratedCode, sizeof(Tmp->m_aGeneratedCode));
340
341 pController->Teams().KillCharacterOrTeam(ClientId, Team);
342
343 GameServer()->SendSaveCode(
344 Team,
345 SaveResult->m_SavedTeam.GetMembersCount(),
346 SAVESTATE_PENDING,
347 "",
348 SaveResult->m_aRequestingPlayer,
349 Tmp->m_aServer,
350 Tmp->m_aGeneratedCode,
351 Tmp->m_aCode);
352
353 m_pPool->ExecuteWrite(CScoreWorker::SaveTeam, std::move(Tmp), "save team");
354}
355
356void CScore::LoadTeam(const char *pCode, int ClientId)
357{

Callers 1

ConSaveMethod · 0.45

Calls 15

ServerMethod · 0.95
RandomUuidFunction · 0.85
GetSavingMethod · 0.80
SendChatTargetMethod · 0.80
IsPracticeMethod · 0.80
ClientNameMethod · 0.80
SetSavingMethod · 0.80
KillCharacterOrTeamMethod · 0.80
SendSaveCodeMethod · 0.80
GetMembersCountMethod · 0.80
ExecuteWriteMethod · 0.80
ServerClass · 0.50

Tested by

no test coverage detected