OpenClonk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
C4GameSaveRecord Class Reference

#include <C4GameSave.h>

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

Public Member Functions

 C4GameSaveRecord (bool fAInitial, int iANum, bool fLeague, bool fCopyScenario=true)
 
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 GetSaveDesc ()
 
virtual bool GetCreateSmallFile ()
 
virtual bool GetSaveOrigin ()
 
virtual bool GetCopyScenario ()
 
virtual void AdjustCore (C4Scenario &rC4S)
 
virtual bool WriteDesc (StdStrBuf &sBuf)
 
virtual bool SaveComponents ()
 
virtual bool GetSaveRuntimeData ()
 
virtual bool GetKeepTitle ()
 
virtual const char * GetSortOrder ()
 
virtual bool GetForceExactLandscape ()
 
virtual bool GetClearOrigin ()
 
virtual bool GetSaveUserPlayers ()
 
virtual bool GetSaveScriptPlayers ()
 
virtual bool GetSaveUserPlayerFiles ()
 
virtual bool GetSaveScriptPlayerFiles ()
 
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 144 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

C4GameSaveRecord::C4GameSaveRecord ( bool  fAInitial,
int  iANum,
bool  fLeague,
bool  fCopyScenario = true 
)
inline

Definition at line 152 of file C4GameSave.h.

153  : C4GameSave(fAInitial, SyncSynchronized), iNum(iANum), fLeague(fLeague), fCopyScenario(fCopyScenario)
154  {}
C4GameSave(bool fAInitial, SyncState ASync)
Definition: C4GameSave.h:82

Member Function Documentation

void C4GameSaveRecord::AdjustCore ( C4Scenario rC4S)
protectedvirtual

Reimplemented from C4GameSave.

Definition at line 524 of file C4GameSave.cpp.

References C4SFilm_Normal, C4SHead::Film, Game, StdStrBuf::getData(), C4Scenario::Head, C4SHead::Icon, C4SHead::Replay, C4Game::ScenarioTitle, sprintf, and C4SHead::Title.

525 {
526  // specific recording flags
527  rC4S.Head.Replay=true;
528  if (!rC4S.Head.Film) rC4S.Head.Film=C4SFilm_Normal; /* default to film */
529  rC4S.Head.Icon=29;
530  // default record title
531  char buf[1024 + 1];
532  sprintf(buf, "%03i %s [%d.%d]", iNum, Game.ScenarioTitle.getData(), (int)C4XVER1, (int)C4XVER2);
533  rC4S.Head.Title = buf;
534 }
const char * getData() const
Definition: StdBuf.h:450
int32_t Icon
Definition: C4Scenario.h:68
C4Game Game
Definition: C4Globals.cpp:52
#define sprintf
Definition: Standard.h:171
StdCopyStrBuf ScenarioTitle
Definition: C4Game.h:105
bool Replay
Definition: C4Scenario.h:72
std::string Title
Definition: C4Scenario.h:64
C4SHead Head
Definition: C4Scenario.h:230
int32_t Film
Definition: C4Scenario.h:73

Here is the call graph for this function:

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 C4GameSaveRecord::GetCopyScenario ( )
inlineprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 162 of file C4GameSave.h.

162 { return fCopyScenario; } // records without copied scenario are a lot smaller can be reconstructed later (used for streaming)
virtual bool C4GameSaveRecord::GetCreateSmallFile ( )
inlineprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 159 of file C4GameSave.h.

159 { return true; } // no need to save players complete with portraits
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 C4GameSave::GetKeepTitle ( )
inlineprotectedvirtualinherited

Reimplemented in C4GameSaveNetwork.

Definition at line 58 of file C4GameSave.h.

References C4GameSave::IsExact().

Referenced by C4GameSave::Save().

58 { return !IsExact(); } // whether original, localized title with image and icon shall be deleted
bool IsExact()
Definition: C4GameSave.h:78

Here is the call graph for this function:

Here is the caller graph for this function:

virtual bool C4GameSaveRecord::GetSaveDesc ( )
inlineprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 158 of file C4GameSave.h.

158 { return false; } // desc is saved by external call when the record is finished
virtual bool C4GameSaveRecord::GetSaveOrigin ( )
inlineprotectedvirtual

Reimplemented from C4GameSave.

Definition at line 160 of file C4GameSave.h.

160 { return true; } // origin must be saved to trace language packs, folder local material, etc. for records
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:

bool C4GameSaveRecord::SaveComponents ( )
protectedvirtual

Reimplemented from C4GameSave.

Definition at line 536 of file C4GameSave.cpp.

References C4CFN_PlayerInfos, C4GameSave::fInitial, Game, C4Game::PlayerInfos, C4GameSave::pSaveGroup, and C4PlayerInfoList::Save().

537 {
538  // special: records need player infos even if done initially
540  // for !fInitial, player infos will be saved as regular runtime data
541  // done, success
542  return true;
543 }
C4Game Game
Definition: C4Globals.cpp:52
C4Group * pSaveGroup
Definition: C4GameSave.h:38
bool Save(C4Group &hGroup, const char *szToFile)
#define C4CFN_PlayerInfos
Definition: C4Components.h:124
C4PlayerInfoList & PlayerInfos
Definition: C4Game.h:73
bool fInitial
Definition: C4GameSave.h:45

Here is the call 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:

bool C4GameSaveRecord::WriteDesc ( StdStrBuf sBuf)
protectedvirtual

Reimplemented from C4GameSave.

Definition at line 545 of file C4GameSave.cpp.

References Game, StdStrBuf::getData(), C4Network2::isEnabled(), C4GameParameters::League, Network, C4Game::Parameters, C4GameSave::WriteDescDate(), C4GameSave::WriteDescDefinitions(), C4GameSave::WriteDescEngine(), C4GameSave::WriteDescGameTime(), C4GameSave::WriteDescLeague(), C4GameSave::WriteDescNetworkClients(), and C4GameSave::WriteDescPlayers().

546 {
547  // compose record desc
548  WriteDescDate(sBuf, true);
549  WriteDescGameTime(sBuf);
550  WriteDescEngine(sBuf);
551  WriteDescDefinitions(sBuf);
552  WriteDescLeague(sBuf, fLeague, Game.Parameters.League.getData());
554  WriteDescPlayers(sBuf);
555  // done, success
556  return true;
557 }
const char * getData() const
Definition: StdBuf.h:450
C4Game Game
Definition: C4Globals.cpp:52
StdCopyStrBuf League
void WriteDescNetworkClients(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:330
void WriteDescEngine(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:290
C4GameParameters & Parameters
Definition: C4Game.h:69
void WriteDescGameTime(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:279
void WriteDescLeague(StdStrBuf &sBuf, bool fLeague, const char *strLeagueName)
Definition: C4GameSave.cpp:297
C4Network2 Network
Definition: C4Globals.cpp:53
void WriteDescDate(StdStrBuf &sBuf, bool fRecord=false)
Definition: C4GameSave.cpp:264
void WriteDescDefinitions(StdStrBuf &sBuf)
Definition: C4GameSave.cpp:306
bool isEnabled() const
Definition: C4Network2.h:203
void WriteDescPlayers(StdStrBuf &sBuf, bool fByTeam, int32_t idTeam)
Definition: C4GameSave.cpp:341

Here is the call 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 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 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 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 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 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 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(), 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: