OpenClonk
C4GameSaveNetwork Class Reference

#include <C4GameSave.h>

Inheritance diagram for C4GameSaveNetwork:
[legend]
Collaboration diagram for C4GameSaveNetwork:
[legend]

Public Member Functions

 C4GameSaveNetwork (bool fAInitial)
 
bool Save (const char *szFilename)
 
bool Save (C4Group &hToGroup, bool fKeepGroup)
 
bool SaveDesc (C4Group &hToGroup)
 
bool Close ()
 
C4GroupGetGroup ()
 

Protected Types

enum  SyncState { SyncNONE = 0 , SyncScenario = 1 , SyncSavegame = 2 , SyncSynchronized = 3 }
 

Protected Member Functions

bool GetSaveOrigin () override
 
bool GetKeepTitle () override
 
bool GetSaveDesc () override
 
bool GetCreateSmallFile () override
 
bool GetCopyScenario () override
 
void AdjustCore (C4Scenario &rC4S) override
 
virtual bool GetSaveRuntimeData ()
 
virtual const char * GetSortOrder ()
 
virtual bool GetForceExactLandscape ()
 
virtual bool GetClearOrigin ()
 
virtual bool GetSaveUserPlayers ()
 
virtual bool GetSaveScriptPlayers ()
 
virtual bool GetSaveUserPlayerFiles ()
 
virtual bool GetSaveScriptPlayerFiles ()
 
virtual bool WriteDesc (StdStrBuf &sBuf)
 
virtual bool SaveComponents ()
 
virtual bool OnSaving ()
 
bool IsExact ()
 
bool IsSynced ()
 
void WriteDescLineFeed (StdStrBuf &sBuf)
 
void WriteDescDate (StdStrBuf &sBuf, bool fRecord=false)
 
void WriteDescGameTime (StdStrBuf &sBuf)
 
void WriteDescDefinitions (StdStrBuf &sBuf)
 
void WriteDescNetworkClients (StdStrBuf &sBuf)
 
void WriteDescPlayers (StdStrBuf &sBuf, bool fByTeam, int32_t idTeam)
 
void WriteDescPlayers (StdStrBuf &sBuf)
 
void WriteDescLeague (StdStrBuf &sBuf, bool fLeague, const char *strLeagueName)
 
void WriteDescEngine (StdStrBuf &sBuf)
 

Protected Attributes

C4GrouppSaveGroup
 
bool fOwnGroup
 
bool fInitial
 
enum C4GameSave::SyncState Sync
 

Detailed Description

Definition at line 171 of file C4GameSave.h.

Member Enumeration Documentation

◆ SyncState

enum C4GameSave::SyncState
protectedinherited
Enumerator
SyncNONE 
SyncScenario 
SyncSavegame 
SyncSynchronized 

Definition at line 48 of file C4GameSave.h.

49  {
50  SyncNONE = 0,
51  SyncScenario = 1, // save (eventually static) landscape and objects only to play as a separate scenario later
52  SyncSavegame = 2, // save all runtime data, so the scenario can be continued at a future date
53  SyncSynchronized = 3 // save exact runtime data to be network- or replay-save
54  } Sync; // sync is set by ctor
enum C4GameSave::SyncState Sync
@ SyncSavegame
Definition: C4GameSave.h:52
@ SyncScenario
Definition: C4GameSave.h:51
@ SyncSynchronized
Definition: C4GameSave.h:53

Constructor & Destructor Documentation

◆ C4GameSaveNetwork()

C4GameSaveNetwork::C4GameSaveNetwork ( bool  fAInitial)
inline

Definition at line 174 of file C4GameSave.h.

174 : C4GameSave(fAInitial, SyncSynchronized) {}
C4GameSave(bool fAInitial, SyncState ASync)
Definition: C4GameSave.h:82

Member Function Documentation

◆ AdjustCore()

void C4GameSaveNetwork::AdjustCore ( C4Scenario rC4S)
overrideprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 560 of file C4GameSave.cpp.

561 {
562  // specific dynamic flags
563  rC4S.Head.NetworkGame=true;
565 }
bool fInitial
Definition: C4GameSave.h:45
bool NetworkGame
Definition: C4Scenario.h:78
bool NetworkRuntimeJoin
Definition: C4Scenario.h:79
C4SHead Head
Definition: C4Scenario.h:232

References C4GameSave::fInitial, C4Scenario::Head, C4SHead::NetworkGame, and C4SHead::NetworkRuntimeJoin.

◆ Close()

bool C4GameSave::Close ( )
inherited

Definition at line 447 of file C4GameSave.cpp.

448 {
449  bool fSuccess = true;
450  // any group open?
451  if (pSaveGroup)
452  {
453  // sort group
454  const char *szSortOrder = GetSortOrder();
455  if (szSortOrder) pSaveGroup->Sort(szSortOrder);
456  // close if owned group
457  if (fOwnGroup)
458  {
459  fSuccess = !!pSaveGroup->Close();
460  delete pSaveGroup;
461  fOwnGroup = false;
462  }
463  pSaveGroup = nullptr;
464  }
465  return fSuccess;
466 }
bool fOwnGroup
Definition: C4GameSave.h:39
C4Group * pSaveGroup
Definition: C4GameSave.h:38
virtual const char * GetSortOrder()
Definition: C4GameSave.h:61
bool Sort(const char *list)
Definition: C4Group.cpp:2470
bool Close()
Definition: C4Group.cpp:971

References C4Group::Close(), C4GameSave::fOwnGroup, C4GameSave::GetSortOrder(), C4GameSave::pSaveGroup, and C4Group::Sort().

Referenced by C4Network2::CreateDynamic(), C4GameSave::Save(), C4Record::Start(), C4Record::StartStreaming(), and C4GameSave::~C4GameSave().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetClearOrigin()

virtual bool C4GameSave::GetClearOrigin ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveScenario.

Definition at line 65 of file C4GameSave.h.

65 { return !GetSaveOrigin(); } // return whether C4S.Head.Origin shall be cleared if it's set
virtual bool GetSaveOrigin()
Definition: C4GameSave.h:64

References C4GameSave::GetSaveOrigin().

Here is the call graph for this function:

◆ GetCopyScenario()

bool C4GameSaveNetwork::GetCopyScenario ( )
inlineoverrideprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 183 of file C4GameSave.h.

183 { return false; } // network dynamics do not base on normal scenario

◆ GetCreateSmallFile()

bool C4GameSaveNetwork::GetCreateSmallFile ( )
inlineoverrideprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 181 of file C4GameSave.h.

181 { return true; }// return whether file size should be minimized

◆ GetForceExactLandscape()

virtual bool C4GameSave::GetForceExactLandscape ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveScenario.

Definition at line 63 of file C4GameSave.h.

63 { return GetSaveRuntimeData() && IsExact(); } // whether exact landscape shall be saved
bool IsExact()
Definition: C4GameSave.h:78
virtual bool GetSaveRuntimeData()
Definition: C4GameSave.h:57

References C4GameSave::GetSaveRuntimeData(), and C4GameSave::IsExact().

Referenced by C4GameSaveScenario::GetForceExactLandscape().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetGroup()

C4Group* C4GameSave::GetGroup ( )
inlineinherited

Definition at line 109 of file C4GameSave.h.

109 { return pSaveGroup; } // get scenario saving group; only open between calls to Save() and Close()

References C4GameSave::pSaveGroup.

◆ GetKeepTitle()

bool C4GameSaveNetwork::GetKeepTitle ( )
inlineoverrideprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 179 of file C4GameSave.h.

179 { return false; } // always delete title files (not used in dynamics)

◆ GetSaveDesc()

bool C4GameSaveNetwork::GetSaveDesc ( )
inlineoverrideprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 180 of file C4GameSave.h.

180 { return false; } // no desc in dynamics

◆ GetSaveOrigin()

bool C4GameSaveNetwork::GetSaveOrigin ( )
inlineoverrideprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 178 of file C4GameSave.h.

178 { return true; } // clients must know where to get music and localization

◆ GetSaveRuntimeData()

virtual bool C4GameSave::GetSaveRuntimeData ( )
inlineprotectedvirtualinherited

Definition at line 57 of file C4GameSave.h.

57 { return !fInitial; } // save exact landscape, players, etc.

References C4GameSave::fInitial.

Referenced by C4GameSave::GetForceExactLandscape(), and C4GameSave::Save().

Here is the caller graph for this function:

◆ GetSaveScriptPlayerFiles()

virtual bool C4GameSave::GetSaveScriptPlayerFiles ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveScenario.

Definition at line 69 of file C4GameSave.h.

69 { return IsExact(); } // return whether .ocp files of joined script players shall be put into the scenario

References C4GameSave::IsExact().

Here is the call graph for this function:

◆ GetSaveScriptPlayers()

virtual bool C4GameSave::GetSaveScriptPlayers ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveScenario.

Definition at line 67 of file C4GameSave.h.

67 { return IsExact(); } // return whether joined script players shall be saved into SavePlayerInfos

References C4GameSave::IsExact().

Here is the call graph for this function:

◆ GetSaveUserPlayerFiles()

virtual bool C4GameSave::GetSaveUserPlayerFiles ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveSavegame.

Definition at line 68 of file C4GameSave.h.

68 { return IsExact(); } // return whether .ocp files of joined user players shall be put into the scenario

References C4GameSave::IsExact().

Here is the call graph for this function:

◆ GetSaveUserPlayers()

virtual bool C4GameSave::GetSaveUserPlayers ( )
inlineprotectedvirtualinherited

Definition at line 66 of file C4GameSave.h.

66 { return IsExact(); } // return whether joined user players shall be saved into SavePlayerInfos

References C4GameSave::IsExact().

Here is the call graph for this function:

◆ GetSortOrder()

virtual const char* C4GameSave::GetSortOrder ( )
inlineprotectedvirtualinherited

Definition at line 61 of file C4GameSave.h.

61 { return C4FLS_Scenario; } // return nullptr to prevent sorting
#define C4FLS_Scenario
Definition: C4Components.h:189

References C4FLS_Scenario.

Referenced by C4GameSave::Close().

Here is the caller graph for this function:

◆ IsExact()

bool C4GameSave::IsExact ( )
inlineprotectedinherited

Definition at line 78 of file C4GameSave.h.

78 { return Sync>=SyncSavegame; } // exact save (players, always exact landscape, etc.)

References C4GameSave::Sync, and C4GameSave::SyncSavegame.

Referenced by C4GameSave::GetForceExactLandscape(), C4GameSave::GetKeepTitle(), C4GameSave::GetSaveScriptPlayerFiles(), C4GameSave::GetSaveScriptPlayers(), C4GameSave::GetSaveUserPlayerFiles(), and C4GameSave::GetSaveUserPlayers().

Here is the caller graph for this function:

◆ IsSynced()

bool C4GameSave::IsSynced ( )
inlineprotectedinherited

Definition at line 79 of file C4GameSave.h.

79 { return Sync>=SyncSynchronized; } // synchronized

References C4GameSave::Sync, and C4GameSave::SyncSynchronized.

◆ OnSaving()

virtual bool C4GameSave::OnSaving ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveSavegame.

Definition at line 75 of file C4GameSave.h.

75 { return true; } // callback for special actions to be performed when saving (like, add sync)

Referenced by C4GameSave::Save().

Here is the caller graph for this function:

◆ Save() [1/2]

bool C4GameSave::Save ( C4Group hToGroup,
bool  fKeepGroup 
)
inherited

Definition at line 414 of file C4GameSave.cpp.

415 {
416  // close any previous
417  Close();
418  // set group
419  pSaveGroup = &hToGroup; fOwnGroup = fKeepGroup;
420  // PreSave-actions (virtual call)
421  if (!OnSaving()) return false;
422  // always save core
423  if (!SaveCore()) { Log(LoadResStr("IDS_ERR_SAVE_CORE")); return false; }
424  // cleanup group
426  // remove: Title text, image and icon if specified
427  if (!GetKeepTitle())
428  {
434  }
435  // save additional runtime data
436  if (GetSaveRuntimeData()) if (!SaveRuntimeData()) return false;
437  // Desc
438  if (GetSaveDesc())
439  if (!SaveDesc(*pSaveGroup))
440  Log(LoadResStr("IDS_ERR_SAVE_DESC")); /* nofail */
441  // save specialized components (virtual call)
442  if (!SaveComponents()) return false;
443  // done, success
444  return true;
445 }
#define C4CFN_Info
Definition: C4Components.h:70
#define C4CFN_PlayerFiles
Definition: C4Components.h:168
#define C4CFN_ScenarioTitle
Definition: C4Components.h:84
#define C4CFN_Titles
Definition: C4Components.h:146
#define C4CFN_ScenarioIcon
Definition: C4Components.h:85
#define C4CFN_ScenarioDesc
Definition: C4Components.h:88
const char * LoadResStr(const char *id)
Definition: C4Language.h:83
bool Log(const char *szMessage)
Definition: C4Log.cpp:204
StdStrBuf FormatString(const char *szFmt,...)
Definition: StdBuf.cpp:270
bool SaveDesc(C4Group &hToGroup)
Definition: C4GameSave.cpp:235
virtual bool SaveComponents()
Definition: C4GameSave.h:74
virtual bool OnSaving()
Definition: C4GameSave.h:75
virtual bool GetSaveDesc()
Definition: C4GameSave.h:59
virtual bool GetKeepTitle()
Definition: C4GameSave.h:58
bool Close()
Definition: C4GameSave.cpp:447
bool Delete(const char *files, bool recursive=false)
Definition: C4Group.cpp:1645

References C4CFN_Info, C4CFN_PlayerFiles, C4CFN_ScenarioDesc, C4CFN_ScenarioIcon, C4CFN_ScenarioTitle, C4CFN_Titles, C4GameSave::Close(), C4Group::Delete(), FormatString(), C4GameSave::fOwnGroup, C4GameSave::GetKeepTitle(), C4GameSave::GetSaveDesc(), C4GameSave::GetSaveRuntimeData(), LoadResStr(), Log(), C4GameSave::OnSaving(), C4GameSave::pSaveGroup, C4GameSave::SaveComponents(), and C4GameSave::SaveDesc().

Here is the call graph for this function:

◆ Save() [2/2]

bool C4GameSave::Save ( const char *  szFilename)
inherited

Definition at line 398 of file C4GameSave.cpp.

399 {
400  // close any previous
401  Close();
402  // create group
403  C4Group *pLSaveGroup = new C4Group();
404  if (!SaveCreateGroup(szFilename, *pLSaveGroup))
405  {
406  LogF(LoadResStr("IDS_ERR_SAVE_TARGETGRP"), szFilename ? szFilename : "nullptr!");
407  delete pLSaveGroup;
408  return false;
409  }
410  // save to it
411  return Save(*pLSaveGroup, true);
412 }
bool LogF(const char *strMessage,...)
Definition: C4Log.cpp:262
bool Save(const char *szFilename)
Definition: C4GameSave.cpp:398

References C4GameSave::Close(), LoadResStr(), and LogF().

Referenced by C4Network2::CreateDynamic(), C4Game::QuickSave(), C4Console::SaveGame(), C4Console::SaveScenario(), C4Record::Start(), and C4Record::StartStreaming().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SaveComponents()

virtual bool C4GameSave::SaveComponents ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveRecord, and C4GameSaveSavegame.

Definition at line 74 of file C4GameSave.h.

74 { return true; } // save (or remove) custom components for specialization

Referenced by C4GameSave::Save().

Here is the caller graph for this function:

◆ SaveDesc()

bool C4GameSave::SaveDesc ( C4Group hToGroup)
inherited

Definition at line 235 of file C4GameSave.cpp.

236 {
237  // Unfortunately, there's no way to prealloc the buffer in an appropriate size
238  StdStrBuf sBuffer;
239 
240  // Scenario title
241  sBuffer.Append(Game.ScenarioTitle.getData());
242  sBuffer.Append("\n\n");
243 
244  // OK; each specializations has its own desc format
245  WriteDesc(sBuffer);
246 
247  // Generate Filename
248  StdStrBuf sFilename; char szLang[3];
249  SCopyUntil(Config.General.Language, szLang, ',', 2);
250  sFilename.Format(C4CFN_ScenarioDesc,szLang);
251 
252  // Save to file
253  return !!hToGroup.Add(sFilename.getData(),sBuffer,false,true);
254 }
C4Config Config
Definition: C4Config.cpp:930
C4Game Game
Definition: C4Globals.cpp:52
void SCopyUntil(const char *szSource, char *sTarget, char cUntil, int iMaxL, int iIndex)
Definition: Standard.cpp:172
char Language[CFG_MaxString+1]
Definition: C4Config.h:37
C4ConfigGeneral General
Definition: C4Config.h:255
StdCopyStrBuf ScenarioTitle
Definition: C4Game.h:103
virtual bool WriteDesc(StdStrBuf &sBuf)
Definition: C4GameSave.h:73
bool Add(const char *filename, const char *entry_name)
Definition: C4Group.cpp:1621
const char * getData() const
Definition: StdBuf.h:442
void Append(const char *pnData, size_t iChars)
Definition: StdBuf.h:519
void Format(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
Definition: StdBuf.cpp:174

References C4Group::Add(), StdStrBuf::Append(), C4CFN_ScenarioDesc, Config, StdStrBuf::Format(), Game, C4Config::General, StdStrBuf::getData(), C4ConfigGeneral::Language, C4Game::ScenarioTitle, SCopyUntil(), and C4GameSave::WriteDesc().

Referenced by C4GameSave::Save(), and C4Record::Stop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WriteDesc()

virtual bool C4GameSave::WriteDesc ( StdStrBuf sBuf)
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveRecord, and C4GameSaveSavegame.

Definition at line 73 of file C4GameSave.h.

73 { return true; } // write desc (contents only)

Referenced by C4GameSave::SaveDesc().

Here is the caller graph for this function:

◆ WriteDescDate()

void C4GameSave::WriteDescDate ( StdStrBuf sBuf,
bool  fRecord = false 
)
protectedinherited

Definition at line 262 of file C4GameSave.cpp.

263 {
264  // write local time/date
265  time_t tTime; time(&tTime);
266  struct tm *pLocalTime;
267  pLocalTime=localtime(&tTime);
268  sBuf.AppendFormat(LoadResStr(fRecord ? "IDS_DESC_DATEREC" : (::Network.isEnabled() ? "IDS_DESC_DATENET" : "IDS_DESC_DATE")),
269  pLocalTime->tm_mday,
270  pLocalTime->tm_mon+1,
271  pLocalTime->tm_year+1900,
272  pLocalTime->tm_hour,
273  pLocalTime->tm_min);
274  WriteDescLineFeed(sBuf);
275 }
C4Network2 Network
Definition: C4Globals.cpp:53
void WriteDescLineFeed(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:256
bool isEnabled() const
Definition: C4Network2.h:203
void AppendFormat(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
Definition: StdBuf.cpp:190

References StdStrBuf::AppendFormat(), C4Network2::isEnabled(), LoadResStr(), Network, and C4GameSave::WriteDescLineFeed().

Referenced by C4GameSaveSavegame::WriteDesc(), and C4GameSaveRecord::WriteDesc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WriteDescDefinitions()

void C4GameSave::WriteDescDefinitions ( StdStrBuf sBuf)
protectedinherited

Definition at line 304 of file C4GameSave.cpp.

305 {
306  // Definition specs
307  if (Game.DefinitionFilenames[0])
308  {
309  char szDef[_MAX_PATH_LEN];
310  // Desc
311  sBuf.Append(LoadResStr("IDS_DESC_DEFSPECS"));
312  // Get definition modules
313  for (int cnt=0; SGetModule(Game.DefinitionFilenames,cnt,szDef); cnt++)
314  {
315  // Get exe relative path
316  StdStrBuf sDefFilename;
317  sDefFilename.Copy(Config.AtRelativePath(szDef));
318  // Append comma
319  if (cnt>0) sBuf.Append(", ");
320  // Apend to desc
321  sBuf.Append(sDefFilename);
322  }
323  // End of line
324  WriteDescLineFeed(sBuf);
325  }
326 }
#define _MAX_PATH_LEN
bool SGetModule(const char *szList, int iIndex, char *sTarget, int iSize)
Definition: Standard.cpp:539
const char * AtRelativePath(const char *filename)
Definition: C4Config.cpp:741
char DefinitionFilenames[20 *_MAX_PATH_LEN]
Definition: C4Game.h:105
void Copy()
Definition: StdBuf.h:467

References _MAX_PATH_LEN, StdStrBuf::Append(), C4Config::AtRelativePath(), Config, StdStrBuf::Copy(), C4Game::DefinitionFilenames, Game, LoadResStr(), SGetModule(), and C4GameSave::WriteDescLineFeed().

Referenced by C4GameSaveSavegame::WriteDesc(), and C4GameSaveRecord::WriteDesc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WriteDescEngine()

void C4GameSave::WriteDescEngine ( StdStrBuf sBuf)
protectedinherited

Definition at line 288 of file C4GameSave.cpp.

289 {
290  char ver[32]; sprintf(ver, "%d.%d", (int)C4XVER1, (int)C4XVER2);
291  sBuf.AppendFormat(LoadResStr("IDS_DESC_VERSION"), ver);
292  WriteDescLineFeed(sBuf);
293 }
#define sprintf
Definition: Standard.h:162

References StdStrBuf::AppendFormat(), LoadResStr(), sprintf, and C4GameSave::WriteDescLineFeed().

Referenced by C4GameSaveRecord::WriteDesc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WriteDescGameTime()

void C4GameSave::WriteDescGameTime ( StdStrBuf sBuf)
protectedinherited

Definition at line 277 of file C4GameSave.cpp.

278 {
279  // Write game duration
280  if (Game.Time)
281  {
282  sBuf.AppendFormat(LoadResStr("IDS_DESC_DURATION"),
283  Game.Time/3600,(Game.Time%3600)/60,Game.Time%60);
284  WriteDescLineFeed(sBuf);
285  }
286 }
int32_t Time
Definition: C4Game.h:132

References StdStrBuf::AppendFormat(), Game, LoadResStr(), C4Game::Time, and C4GameSave::WriteDescLineFeed().

Referenced by C4GameSaveSavegame::WriteDesc(), and C4GameSaveRecord::WriteDesc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WriteDescLeague()

void C4GameSave::WriteDescLeague ( StdStrBuf sBuf,
bool  fLeague,
const char *  strLeagueName 
)
protectedinherited

Definition at line 295 of file C4GameSave.cpp.

296 {
297  if (fLeague)
298  {
299  sBuf.AppendFormat(LoadResStr("IDS_PRC_LEAGUE"), strLeagueName);
300  WriteDescLineFeed(sBuf);
301  }
302 }

References StdStrBuf::AppendFormat(), LoadResStr(), and C4GameSave::WriteDescLineFeed().

Referenced by C4GameSaveRecord::WriteDesc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WriteDescLineFeed()

void C4GameSave::WriteDescLineFeed ( StdStrBuf sBuf)
protectedinherited

Definition at line 256 of file C4GameSave.cpp.

257 {
258  // paragraph end + cosmetics
259  sBuf.Append("\n\n");
260 }

References StdStrBuf::Append().

Referenced by C4GameSave::WriteDescDate(), C4GameSave::WriteDescDefinitions(), C4GameSave::WriteDescEngine(), C4GameSave::WriteDescGameTime(), C4GameSave::WriteDescLeague(), C4GameSave::WriteDescNetworkClients(), and C4GameSave::WriteDescPlayers().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WriteDescNetworkClients()

void C4GameSave::WriteDescNetworkClients ( StdStrBuf sBuf)
protectedinherited

Definition at line 328 of file C4GameSave.cpp.

329 {
330  // Desc
331  sBuf.Append(LoadResStr("IDS_DESC_CLIENTS"));
332  // Client names
333  for (C4Network2Client *pClient=::Network.Clients.GetNextClient(nullptr); pClient; pClient=::Network.Clients.GetNextClient(pClient))
334  { sBuf.Append(", "); sBuf.Append(pClient->getName()); }
335  // End of line
336  WriteDescLineFeed(sBuf);
337 }
C4Network2Client * GetNextClient(C4Network2Client *pClient)
C4Network2ClientList Clients
Definition: C4Network2.h:116

References StdStrBuf::Append(), C4Network2::Clients, C4Network2ClientList::GetNextClient(), LoadResStr(), Network, and C4GameSave::WriteDescLineFeed().

Referenced by C4GameSaveSavegame::WriteDesc(), and C4GameSaveRecord::WriteDesc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ WriteDescPlayers() [1/2]

void C4GameSave::WriteDescPlayers ( StdStrBuf sBuf)
protectedinherited

Definition at line 372 of file C4GameSave.cpp.

373 {
374  // New style using Game.PlayerInfos
376  {
377  sBuf.Append(LoadResStr("IDS_DESC_PLRS"));
379  {
380  // Teams defined: Print players sorted by teams
381  WriteDescLineFeed(sBuf);
382  C4Team *pTeam; int32_t i=0;
383  while ((pTeam = Game.Teams.GetTeamByIndex(i++)))
384  {
385  WriteDescPlayers(sBuf, true, pTeam->GetID());
386  }
387  // Finally, print out players outside known teams (those can only be achieved by script using SetPlayerTeam)
388  WriteDescPlayers(sBuf, true, 0);
389  }
390  else
391  {
392  // No teams defined: Print all players that have ever joined
393  WriteDescPlayers(sBuf, false, 0);
394  }
395  }
396 }
C4TeamList & Teams
Definition: C4Game.h:70
C4PlayerInfoList & PlayerInfos
Definition: C4Game.h:71
void WriteDescPlayers(StdStrBuf &sBuf, bool fByTeam, int32_t idTeam)
Definition: C4GameSave.cpp:339
int32_t GetPlayerCount() const
Definition: C4Teams.h:31
int32_t GetID() const
Definition: C4Teams.h:66
C4Team * GetTeamByIndex(int32_t iIndex) const
Definition: C4Teams.cpp:404
bool IsMultiTeams() const
Definition: C4Teams.h:162
bool IsAutoGenerateTeams() const
Definition: C4Teams.h:172

References StdStrBuf::Append(), Game, C4Team::GetID(), C4PlayerInfoList::GetPlayerCount(), C4TeamList::GetTeamByIndex(), C4TeamList::IsAutoGenerateTeams(), C4TeamList::IsMultiTeams(), LoadResStr(), C4Game::PlayerInfos, C4Game::Teams, C4GameSave::WriteDescLineFeed(), and C4GameSave::WriteDescPlayers().

Here is the call graph for this function:

◆ WriteDescPlayers() [2/2]

void C4GameSave::WriteDescPlayers ( StdStrBuf sBuf,
bool  fByTeam,
int32_t  idTeam 
)
protectedinherited

Definition at line 339 of file C4GameSave.cpp.

340 {
341  // write out all players; only if they match the given team if specified
342  C4PlayerInfo *pPlr; bool fAnyPlrWritten = false;
343  for (int i = 0; (pPlr = Game.PlayerInfos.GetPlayerInfoByIndex(i)); i++)
344  if (pPlr->HasJoined() && !pPlr->IsRemoved() && !pPlr->IsInvisible())
345  {
346  if (fByTeam)
347  {
348  if (idTeam)
349  {
350  // match team
351  if (pPlr->GetTeam() != idTeam) continue;
352  }
353  else
354  {
355  // must be in no known team
356  if (Game.Teams.GetTeamByID(pPlr->GetTeam())) continue;
357  }
358  }
359  if (fAnyPlrWritten)
360  sBuf.Append(", ");
361  else if (fByTeam && idTeam)
362  {
363  C4Team *pTeam = Game.Teams.GetTeamByID(idTeam);
364  if (pTeam) sBuf.AppendFormat("%s: ", pTeam->GetName());
365  }
366  sBuf.Append(pPlr->GetName());
367  fAnyPlrWritten = true;
368  }
369  if (fAnyPlrWritten) WriteDescLineFeed(sBuf);
370 }
int32_t GetTeam() const
Definition: C4PlayerInfo.h:195
bool IsInvisible() const
Definition: C4PlayerInfo.h:175
bool IsRemoved() const
Definition: C4PlayerInfo.h:164
bool HasJoined() const
Definition: C4PlayerInfo.h:165
const char * GetName() const
Definition: C4PlayerInfo.h:157
C4PlayerInfo * GetPlayerInfoByIndex(int32_t index) const
const char * GetName() const
Definition: C4Teams.h:65
C4Team * GetTeamByID(int32_t iID) const
Definition: C4Teams.cpp:383

References StdStrBuf::Append(), StdStrBuf::AppendFormat(), Game, C4PlayerInfo::GetName(), C4Team::GetName(), C4PlayerInfoList::GetPlayerInfoByIndex(), C4PlayerInfo::GetTeam(), C4TeamList::GetTeamByID(), C4PlayerInfo::HasJoined(), C4PlayerInfo::IsInvisible(), C4PlayerInfo::IsRemoved(), C4Game::PlayerInfos, C4Game::Teams, and C4GameSave::WriteDescLineFeed().

Referenced by C4GameSaveSavegame::WriteDesc(), C4GameSaveRecord::WriteDesc(), and C4GameSave::WriteDescPlayers().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ fInitial

bool C4GameSave::fInitial
protectedinherited

◆ fOwnGroup

bool C4GameSave::fOwnGroup
protectedinherited

Definition at line 39 of file C4GameSave.h.

Referenced by C4GameSave::Close(), and C4GameSave::Save().

◆ pSaveGroup

◆ Sync

enum C4GameSave::SyncState C4GameSave::Sync
protectedinherited

The documentation for this class was generated from the following files: