21 #include "C4Version.h"
35 bool C4GameSave::SaveCreateGroup(
const char *szFilename,
C4Group &hUseGroup)
43 {
LogF(
LoadResStr(
"IDS_CNS_SAVEASERROR"), szFilename);
return false; }
55 bool C4GameSave::SaveCore()
112 bool C4GameSave::SaveScenarioSections()
124 SDelete(fn, 1, iWildcardPos);
SInsert(fn, pSect->name.getData(), iWildcardPos);
128 else if (pSect->fModified)
140 bool C4GameSave::SaveLandscape()
152 if (!fSuccess)
return false;
187 bool C4GameSave::SaveRuntimeData()
192 {
Log(
LoadResStr(
"IDS_ERR_SAVE_RUNTIMEDATA"));
return false; }
194 if (
IsExact())
if (!SaveScenarioSections())
195 {
Log(
LoadResStr(
"IDS_ERR_SAVE_SCENSECTIONS"));
return false; }
197 if (!SaveLandscape()) {
Log(
LoadResStr(
"IDS_ERR_SAVE_LANDSCAPE"));
return false; }
200 {
Log(
LoadResStr(
"IDS_ERR_ERRORSAVINGROUNDRESULTS"));
return false; }
213 {
Log(
LoadResStr(
"IDS_ERR_SAVE_RESTOREPLAYERINFOS"));
return false; }
253 return !!hToGroup.
Add(sFilename.
getData(),sBuffer,
false,
true);
265 time_t tTime; time(&tTime);
266 struct tm *pLocalTime;
267 pLocalTime=localtime(&tTime);
270 pLocalTime->tm_mon+1,
271 pLocalTime->tm_year+1900,
290 char ver[32];
sprintf(ver,
"%d.%d", (
int)C4XVER1, (
int)C4XVER2);
319 if (cnt>0) sBuf.
Append(
", ");
321 sBuf.
Append(sDefFilename);
351 if (pPlr->
GetTeam() != idTeam)
continue;
361 else if (fByTeam && idTeam)
367 fAnyPlrWritten =
true;
382 C4Team *pTeam; int32_t i=0;
404 if (!SaveCreateGroup(szFilename, *pLSaveGroup))
406 LogF(
LoadResStr(
"IDS_ERR_SAVE_TARGETGRP"), szFilename ? szFilename :
"nullptr!");
411 return Save(*pLSaveGroup,
true);
423 if (!SaveCore()) {
Log(
LoadResStr(
"IDS_ERR_SAVE_CORE"));
return false; }
449 bool fSuccess =
true;
491 if (
Inside(iSaveGameIndex, 1, 10))
492 rC4S.
Head.
Icon = 2 + (iSaveGameIndex - 1);
#define C4CFN_PlayerFiles
#define C4CFN_ScenarioTitle
#define C4CFN_ScenarioSections
#define C4CFN_ScenarioIcon
#define C4CFN_PlayerInfos
#define C4CFN_ScenarioDesc
#define C4CFN_SavePlayerInfos
bool C4Group_CopyItem(const char *source, const char *target, bool no_sorting, bool reset_attributes)
const char * LoadResStr(const char *id)
bool Log(const char *szMessage)
bool LogF(const char *strMessage,...)
C4MaterialMap MaterialMap
int SCharPos(char cTarget, const char *szInStr, int iIndex)
void SCopy(const char *szSource, char *sTarget, size_t iMaxL)
bool SGetModule(const char *szList, int iIndex, char *sTarget, int iSize)
void SInsert(char *szString, const char *szInsert, int iPosition, int iMaxLen)
void SCopyUntil(const char *szSource, char *sTarget, char cUntil, int iMaxL, int iIndex)
void SDelete(char *szString, int iLen, int iPosition)
bool Inside(T ival, U lbound, V rbound)
StdStrBuf FormatString(const char *szFmt,...)
bool EraseItem(const char *szItemName)
const char * GetFilenameOnly(const char *strFilename)
bool ItemIdentical(const char *szFilename1, const char *szFilename2)
int GetTrailingNumber(const char *strString)
char SystemDataPath[CFG_MaxString+1]
char Language[CFG_MaxString+1]
char UserDataPath[CFG_MaxString+1]
void ForceRelativePath(StdStrBuf *filename)
const char * AtRelativePath(const char *filename)
void Add(C4PacketType eType, C4ControlPacket *pCtrl)
C4RoundResults & RoundResults
char ScenarioFilename[_MAX_PATH_LEN]
C4PlayerInfoList & PlayerInfos
C4ScenarioSection * pCurrentScenarioSection
C4GameParameters & Parameters
bool SaveData(C4Group &group, bool save_section, bool save_exact, bool save_sync, C4ValueNumbers *)
C4ScenarioSection * pScenarioSections
StdCopyStrBuf ScenarioTitle
bool SaveGameTitle(C4Group &hGroup)
char DefinitionFilenames[20 *_MAX_PATH_LEN]
bool Save(C4Group &hGroup, C4Scenario *pDefault)
bool SaveDesc(C4Group &hToGroup)
virtual bool GetSaveScriptPlayerFiles()
virtual bool SaveComponents()
virtual bool WriteDesc(StdStrBuf &sBuf)
virtual bool GetSaveUserPlayerFiles()
virtual bool GetSaveDesc()
virtual bool GetSaveScriptPlayers()
void WriteDescDefinitions(StdStrBuf &sBuf)
virtual void AdjustCore(C4Scenario &rC4S)
virtual bool GetKeepTitle()
void WriteDescPlayers(StdStrBuf &sBuf, bool fByTeam, int32_t idTeam)
virtual bool GetForceExactLandscape()
virtual const char * GetSortOrder()
void WriteDescLeague(StdStrBuf &sBuf, bool fLeague, const char *strLeagueName)
virtual bool GetSaveOrigin()
void WriteDescGameTime(StdStrBuf &sBuf)
virtual bool GetCopyScenario()
virtual bool GetClearOrigin()
bool Save(const char *szFilename)
void WriteDescNetworkClients(StdStrBuf &sBuf)
virtual bool GetCreateSmallFile()
virtual bool GetSaveUserPlayers()
void WriteDescDate(StdStrBuf &sBuf, bool fRecord=false)
virtual bool GetSaveRuntimeData()
void WriteDescLineFeed(StdStrBuf &sBuf)
void WriteDescEngine(StdStrBuf &sBuf)
void AdjustCore(C4Scenario &rC4S) override
void AdjustCore(C4Scenario &rC4S) override
bool WriteDesc(StdStrBuf &sBuf) override
bool SaveComponents() override
void AdjustCore(C4Scenario &rC4S) override
bool SaveComponents() override
bool WriteDesc(StdStrBuf &sBuf) override
bool DeleteEntry(const char *filename, bool do_recycle=false)
StdStrBuf GetFullName() const
bool Add(const char *filename, const char *entry_name)
bool Sort(const char *list)
bool Delete(const char *files, bool recursive=false)
bool Open(const char *group_name, bool do_create=false)
LandscapeMode GetMode() const
bool Save(C4Group &hGroup) const
bool SaveTextures(C4Group &hGroup) const
bool SaveDiff(C4Group &hGroup, bool fSyncSave) const
bool SaveMap(C4Group &hGroup) const
void Copy(C4MassMoverSet &rSet)
bool Save(C4Group &hGroup)
bool SaveEnumeration(C4Group &hGroup)
C4Network2Client * GetNextClient(C4Network2Client *pClient)
C4Network2ClientList Clients
bool Save(C4Group &hGroup)
const char * GetName() const
bool SetAsRestoreInfos(C4PlayerInfoList &rFromPlayers, bool fSaveUserPlrs, bool fSaveScriptPlrs, bool fSetUserPlrRefToLocalGroup, bool fSetScriptPlrRefToLocalGroup)
C4PlayerInfo * GetPlayerInfoByIndex(int32_t index) const
bool Save(C4Group &hGroup, const char *szToFile)
int32_t GetPlayerCount() const
bool SynchronizeLocalFiles()
bool Save(bool fSaveLocalOnly)
bool Save(C4Group &hGroup, const char *szFilename=C4CFN_RoundResults)
void SetModules(const char *szList, const char *szRelativeToPath=nullptr, const char *szRelativeToPath2=nullptr)
std::string MissionAccess
bool Save(C4Group &hGroup, bool fSaveSection=false)
C4SDefinitions Definitions
C4ScenarioSection * pNext
const char * GetName() const
C4Team * GetTeamByIndex(int32_t iIndex) const
bool IsMultiTeams() const
C4Team * GetTeamByID(int32_t iID) const
bool Save(C4Group &hGroup)
bool IsAutoGenerateTeams() const
void AppendFormat(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
const char * getData() const
void Append(const char *pnData, size_t iChars)
void Format(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O