OpenClonk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
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

virtual bool GetSaveOrigin ()
 
virtual bool GetKeepTitle ()
 
virtual bool GetSaveDesc ()
 
virtual bool GetCreateSmallFile ()
 
virtual bool GetCopyScenario ()
 
virtual void AdjustCore (C4Scenario &rC4S)
 
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

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

Constructor & Destructor Documentation

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

void C4GameSaveNetwork::AdjustCore ( C4Scenario rC4S)
protectedvirtual

Reimplemented from C4GameSave.

Definition at line 562 of file C4GameSave.cpp.

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

563 {
564  // specific dynamic flags
565  rC4S.Head.NetworkGame=true;
567 }
bool NetworkRuntimeJoin
Definition: C4Scenario.h:79
bool NetworkGame
Definition: C4Scenario.h:78
bool fInitial
Definition: C4GameSave.h:45
C4SHead Head
Definition: C4Scenario.h:230
bool C4GameSave::Close ( )
inherited

Definition at line 449 of file C4GameSave.cpp.

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().

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

Here is the call graph for this function:

Here is the caller graph for this function:

virtual bool C4GameSave::GetClearOrigin ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveScenario.

Definition at line 65 of file C4GameSave.h.

References C4GameSave::GetSaveOrigin().

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

Here is the call graph for this function:

virtual bool C4GameSaveNetwork::GetCopyScenario ( )
inlineprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 183 of file C4GameSave.h.

183 { return false; } // network dynamics do not base on normal scenario
virtual bool C4GameSaveNetwork::GetCreateSmallFile ( )
inlineprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 181 of file C4GameSave.h.

181 { return true; }// return whether file size should be minimized
virtual bool C4GameSave::GetForceExactLandscape ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveScenario.

Definition at line 63 of file C4GameSave.h.

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

Referenced by C4GameSaveScenario::GetForceExactLandscape().

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

Here is the call graph for this function:

Here is the caller graph for this function:

C4Group* C4GameSave::GetGroup ( )
inlineinherited

Definition at line 109 of file C4GameSave.h.

References C4GameSave::pSaveGroup.

109 { return pSaveGroup; } // get scenario saving group; only open between calls to Save() and Close()
C4Group * pSaveGroup
Definition: C4GameSave.h:38
virtual bool C4GameSaveNetwork::GetKeepTitle ( )
inlineprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 179 of file C4GameSave.h.

179 { return false; } // always delete title files (not used in dynamics)
virtual bool C4GameSaveNetwork::GetSaveDesc ( )
inlineprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 180 of file C4GameSave.h.

180 { return false; } // no desc in dynamics
virtual bool C4GameSaveNetwork::GetSaveOrigin ( )
inlineprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 178 of file C4GameSave.h.

178 { return true; } // clients must know where to get music and localization
virtual bool C4GameSave::GetSaveRuntimeData ( )
inlineprotectedvirtualinherited

Definition at line 57 of file C4GameSave.h.

References C4GameSave::fInitial.

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

57 { return !fInitial; } // save exact landscape, players, etc.
bool fInitial
Definition: C4GameSave.h:45

Here is the caller graph for this function:

virtual bool C4GameSave::GetSaveScriptPlayerFiles ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveScenario.

Definition at line 69 of file C4GameSave.h.

References C4GameSave::IsExact().

69 { return IsExact(); } // return whether .ocp files of joined script players shall be put into the scenario
bool IsExact()
Definition: C4GameSave.h:78

Here is the call graph for this function:

virtual bool C4GameSave::GetSaveScriptPlayers ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveScenario.

Definition at line 67 of file C4GameSave.h.

References C4GameSave::IsExact().

67 { return IsExact(); } // return whether joined script players shall be saved into SavePlayerInfos
bool IsExact()
Definition: C4GameSave.h:78

Here is the call graph for this function:

virtual bool C4GameSave::GetSaveUserPlayerFiles ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveSavegame.

Definition at line 68 of file C4GameSave.h.

References C4GameSave::IsExact().

68 { return IsExact(); } // return whether .ocp files of joined user players shall be put into the scenario
bool IsExact()
Definition: C4GameSave.h:78

Here is the call graph for this function:

virtual bool C4GameSave::GetSaveUserPlayers ( )
inlineprotectedvirtualinherited

Definition at line 66 of file C4GameSave.h.

References C4GameSave::IsExact().

66 { return IsExact(); } // return whether joined user players shall be saved into SavePlayerInfos
bool IsExact()
Definition: C4GameSave.h:78

Here is the call graph for this function:

virtual const char* C4GameSave::GetSortOrder ( )
inlineprotectedvirtualinherited

Definition at line 61 of file C4GameSave.h.

References C4FLS_Scenario.

Referenced by C4GameSave::Close().

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

Here is the caller graph for this function:

bool C4GameSave::IsExact ( )
inlineprotectedinherited

Definition at line 78 of file C4GameSave.h.

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

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

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

Here is the caller graph for this function:

bool C4GameSave::IsSynced ( )
inlineprotectedinherited

Definition at line 79 of file C4GameSave.h.

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

79 { return Sync>=SyncSynchronized; } // synchronized
enum C4GameSave::SyncState Sync
virtual bool C4GameSave::OnSaving ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveSavegame.

Definition at line 75 of file C4GameSave.h.

Referenced by C4GameSave::Save().

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

Here is the caller graph for this function:

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

Definition at line 400 of file C4GameSave.cpp.

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

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 416 of file C4GameSave.cpp.

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().

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

Here is the call graph for this function:

virtual bool C4GameSave::SaveComponents ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveRecord, and C4GameSaveSavegame.

Definition at line 74 of file C4GameSave.h.

Referenced by C4GameSave::Save().

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

Here is the caller graph for this function:

bool C4GameSave::SaveDesc ( C4Group hToGroup)
inherited

Definition at line 237 of file C4GameSave.cpp.

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

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

238 {
239  // Unfortunately, there's no way to prealloc the buffer in an appropriate size
240  StdStrBuf sBuffer;
241 
242  // Scenario title
243  sBuffer.Append(Game.ScenarioTitle.getData());
244  sBuffer.Append(LineFeed LineFeed);
245 
246  // OK; each specializations has its own desc format
247  WriteDesc(sBuffer);
248 
249  // Generate Filename
250  StdStrBuf sFilename; char szLang[3];
251  SCopyUntil(Config.General.Language, szLang, ',', 2);
252  sFilename.Format(C4CFN_ScenarioDesc,szLang);
253 
254  // Save to file
255  return !!hToGroup.Add(sFilename.getData(),sBuffer,false,true);
256 }
const char * getData() const
Definition: StdBuf.h:450
C4Config Config
Definition: C4Config.cpp:837
C4Game Game
Definition: C4Globals.cpp:52
C4ConfigGeneral General
Definition: C4Config.h:252
StdCopyStrBuf ScenarioTitle
Definition: C4Game.h:105
void Format(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
Definition: StdBuf.cpp:181
void Append(const char *pnData, size_t iChars)
Definition: StdBuf.h:527
char Language[CFG_MaxString+1]
Definition: C4Config.h:37
#define LineFeed
Definition: Standard.h:151
#define C4CFN_ScenarioDesc
Definition: C4Components.h:88
bool Add(const char *szFile, const char *szAddAs)
Definition: C4Group.cpp:1316
virtual bool WriteDesc(StdStrBuf &sBuf)
Definition: C4GameSave.h:73
void SCopyUntil(const char *szSource, char *sTarget, char cUntil, int iMaxL, int iIndex)
Definition: Standard.cpp:145

Here is the call graph for this function:

Here is the caller graph for this function:

virtual bool C4GameSave::WriteDesc ( StdStrBuf sBuf)
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveRecord, and C4GameSaveSavegame.

Definition at line 73 of file C4GameSave.h.

Referenced by C4GameSave::SaveDesc().

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

Here is the caller graph for this function:

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

Definition at line 264 of file C4GameSave.cpp.

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

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

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

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GameSave::WriteDescDefinitions ( StdStrBuf sBuf)
protectedinherited

Definition at line 306 of file C4GameSave.cpp.

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

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

307 {
308  // Definition specs
309  if (Game.DefinitionFilenames[0])
310  {
311  char szDef[_MAX_PATH+1];
312  // Desc
313  sBuf.Append(LoadResStr("IDS_DESC_DEFSPECS"));
314  // Get definition modules
315  for (int cnt=0; SGetModule(Game.DefinitionFilenames,cnt,szDef); cnt++)
316  {
317  // Get exe relative path
318  StdStrBuf sDefFilename;
319  sDefFilename.Copy(Config.AtRelativePath(szDef));
320  // Append comma
321  if (cnt>0) sBuf.Append(", ");
322  // Apend to desc
323  sBuf.Append(sDefFilename);
324  }
325  // End of line
326  WriteDescLineFeed(sBuf);
327  }
328 }
bool SGetModule(const char *szList, int iIndex, char *sTarget, int iSize)
Definition: Standard.cpp:510
C4Config Config
Definition: C4Config.cpp:837
C4Game Game
Definition: C4Globals.cpp:52
#define _MAX_PATH
void WriteDescLineFeed(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:258
const char * LoadResStr(const char *id)
Definition: C4Language.h:83
void Append(const char *pnData, size_t iChars)
Definition: StdBuf.h:527
char DefinitionFilenames[20 *_MAX_PATH+1]
Definition: C4Game.h:107
const char * AtRelativePath(const char *szFilename)
Definition: C4Config.cpp:660
void Copy()
Definition: StdBuf.h:475

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GameSave::WriteDescEngine ( StdStrBuf sBuf)
protectedinherited

Definition at line 290 of file C4GameSave.cpp.

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

Referenced by C4GameSaveRecord::WriteDesc().

291 {
292  char ver[32]; sprintf(ver, "%d.%d", (int)C4XVER1, (int)C4XVER2);
293  sBuf.AppendFormat(LoadResStr("IDS_DESC_VERSION"), ver);
294  WriteDescLineFeed(sBuf);
295 }
#define sprintf
Definition: Standard.h:171
void WriteDescLineFeed(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:258
const char * LoadResStr(const char *id)
Definition: C4Language.h:83
void AppendFormat(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
Definition: StdBuf.cpp:197

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GameSave::WriteDescGameTime ( StdStrBuf sBuf)
protectedinherited

Definition at line 279 of file C4GameSave.cpp.

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

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

280 {
281  // Write game duration
282  if (Game.Time)
283  {
284  sBuf.AppendFormat(LoadResStr("IDS_DESC_DURATION"),
285  Game.Time/3600,(Game.Time%3600)/60,Game.Time%60);
286  WriteDescLineFeed(sBuf);
287  }
288 }
C4Game Game
Definition: C4Globals.cpp:52
void WriteDescLineFeed(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:258
const char * LoadResStr(const char *id)
Definition: C4Language.h:83
void AppendFormat(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
Definition: StdBuf.cpp:197
int32_t Time
Definition: C4Game.h:133

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 297 of file C4GameSave.cpp.

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

Referenced by C4GameSaveRecord::WriteDesc().

298 {
299  if (fLeague)
300  {
301  sBuf.AppendFormat(LoadResStr("IDS_PRC_LEAGUE"), strLeagueName);
302  WriteDescLineFeed(sBuf);
303  }
304 }
void WriteDescLineFeed(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:258
const char * LoadResStr(const char *id)
Definition: C4Language.h:83
void AppendFormat(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
Definition: StdBuf.cpp:197

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GameSave::WriteDescLineFeed ( StdStrBuf sBuf)
protectedinherited

Definition at line 258 of file C4GameSave.cpp.

References StdStrBuf::Append(), and LineFeed.

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

259 {
260  // paragraph end + cosmetics
261  sBuf.Append(LineFeed LineFeed);
262 }
void Append(const char *pnData, size_t iChars)
Definition: StdBuf.h:527
#define LineFeed
Definition: Standard.h:151

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GameSave::WriteDescNetworkClients ( StdStrBuf sBuf)
protectedinherited

Definition at line 330 of file C4GameSave.cpp.

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

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

331 {
332  // Desc
333  sBuf.Append(LoadResStr("IDS_DESC_CLIENTS"));
334  // Client names
335  for (C4Network2Client *pClient=::Network.Clients.GetNextClient(nullptr); pClient; pClient=::Network.Clients.GetNextClient(pClient))
336  { sBuf.Append(", "); sBuf.Append(pClient->getName()); }
337  // End of line
338  WriteDescLineFeed(sBuf);
339 }
C4Network2Client * GetNextClient(C4Network2Client *pClient)
void WriteDescLineFeed(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:258
const char * LoadResStr(const char *id)
Definition: C4Language.h:83
C4Network2 Network
Definition: C4Globals.cpp:53
void Append(const char *pnData, size_t iChars)
Definition: StdBuf.h:527
C4Network2ClientList Clients
Definition: C4Network2.h:116

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 341 of file C4GameSave.cpp.

References StdStrBuf::Append(), StdStrBuf::AppendFormat(), Game, C4Team::GetName(), C4PlayerInfo::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().

342 {
343  // write out all players; only if they match the given team if specified
344  C4PlayerInfo *pPlr; bool fAnyPlrWritten = false;
345  for (int i = 0; (pPlr = Game.PlayerInfos.GetPlayerInfoByIndex(i)); i++)
346  if (pPlr->HasJoined() && !pPlr->IsRemoved() && !pPlr->IsInvisible())
347  {
348  if (fByTeam)
349  {
350  if (idTeam)
351  {
352  // match team
353  if (pPlr->GetTeam() != idTeam) continue;
354  }
355  else
356  {
357  // must be in no known team
358  if (Game.Teams.GetTeamByID(pPlr->GetTeam())) continue;
359  }
360  }
361  if (fAnyPlrWritten)
362  sBuf.Append(", ");
363  else if (fByTeam && idTeam)
364  {
365  C4Team *pTeam = Game.Teams.GetTeamByID(idTeam);
366  if (pTeam) sBuf.AppendFormat("%s: ", pTeam->GetName());
367  }
368  sBuf.Append(pPlr->GetName());
369  fAnyPlrWritten = true;
370  }
371  if (fAnyPlrWritten) WriteDescLineFeed(sBuf);
372 }
const char * GetName() const
Definition: C4PlayerInfo.h:160
C4Game Game
Definition: C4Globals.cpp:52
Definition: C4Teams.h:30
C4PlayerInfo * GetPlayerInfoByIndex(int32_t index) const
bool IsInvisible() const
Definition: C4PlayerInfo.h:178
C4Team * GetTeamByID(int32_t iID) const
Definition: C4Teams.cpp:384
void WriteDescLineFeed(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:258
C4TeamList & Teams
Definition: C4Game.h:72
void AppendFormat(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
Definition: StdBuf.cpp:197
void Append(const char *pnData, size_t iChars)
Definition: StdBuf.h:527
int32_t GetTeam() const
Definition: C4PlayerInfo.h:198
bool IsRemoved() const
Definition: C4PlayerInfo.h:167
const char * GetName() const
Definition: C4Teams.h:65
C4PlayerInfoList & PlayerInfos
Definition: C4Game.h:73
bool HasJoined() const
Definition: C4PlayerInfo.h:168

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GameSave::WriteDescPlayers ( StdStrBuf sBuf)
protectedinherited

Definition at line 374 of file C4GameSave.cpp.

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

375 {
376  // New style using Game.PlayerInfos
378  {
379  sBuf.Append(LoadResStr("IDS_DESC_PLRS"));
381  {
382  // Teams defined: Print players sorted by teams
383  WriteDescLineFeed(sBuf);
384  C4Team *pTeam; int32_t i=0;
385  while ((pTeam = Game.Teams.GetTeamByIndex(i++)))
386  {
387  WriteDescPlayers(sBuf, true, pTeam->GetID());
388  }
389  // Finally, print out players outside known teams (those can only be achieved by script using SetPlayerTeam)
390  WriteDescPlayers(sBuf, true, 0);
391  }
392  else
393  {
394  // No teams defined: Print all players that have ever joined
395  WriteDescPlayers(sBuf, false, 0);
396  }
397  }
398 }
int32_t GetID() const
Definition: C4Teams.h:66
int32_t GetPlayerCount() const
C4Game Game
Definition: C4Globals.cpp:52
Definition: C4Teams.h:30
bool IsAutoGenerateTeams() const
Definition: C4Teams.h:173
bool IsMultiTeams() const
Definition: C4Teams.h:163
void WriteDescLineFeed(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:258
C4TeamList & Teams
Definition: C4Game.h:72
const char * LoadResStr(const char *id)
Definition: C4Language.h:83
void Append(const char *pnData, size_t iChars)
Definition: StdBuf.h:527
C4Team * GetTeamByIndex(int32_t iIndex) const
Definition: C4Teams.cpp:405
C4PlayerInfoList & PlayerInfos
Definition: C4Game.h:73
void WriteDescPlayers(StdStrBuf &sBuf, bool fByTeam, int32_t idTeam)
Definition: C4GameSave.cpp:341

Here is the call graph for this function:

Member Data Documentation

bool C4GameSave::fInitial
protectedinherited
bool C4GameSave::fOwnGroup
protectedinherited

Definition at line 39 of file C4GameSave.h.

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

enum C4GameSave::SyncState C4GameSave::Sync
protectedinherited

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