UFO: Alien Invasion
Loading...
Searching...
No Matches
cp_save.h
Go to the documentation of this file.
1
5
6/*
7Copyright (C) 2002-2025 UFO: Alien Invasion.
8
9This program is free software; you can redistribute it and/or
10modify it under the terms of the GNU General Public License
11as published by the Free Software Foundation; either version 2
12of the License, or (at your option) any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17
18See the GNU General Public License for more details.
19
20You should have received a copy of the GNU General Public License
21along with this program; if not, write to the Free Software
22Foundation, 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
36typedef 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
48typedef 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
57void SAV_Init(void);
58bool SAV_AddSubsystem(saveSubsystems_t* subsystem);
59
60/* and now the save and load prototypes for every subsystem */
61bool B_SaveXML(xmlNode_t* parent);
62bool B_LoadXML(xmlNode_t* parent);
63bool CP_SaveXML(xmlNode_t* parent);
64bool CP_LoadXML(xmlNode_t* parent);
65bool HOS_LoadXML(xmlNode_t* parent);
66bool HOS_SaveXML(xmlNode_t* parent);
67bool BS_SaveXML(xmlNode_t* parent);
68bool BS_LoadXML(xmlNode_t* parent);
69bool AIR_SaveXML(xmlNode_t* parent);
70bool AIR_LoadXML(xmlNode_t* parent);
71bool AC_LoadXML(xmlNode_t* parent);
72bool E_SaveXML(xmlNode_t* parent);
73bool E_LoadXML(xmlNode_t* parent);
74bool RS_SaveXML(xmlNode_t* parent);
75bool RS_LoadXML(xmlNode_t* parent);
76bool PR_SaveXML(xmlNode_t* parent);
77bool PR_LoadXML(xmlNode_t* parent);
78bool MS_SaveXML(xmlNode_t* parent);
79bool MS_LoadXML(xmlNode_t* parent);
80bool STATS_SaveXML(xmlNode_t* parent);
81bool STATS_LoadXML(xmlNode_t* parent);
82bool NAT_SaveXML(xmlNode_t* parent);
83bool NAT_LoadXML(xmlNode_t* parent);
84bool TR_SaveXML(xmlNode_t* parent);
85bool TR_LoadXML(xmlNode_t* parent);
86bool AB_SaveXML(xmlNode_t* parent);
87bool AB_LoadXML(xmlNode_t* parent);
88bool XVI_SaveXML(xmlNode_t* parent);
89bool XVI_LoadXML(xmlNode_t* parent);
90bool INS_SaveXML(xmlNode_t* parent);
91bool INS_LoadXML(xmlNode_t* parent);
92bool MSO_SaveXML(xmlNode_t* parent);
93bool MSO_LoadXML(xmlNode_t* parent);
94bool US_SaveXML(xmlNode_t* parent);
95bool US_LoadXML(xmlNode_t* parent);
96bool MIS_LoadXML(xmlNode_t* parent);
97bool MIS_SaveXML(xmlNode_t* parent);
98bool INT_SaveXML(xmlNode_t* parent);
99bool INT_LoadXML(xmlNode_t* parent);
100
101bool B_PostLoadInit(void);
102bool AIR_PostLoadInit(void);
103bool PR_PostLoadInit(void);
104
105bool SAV_LoadHeader(const char* filename, saveFileHeader_t* header);
106bool SAV_GameLoad(const char* file, const char** error);
107bool SAV_GameSaveAllowed(char** error);
108bool SAV_GameSave(const char* filename, const char* comment, char** error);
bool BS_LoadXML(xmlNode_t *parent)
Load callback for savegames.
bool B_LoadXML(xmlNode_t *parent)
Loads base data.
Definition cp_base.cpp:2406
bool MIS_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
bool AB_LoadXML(xmlNode_t *parent)
Load callback for alien base data.
bool RS_SaveXML(xmlNode_t *parent)
Save callback for research and technologies.
bool SAV_AddSubsystem(saveSubsystems_t *subsystem)
Adds a subsystem to the saveSubsystems array.
Definition cp_save.cpp:391
bool US_LoadXML(xmlNode_t *parent)
Load callback for xml savegames.
bool B_PostLoadInit(void)
Set the capacity stuff for all the bases after loading a savegame.
Definition cp_base.cpp:2377
bool INS_SaveXML(xmlNode_t *parent)
Save callback for savegames in xml.
bool E_LoadXML(xmlNode_t *parent)
Load callback for savegames in XML Format.
bool AC_LoadXML(xmlNode_t *parent)
Load callback for savin in XML Format.
bool INT_LoadXML(xmlNode_t *parent)
Load callback for savegames in XML Format.
bool STATS_LoadXML(xmlNode_t *parent)
Load callback for savegames in XML Format.
bool B_SaveXML(xmlNode_t *parent)
Save callback for saving in xml format.
Definition cp_base.cpp:2263
bool US_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
bool MSO_SaveXML(xmlNode_t *parent)
saves current notification and pause settings
bool E_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
bool SAV_GameLoad(const char *file, const char **error)
Loads the given savegame from an xml File.
Definition cp_save.cpp:152
bool XVI_LoadXML(xmlNode_t *parent)
Load the XVI map from the savegame.
Definition cp_xvi.cpp:247
bool TR_SaveXML(xmlNode_t *parent)
Save callback for xml savegames.
bool AB_SaveXML(xmlNode_t *parent)
Save callback for alien base data.
bool MIS_LoadXML(xmlNode_t *parent)
Load callback for savegames in XML Format.
bool TR_LoadXML(xmlNode_t *parent)
Load callback for xml savegames.
bool CP_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
bool STATS_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
bool INS_LoadXML(xmlNode_t *parent)
Load callback for savegames.
bool SAV_LoadHeader(const char *filename, saveFileHeader_t *header)
Loads and verifies a savegame header.
Definition cp_save.cpp:114
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 BS_SaveXML(xmlNode_t *parent)
Save callback for savegames.
bool RS_LoadXML(xmlNode_t *parent)
Load callback for research and technologies.
bool AIR_LoadXML(xmlNode_t *parent)
bool MSO_LoadXML(xmlNode_t *parent)
Restores the notification and pause settings from savegame.
bool XVI_SaveXML(xmlNode_t *parent)
XVI map saving callback.
Definition cp_xvi.cpp:215
bool AIR_SaveXML(xmlNode_t *parent)
Save callback for savegames in xml format.
void SAV_Init(void)
Register all save-subsystems and init some cvars and commands.
Definition cp_save.cpp:410
bool CP_LoadXML(xmlNode_t *parent)
Load callback for savegames in XML Format.
bool AIR_PostLoadInit(void)
Actions needs to be done after loading the savegame.
bool PR_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
bool HOS_SaveXML(xmlNode_t *parent)
Saving function for hospital related data.
bool NAT_LoadXML(xmlNode_t *parent)
Nation loading xml callback.
bool HOS_LoadXML(xmlNode_t *parent)
Saving function for hospital related data.
bool INT_SaveXML(xmlNode_t *parent)
Save callback for savegames in XML Format.
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 PR_LoadXML(xmlNode_t *parent)
Load callback for xml savegames.
bool PR_PostLoadInit(void)
actions to do with productions after loading a savegame
bool MS_SaveXML(xmlNode_t *parent)
Save callback for messages.
bool NAT_SaveXML(xmlNode_t *parent)
Nation saving callback.
const char * filename
Definition ioapi.h:41
Message IO functions - handles byte ordering and avoids alignment errors.
char realDate[32]
Definition cp_save.h:44
char gameDate[32]
Definition cp_save.h:43
char name[32]
Definition cp_save.h:42
uint32_t dummy[13]
Definition cp_save.h:40
uint32_t subsystems
Definition cp_save.h:39
char gameVersion[16]
Definition cp_save.h:41
uint32_t compressed
Definition cp_save.h:38
uint32_t version
Definition cp_save.h:37
uint32_t xmlSize
Definition cp_save.h:45
bool(* load)(xmlNode_t *parent)
Definition cp_save.h:51
const char * name
Definition cp_save.h:49
bool(* save)(xmlNode_t *parent)
Definition cp_save.h:50
#define xmlNode_t
Definition xml.h:24