Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
shddef.cpp
Go to the documentation of this file.
1/*
2** Command & Conquer Generals Zero Hour(tm)
3** Copyright 2025 Electronic Arts Inc.
4**
5** This program is free software: you can redistribute it and/or modify
6** it under the terms of the GNU General Public License as published by
7** the Free Software Foundation, either version 3 of the License, or
8** (at your option) any later version.
9**
10** This program is distributed in the hope that it will be useful,
11** but WITHOUT ANY WARRANTY; without even the implied warranty of
12** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13** GNU General Public License for more details.
14**
15** You should have received a copy of the GNU General Public License
16** along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19 /***********************************************************************************************
20 *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
21 ***********************************************************************************************
22 * *
23 * Project Name : WWSHADE *
24 * *
25 * $Archive:: wwshade/shddef.cpp $*
26 * *
27 * $Org Author:: Jani_p
28 *
29 * $Author:: Kenny_m
30 *
31 * $Modtime:: 6/07/02 3:12p $*
32 * *
33 * $Revision:: 2 $*
34 * *
35 * 6/07/02 KJM : Added validation enum
36 *---------------------------------------------------------------------------------------------*
37 * Functions: *
38 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
39
40#include "shddef.h"
41#include "chunkio.h"
42#include "w3d_file.h"
43
44
46 ClassID(classid),
47 Name("UnNamed"),
48 SurfaceType(0)
49{
50
52 ShdDefClass, SurfaceType,
53 (
54 "Light Metal", SURFACE_TYPE_LIGHT_METAL,
55 "Heavy Metal", SURFACE_TYPE_HEAVY_METAL,
56 "Water", SURFACE_TYPE_WATER,
57 "Sand", SURFACE_TYPE_SAND,
58 "Dirt", SURFACE_TYPE_DIRT,
59 "Mud", SURFACE_TYPE_MUD,
60 "Grass", SURFACE_TYPE_GRASS,
61 "Wood", SURFACE_TYPE_WOOD,
62 "Concrete", SURFACE_TYPE_CONCRETE,
63 "Flesh", SURFACE_TYPE_FLESH,
64 "Rock", SURFACE_TYPE_ROCK,
65 "Snow", SURFACE_TYPE_SNOW,
66 "Ice", SURFACE_TYPE_ICE,
67 "Default", SURFACE_TYPE_DEFAULT,
68 "Glass", SURFACE_TYPE_GLASS,
69 "Cloth", SURFACE_TYPE_CLOTH,
70 "Tiberium Field", SURFACE_TYPE_TIBERIUM_FIELD,
71 "Foliage Permeable", SURFACE_TYPE_FOLIAGE_PERMEABLE,
72 "Glass Permeable", SURFACE_TYPE_GLASS_PERMEABLE,
73 "Ice Permeable", SURFACE_TYPE_ICE_PERMEABLE,
74 "Cloth Permeable", SURFACE_TYPE_CLOTH_PERMEABLE,
75 "Electrical", SURFACE_TYPE_ELECTRICAL,
76 "Electrical Permeable", SURFACE_TYPE_ELECTRICAL_PERMEABLE,
77 "Flammable", SURFACE_TYPE_FLAMMABLE,
78 "Flammable Permeable", SURFACE_TYPE_FLAMMABLE_PERMEABLE ,
79 "Steam", SURFACE_TYPE_STEAM,
80 "Steam Permeable", SURFACE_TYPE_STEAM_PERMEABLE,
81 "Water Permeable", SURFACE_TYPE_WATER_PERMEABLE,
82 "Tiberium Water", SURFACE_TYPE_TIBERIUM_WATER,
83 "Tiberium Water Permeable", SURFACE_TYPE_TIBERIUM_WATER_PERMEABLE,
84 "Underwater Dirt", SURFACE_TYPE_UNDERWATER_DIRT,
85 "Underwater Tiberium Dirt", SURFACE_TYPE_UNDERWATER_TIBERIUM_DIRT,
86 NULL
87 )
88 );
89}
90
92 ClassID(that.ClassID),
93 Name(that.Name),
94 SurfaceType(that.SurfaceType)
95{
96}
97
101
102const char * ShdDefClass::Get_Name (void) const
103{
104 return Name;
105}
106
107void ShdDefClass::Set_Name (const char *new_name)
108{
109 Name = new_name;
110}
111
113{
114 SurfaceType = 0;
115}
116
117
118
119
120/*******************************************************************************
121**
122** Save-Load methods for ShdDefClass
123**
124*******************************************************************************/
125enum
126{
127 CHUNKID_VARIABLES = 0x16490430,
128
131};
132
133
134
135//**********************************************************************************************
137
141{
142 bool retval=true;
143
145
146 retval=Save_Variables(csave);
147
148 csave.End_Chunk ();
149
150 return retval;
151}
152
153
154
155//**********************************************************************************************
157
161{
162 bool retval = true;
163
164 cload.Open_Chunk();
165
166 retval=cload.Cur_Chunk_ID()==CHUNKID_VARIABLES;
167 Load_Variables(cload);
168
169 cload.Close_Chunk();
170
171 return retval;
172}
173
174
175//**********************************************************************************************
177
182bool ShdDefClass::Save_Variables (ChunkSaveClass &csave)
183{
184 bool retval = true;
186 WRITE_MICRO_CHUNK (csave, VARID_SURFACETYPE, SurfaceType);
187 return retval;
188}
189
190
191//**********************************************************************************************
193
196bool ShdDefClass::Load_Variables (ChunkLoadClass &cload)
197{
198 bool retval = true;
199
200 //
201 // Loop through all the microchunks that define the variables
202 //
203 while (cload.Open_Micro_Chunk ())
204 {
205 switch (cload.Cur_Micro_Chunk_ID ())
206 {
208 READ_MICRO_CHUNK (cload, VARID_SURFACETYPE, SurfaceType);
209 }
210
211 cload.Close_Micro_Chunk();
212 }
213
214 return retval;
215}
216
#define NULL
Definition BaseType.h:92
@ SURFACE_TYPE_FLAMMABLE_PERMEABLE
Definition w3d_file.h:1087
@ SURFACE_TYPE_DIRT
Definition w3d_file.h:1066
@ SURFACE_TYPE_FOLIAGE_PERMEABLE
Definition w3d_file.h:1079
@ SURFACE_TYPE_ICE
Definition w3d_file.h:1074
@ SURFACE_TYPE_DEFAULT
Definition w3d_file.h:1075
@ SURFACE_TYPE_ELECTRICAL
Definition w3d_file.h:1083
@ SURFACE_TYPE_CLOTH_PERMEABLE
Definition w3d_file.h:1082
@ SURFACE_TYPE_GRASS
Definition w3d_file.h:1068
@ SURFACE_TYPE_ROCK
Definition w3d_file.h:1072
@ SURFACE_TYPE_UNDERWATER_TIBERIUM_DIRT
Definition w3d_file.h:1093
@ SURFACE_TYPE_TIBERIUM_WATER
Definition w3d_file.h:1090
@ SURFACE_TYPE_CLOTH
Definition w3d_file.h:1077
@ SURFACE_TYPE_GLASS_PERMEABLE
Definition w3d_file.h:1080
@ SURFACE_TYPE_SNOW
Definition w3d_file.h:1073
@ SURFACE_TYPE_ELECTRICAL_PERMEABLE
Definition w3d_file.h:1086
@ SURFACE_TYPE_HEAVY_METAL
Definition w3d_file.h:1063
@ SURFACE_TYPE_WATER
Definition w3d_file.h:1064
@ SURFACE_TYPE_UNDERWATER_DIRT
Definition w3d_file.h:1092
@ SURFACE_TYPE_FLAMMABLE
Definition w3d_file.h:1084
@ SURFACE_TYPE_MUD
Definition w3d_file.h:1067
@ SURFACE_TYPE_FLESH
Definition w3d_file.h:1071
@ SURFACE_TYPE_STEAM
Definition w3d_file.h:1085
@ SURFACE_TYPE_TIBERIUM_WATER_PERMEABLE
Definition w3d_file.h:1091
@ SURFACE_TYPE_LIGHT_METAL
Definition w3d_file.h:1062
@ SURFACE_TYPE_GLASS
Definition w3d_file.h:1076
@ SURFACE_TYPE_WOOD
Definition w3d_file.h:1069
@ SURFACE_TYPE_STEAM_PERMEABLE
Definition w3d_file.h:1088
@ SURFACE_TYPE_CONCRETE
Definition w3d_file.h:1070
@ SURFACE_TYPE_TIBERIUM_FIELD
Definition w3d_file.h:1078
@ SURFACE_TYPE_WATER_PERMEABLE
Definition w3d_file.h:1089
@ SURFACE_TYPE_SAND
Definition w3d_file.h:1065
@ SURFACE_TYPE_ICE_PERMEABLE
Definition w3d_file.h:1081
unsigned long uint32
Definition bittype.h:46
#define WRITE_MICRO_CHUNK_WWSTRING(csave, id, var)
Definition chunkio.h:309
#define WRITE_MICRO_CHUNK(csave, id, var)
Definition chunkio.h:293
#define READ_MICRO_CHUNK(cload, id, var)
Definition chunkio.h:334
#define READ_MICRO_CHUNK_WWSTRING(cload, id, var)
Definition chunkio.h:351
@ CHUNKID_VARIABLES
bool Close_Micro_Chunk()
Definition chunkio.cpp:585
bool Close_Chunk()
Definition chunkio.cpp:448
uint32 Cur_Chunk_ID()
Definition chunkio.cpp:484
uint32 Cur_Micro_Chunk_ID()
Definition chunkio.cpp:622
bool Open_Chunk()
Definition chunkio.cpp:412
bool Open_Micro_Chunk()
Definition chunkio.cpp:557
bool Begin_Chunk(uint32 id)
Definition chunkio.cpp:108
bool End_Chunk()
Definition chunkio.cpp:148
virtual void Reset(void)
Definition shddef.cpp:112
ShdDefClass(uint32 class_id)
Definition shddef.cpp:45
virtual bool Load(ChunkLoadClass &cload)
Load this ShdDef from a chunk loader.
Definition shddef.cpp:160
virtual ~ShdDefClass(void)
Definition shddef.cpp:98
void Set_Name(const char *new_name)
Definition shddef.cpp:107
const char * Get_Name(void) const
Definition shddef.cpp:102
virtual bool Save(ChunkSaveClass &csave)
Serialize this ShdDef into a chunk saver.
Definition shddef.cpp:140
@ VARID_NAME
#define ENUM_PARAM(_class, data, params)
Definition editable.h:322
@ VARID_SURFACETYPE
Definition shddef.cpp:130