1 /**
2  * @file
3  * @brief XML tag constants for savegame.
4  */
5 
6 /*
7 Copyright (C) 2002-2011 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 #define SAVE_BASES_BASES "bases"
28 
29 #define SAVE_BASES_BASE "base"
30 #define SAVE_BASES_IDX "idx"
31 #define SAVE_BASES_NAME "name"
32 #define SAVE_BASES_POS "pos"
33 #define SAVE_BASES_BASESTATUS "baseStatus"
34 #define SAVE_BASES_ALIENINTEREST "alienInterest"
35 
36 #define SAVE_BASES_BUILDINGSPACE "buildingSpace"
37 #define SAVE_BASES_BUILDING "building"
38 #define SAVE_BASES_X "x"
39 #define SAVE_BASES_Y "y"
40 #define SAVE_BASES_BUILDINGINDEX "buildingIDX"
41 #define SAVE_BASES_BLOCKED "blocked"
42 
43 #define SAVE_BASES_BUILDINGS "buildings"
44 #define SAVE_BASES_BUILDINGTYPE "buildingType"
45 #define SAVE_BASES_BUILDING_PLACE "buildingPlace"
46 #define SAVE_BASES_BUILDINGSTATUS "buildingStatus"
47 #define SAVE_BASES_BUILDINGTIMESTART "buildingTimeStart"
48 #define SAVE_BASES_BUILDINGBUILDTIME "buildingBuildTime"
49 #define SAVE_BASES_BUILDINGLEVEL "buildingLevel"
50 
51 #define SAVE_BASES_BATTERIES "batteries"
52 #define SAVE_BASES_LASERS "lasers"
53 #define SAVE_BASES_WEAPON "weapon"
54 #define SAVE_BASES_AUTOFIRE "autoFire"
55 #define SAVE_BASES_TARGET "target"
56 
57 #define SAVE_BASES_STORAGE "storage"
58 #define SAVE_BASES_ITEM "item"
59 #define SAVE_BASES_ODS_ID "id"
60 #define SAVE_BASES_NUM "num"
61 #define SAVE_BASES_NUMLOOSE "numLoose"
62 
63 #define SAVE_BASES_RADARRANGE "radarRange"
64 #define SAVE_BASES_TRACKINGRANGE "trackingRange"
65 
66 #define SAVE_BASES_ALIENCONTAINMENT "alienContainment"
67 
68 #define SAVE_BASESTATUS_NAMESPACE "savebaseStatus"
69 #define SAVE_BUILDINGSTATUS_NAMESPACE "savebuildingStatus"
70 static const constListEntry_t saveBaseConstants[] = {
71 	{SAVE_BASESTATUS_NAMESPACE"::underattack", BASE_UNDER_ATTACK},
72 	{SAVE_BASESTATUS_NAMESPACE"::working", BASE_WORKING},
73 	/* other base statuses (notused, destroyed) should not appear in savegames */
74 	{SAVE_BUILDINGSTATUS_NAMESPACE"::construction", B_STATUS_UNDER_CONSTRUCTION},
75 	{SAVE_BUILDINGSTATUS_NAMESPACE"::built", B_STATUS_CONSTRUCTION_FINISHED},
76 	{SAVE_BUILDINGSTATUS_NAMESPACE"::working", B_STATUS_WORKING},
77 	{SAVE_BUILDINGSTATUS_NAMESPACE"::down", B_STATUS_DOWN},
78 
79 	{nullptr, -1}
80 };
81 
82 /*
83 DTD:
84 
85 <!ELEMENT bases base+>
86 <!ELEMENT base pos buildingSpace buildings batteries lasers alienContainment?>
87 <!ATTLIST base
88 	idx					CDATA		#REQUIRED
89 	name				CDATA		#IMPLIED
90 	baseStatus	(underattack,
91 					working)		#REQUIRED
92 	alienInterest		CDATA		'0'
93 	currentAircraftIDX	CDATA		#IMPLIED
94 	radarRange			CDATA		'0'
95 	trackingRange		CDATA		'0'
96 >
97 
98 <!ELEMENT pos EMPTY>
99 <!ATTLIST pos
100 	x			CDATA		'0.0'
101 	y			CDATA		'0.0'
102 	z			CDATA		'0.0'
103 >
104 
105 <!ELEMENT buildingSpace building+>
106 <!ELEMENT building EMPTY>
107 <!ATTLIST building
108 	x			CDATA		'0'
109 	y			CDATA		'0'
110 	buildingIDX	CDATA		#IMPLIED
111 	blocked		CDATA		'false'
112 >
113 
114 <!ELEMENT buildings building*>
115 <!ELEMENT building pos>
116 <!ATTLIST building
117 	buildingType		CDATA	#REQUIRED
118 	buildingPlace		CDATA
119 	buildingStatus (
120 
121 
122 	)
123 	buildingTimeStart	CDATA	'0'
124 	buildingBuildTime	CDATA	'0'
125 	buildingLevel		CDATA	'0'
126 >
127 
128 <!ELEMENT batteries weapon*>
129 <!ELEMENT lasers weapon*>
130 <!ELEMENT weapon EMPTY>
131 <!ATTLIST weapon
132 	autoFire			CDATA	'true'
133 	target				CDATA	#IMPLIED
134 	...
135 >
136 **Note: more ATTLIST of weapon is defined in save_fightequip.h
137 
138 <!ELEMENT storage item*>
139 
140 <!ELEMENT item EMPTY>
141 <!ATTLIST item
142 	id			CDATA		#REQUIRED
143 	num			CDATA		'0'
144 	numLoose	CDATA		'0'
145 >
146 */
147