UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
cp_save.h
Go to the documentation of this file.
1 
6 /*
7 Copyright (C) 2002-2020 UFO: Alien Invasion.
8 
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (at your option) any later version.
13 
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 
18 See the GNU General Public License for more details.
19 
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 */
24 
25 #pragma once
26 
27 #include <zlib.h>
28 #include "../../../common/msg.h"
29 #include "../../../common/xml.h"
30 
31 
32 #define MAX_SAVESUBSYSTEMS 32
33 #define SAVE_FILE_VERSION 4
34 #define SAVEGAME_EXTENSION "savx"
35 
36 typedef struct saveFileHeader_s {
37  uint32_t version;
38  uint32_t compressed;
39  uint32_t subsystems;
40  uint32_t dummy[13];
41  char gameVersion[16];
42  char name[32];
43  char gameDate[32];
44  char realDate[32];
45  uint32_t xmlSize;
47 
48 typedef struct saveSubsystems_s {
49  const char* name;
50  bool (*save) (xmlNode_t* parent);
51  bool (*load) (xmlNode_t* parent);
53 
54 #define FOREACH_XMLNODE(var, node, name) \
55  for (xmlNode_t* var = cgi->XML_GetNode((node), name); var; var = cgi->XML_GetNextNode(var, node, name))
56 
57 void SAV_Init(void);
58 bool SAV_AddSubsystem(saveSubsystems_t* subsystem);
59 
60 /* and now the save and load prototypes for every subsystem */
61 bool B_SaveXML(xmlNode_t* parent);
62 bool B_LoadXML(xmlNode_t* parent);
63 bool CP_SaveXML(xmlNode_t* parent);
64 bool CP_LoadXML(xmlNode_t* parent);
65 bool HOS_LoadXML(xmlNode_t* parent);
66 bool HOS_SaveXML(xmlNode_t* parent);
67 bool BS_SaveXML(xmlNode_t* parent);
68 bool BS_LoadXML(xmlNode_t* parent);
69 bool AIR_SaveXML(xmlNode_t* parent);
70 bool AIR_LoadXML(xmlNode_t* parent);
71 bool AC_LoadXML(xmlNode_t* parent);
72 bool E_SaveXML(xmlNode_t* parent);
73 bool E_LoadXML(xmlNode_t* parent);
74 bool RS_SaveXML(xmlNode_t* parent);
75 bool RS_LoadXML(xmlNode_t* parent);
76 bool PR_SaveXML(xmlNode_t* parent);
77 bool PR_LoadXML(xmlNode_t* parent);
78 bool MS_SaveXML(xmlNode_t* parent);
79 bool MS_LoadXML(xmlNode_t* parent);
80 bool STATS_SaveXML(xmlNode_t* parent);
81 bool STATS_LoadXML(xmlNode_t* parent);
82 bool NAT_SaveXML(xmlNode_t* parent);
83 bool NAT_LoadXML(xmlNode_t* parent);
84 bool TR_SaveXML(xmlNode_t* parent);
85 bool TR_LoadXML(xmlNode_t* parent);
86 bool AB_SaveXML(xmlNode_t* parent);
87 bool AB_LoadXML(xmlNode_t* parent);
88 bool XVI_SaveXML(xmlNode_t* parent);
89 bool XVI_LoadXML(xmlNode_t* parent);
90 bool INS_SaveXML(xmlNode_t* parent);
91 bool INS_LoadXML(xmlNode_t* parent);
92 bool MSO_SaveXML(xmlNode_t* parent);
93 bool MSO_LoadXML(xmlNode_t* parent);
94 bool US_SaveXML(xmlNode_t* parent);
95 bool US_LoadXML(xmlNode_t* parent);
96 bool MIS_LoadXML(xmlNode_t* parent);
97 bool MIS_SaveXML(xmlNode_t* parent);
98 bool INT_SaveXML(xmlNode_t* parent);
99 bool INT_LoadXML(xmlNode_t* parent);
100 
101 bool B_PostLoadInit(void);
102 bool AIR_PostLoadInit(void);
103 bool PR_PostLoadInit(void);
104 
105 bool SAV_LoadHeader(const char* filename, saveFileHeader_t* header);
106 bool SAV_GameLoad(const char* file, const char** error);
107 bool SAV_GameSaveAllowed(char** error);
108 bool SAV_GameSave(const char* filename, const char* comment, char** error);
bool AIR_LoadXML(xmlNode_t *parent)
bool AC_LoadXML(xmlNode_t *parent)
Load callback for savin in XML Format.
bool(* save)(xmlNode_t *parent)
Definition: cp_save.h:50
struct saveFileHeader_s saveFileHeader_t
bool AIR_SaveXML(xmlNode_t *parent)
Save callback for savegames in xml format.
bool B_LoadXML(xmlNode_t *parent)
Loads base data.
Definition: cp_base.cpp:2407
char realDate[32]
Definition: cp_save.h:44
uint32_t compressed
Definition: cp_save.h:38
uint32_t dummy[13]
Definition: cp_save.h:40
bool MSO_SaveXML(xmlNode_t *parent)
saves current notification and pause settings
bool SAV_GameSave(const char *filename, const char *comment, char **error)
This is a savegame function which stores the game in xml-Format.
Definition: cp_save.cpp:293
bool HOS_SaveXML(xmlNode_t *parent)
Saving function for hospital related data.
bool AB_SaveXML(xmlNode_t *parent)
Save callback for alien base data.
const char * filename
Definition: ioapi.h:41
bool PR_LoadXML(xmlNode_t *parent)
Load callback for xml savegames.
Definition: cp_produce.cpp:712
bool HOS_LoadXML(xmlNode_t *parent)
Saving function for hospital related data.
bool XVI_SaveXML(xmlNode_t *parent)
XVI map saving callback.
Definition: cp_xvi.cpp:215
bool INS_LoadXML(xmlNode_t *parent)
Load callback for savegames.
bool STATS_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
bool NAT_LoadXML(xmlNode_t *parent)
Nation loading xml callback.
Definition: cp_nation.cpp:323
bool RS_SaveXML(xmlNode_t *parent)
Save callback for research and technologies.
bool TR_LoadXML(xmlNode_t *parent)
Load callback for xml savegames.
bool TR_SaveXML(xmlNode_t *parent)
Save callback for xml savegames.
const char * name
Definition: cp_save.h:49
bool STATS_LoadXML(xmlNode_t *parent)
Load callback for savegames in XML Format.
#define xmlNode_t
Definition: xml.h:24
bool B_PostLoadInit(void)
Set the capacity stuff for all the bases after loading a savegame.
Definition: cp_base.cpp:2378
char name[32]
Definition: cp_save.h:42
bool MIS_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
char gameDate[32]
Definition: cp_save.h:43
bool BS_SaveXML(xmlNode_t *parent)
Save callback for savegames.
Definition: cp_market.cpp:441
bool MSO_LoadXML(xmlNode_t *parent)
Restores the notification and pause settings from savegame.
void SAV_Init(void)
Register all save-subsystems and init some cvars and commands.
Definition: cp_save.cpp:413
bool CP_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
bool E_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
bool US_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
uint32_t subsystems
Definition: cp_save.h:39
bool RS_LoadXML(xmlNode_t *parent)
Load callback for research and technologies.
uint32_t version
Definition: cp_save.h:37
bool INT_LoadXML(xmlNode_t *parent)
Load callback for savegames in XML Format.
bool SAV_AddSubsystem(saveSubsystems_t *subsystem)
Adds a subsystem to the saveSubsystems array.
Definition: cp_save.cpp:394
bool INT_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
bool XVI_LoadXML(xmlNode_t *parent)
Load the XVI map from the savegame.
Definition: cp_xvi.cpp:247
bool PR_PostLoadInit(void)
actions to do with productions after loading a savegame
Definition: cp_produce.cpp:802
bool SAV_GameSaveAllowed(char **error)
Determines if saving is allowed.
Definition: cp_save.cpp:267
bool MS_LoadXML(xmlNode_t *parent)
Load callback for messages.
bool AB_LoadXML(xmlNode_t *parent)
Load callback for alien base data.
bool US_LoadXML(xmlNode_t *parent)
Load callback for xml savegames.
struct saveSubsystems_s saveSubsystems_t
bool NAT_SaveXML(xmlNode_t *parent)
Nation saving callback.
Definition: cp_nation.cpp:228
uint32_t xmlSize
Definition: cp_save.h:45
bool E_LoadXML(xmlNode_t *parent)
Load callback for savegames in XML Format.
bool MIS_LoadXML(xmlNode_t *parent)
Load callback for savegames in XML Format.
bool MS_SaveXML(xmlNode_t *parent)
Save callback for messages.
bool SAV_LoadHeader(const char *filename, saveFileHeader_t *header)
Loads and verifies a savegame header.
Definition: cp_save.cpp:114
bool AIR_PostLoadInit(void)
Actions needs to be done after loading the savegame.
bool CP_LoadXML(xmlNode_t *parent)
Load callback for savegames in XML Format.
bool BS_LoadXML(xmlNode_t *parent)
Load callback for savegames.
Definition: cp_market.cpp:482
bool B_SaveXML(xmlNode_t *parent)
Save callback for saving in xml format.
Definition: cp_base.cpp:2264
char gameVersion[16]
Definition: cp_save.h:41
bool SAV_GameLoad(const char *file, const char **error)
Loads the given savegame from an xml File.
Definition: cp_save.cpp:152
bool INS_SaveXML(xmlNode_t *parent)
Save callback for savegames in xml.
bool PR_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
Definition: cp_produce.cpp:678
bool(* load)(xmlNode_t *parent)
Definition: cp_save.h:51