UFO: Alien Invasion
scripts.h
Go to the documentation of this file.
1 
6 /*
7 Copyright (C) 2002-2022 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 
26 #pragma once
27 
28 #include "common.h"
29 
30 #ifndef ALIGN_PTR
31 #define ALIGN_PTR(value,size) (void*)(((uintptr_t)value + (size - 1)) & (~(size - 1)))
32 #endif
33 
34 #define MEMBER_SIZEOF(TYPE, MEMBER) sizeof(((TYPE*)0)->MEMBER)
35 
41 #define V_BASETYPEMASK 0x3F
42 
48 typedef enum {
79 
81  V_ENSURE32BIT = 0xffffffff
82 } valueTypes_t;
83 
84 extern const char* const vt_names[];
85 
89 typedef enum {
108 
110 } align_t;
111 
113 typedef enum {
120 
122 } blend_t;
123 
124 typedef enum {
131 
133 } style_t;
134 
135 typedef enum {
141 
143 } fade_t;
144 
145 typedef short ufoType_t;
146 #define UFO_MAX 16
147 #define AIRCRAFT_NONE -1
148 #define UFO_NONE AIRCRAFT_NONE
149 extern const char* const align_names[];
150 extern const char* const blend_names[];
151 extern const char* const style_names[];
152 extern const char* const fade_names[];
153 extern const char* const longlines_names[];
154 #define AIR_SLOT_TYPE_STRINGS { \
155 "base_missile", \
156 "base_laser", \
157 "weapon", \
158 "shield", \
159 "electronics", \
160 "pilot", \
161 "ammo", \
162 "base_ammo_missile", \
163 "base_ammo_laser" \
164 }
165 
167 typedef struct value_s {
168  const char* string;
170  size_t ofs;
171  size_t size;
172 } value_t;
173 
174 template<typename T> inline T& Com_GetValue(void* const object, value_t const* const value)
175 {
176  return *reinterpret_cast<T*>(reinterpret_cast<byte*>(object) + value->ofs);
177 }
178 
179 template<typename T> inline T const& Com_GetValue(void const* const object, value_t const* const value)
180 {
181  return Com_GetValue<T>(const_cast<void*>(object), value);
182 }
183 
184 typedef enum {
189 
190 #ifdef DEBUG
191 int Com_SetValueDebug(void* base, const void* set, valueTypes_t type, int ofs, size_t size, const char* file, int line);
192 #define Com_SetValue(base, set, type, ofs, size) Com_SetValueDebug(base, set, type, ofs, size, __FILE__, __LINE__)
193 #else
194 int Com_SetValue(void* base, const void* set, valueTypes_t type, int ofs, size_t size);
195 #endif
196 int Com_EParseValue(void* base, const char* token, valueTypes_t type, int ofs, size_t size);
197 bool Com_ParseBlock(const char* name, const char** text, void* base, const value_t* values, memPool_t* mempool);
198 bool Com_ParseBlockToken(const char* name, const char** text, void* base, const value_t* values, memPool_t* mempool, const char* token);
199 bool Com_ParseList(const char** text, linkedList_t** list);
200 void* Com_AlignPtr(const void* memory, valueTypes_t type);
201 const char* Com_ValueToStr(const void* base, const valueTypes_t type, const int ofs);
202 const char* Com_GetLastParseError(void);
203 resultStatus_t Com_ParseValue(void* base, const char* token, valueTypes_t type, int ofs, size_t size, size_t* writtenBytes);
204 bool Com_ParseBoolean(const char* token);
205 
206 /*==============================================================
207 SCRIPT PARSING
208 ==============================================================*/
209 
210 extern const char* const name_strings[];
211 
212 #define SND_VOLUME_FOOTSTEPS 0.4f
213 
215 typedef struct terrainType_s {
216  const char* texture;
217  const char* footstepSound;
218  const char* particle;
221  struct terrainType_s* hash_next;
222 } terrainType_t;
223 
224 const terrainType_t* Com_GetTerrainType(const char* textureName);
225 
231 typedef struct constListEntry_s {
232  const char* name;
233  int value;
235 
236 bool Com_GetConstInt(const char* name, int* value);
237 bool Com_GetConstIntFromNamespace(const char* space, const char* variable, int* value);
238 const char* Com_GetConstVariable(const char* space, int value);
239 bool Com_UnregisterConstVariable(const char* name);
240 void Com_RegisterConstInt(const char* name, int value);
241 void Com_RegisterConstList(const constListEntry_t constList[]);
242 bool Com_UnregisterConstList(const constListEntry_t constList[]);
243 
244 void Com_ParseScripts(bool onlyServer);
245 const char* Com_EParse(const char** text, const char* errhead, const char* errinfo, char* target = 0, size_t size = 0);
246 const char* Com_GetRandomMapAssemblyNameForCraft(const char* craftID);
247 const char* Com_GetRandomMapAssemblyNameForCrashedCraft(const char* craftID);
248 ufoType_t Com_UFOShortNameToID(const char* token);
251 short Com_GetUfoIdsNum(void);
252 short Com_GetDropShipIdsNum(void);
253 short Com_GetHumanAircraftIdsNum(void);
254 int Com_GetScriptChecksum(void);
255 void Com_Shutdown(void);
256 
257 #include "../game/q_shared.h"
258 
259 const ugv_t* Com_GetUGVByIDSilent(const char* ugvID);
260 const ugv_t* Com_GetUGVByID(const char* ugvID);
263 void Com_GetCharacterValues(const char* teamDefition, character_t* chr);
265 const teamDef_t* Com_GetTeamDefinitionByID(const char* team);
266 const chrTemplate_t* Com_GetCharacterTemplateByID(const char* chrTemplate);
const char *const vt_names[]
possible values for parsing functions
Definition: scripts.cpp:310
void Com_ParseScripts(bool onlyServer)
Definition: scripts.cpp:3619
const char *const longlines_names[]
int value
Definition: scripts.h:233
Definition: scripts.h:51
Valid ufo types.
Definition: scripts.h:71
bool Com_UnregisterConstVariable(const char *name)
Removes a registered constant from the script mapping hash table.
Definition: scripts.cpp:147
Definition: scripts.h:70
QGL_EXTERN GLint GLenum type
Definition: r_gl.h:94
valueTypes_t
possible values for parsing functions
Definition: scripts.h:48
bool Com_GetConstIntFromNamespace(const char *space, const char *variable, int *value)
Searches whether a given value was registered as a string to int mapping.
Definition: scripts.cpp:103
float bounceFraction
Definition: scripts.h:219
const char * texture
Definition: scripts.h:216
short humanAircraftType_t
Definition: inv_shared.h:28
short Com_GetHumanAircraftIdsNum(void)
Definition: scripts.cpp:581
humanAircraftType_t Com_DropShipShortNameToID(const char *token)
Translate DropShip type to short name.
Definition: scripts.cpp:3307
const ugv_t * Com_GetUGVByIDSilent(const char *ugvID)
Searches an UGV definition by a given script id and returns the pointer to the global data...
Definition: scripts.cpp:3362
const char *const fade_names[]
Definition: scripts.cpp:355
bool Com_GetConstInt(const char *name, int *value)
Searches whether a given value was registered as a string to int mapping.
Definition: scripts.cpp:74
void Com_RegisterConstList(const constListEntry_t constList[])
Registers a list of string aliases.
Definition: scripts.cpp:253
short ufoType_t
Definition: scripts.h:145
const char *const name_strings[]
Definition: scripts.cpp:2162
const char * Com_GetConstVariable(const char *space, int value)
Searches the mapping variable for a given integer value and a namespace.
Definition: scripts.cpp:122
bool Com_ParseBlock(const char *name, const char **text, void *base, const value_t *values, memPool_t *mempool)
Definition: scripts.cpp:1393
Describes a character with all its attributes.
Definition: chr_shared.h:388
voidpf void uLong size
Definition: ioapi.h:42
int Com_SetValue(void *base, const void *set, valueTypes_t type, int ofs, size_t size)
Definition: scripts.cpp:1009
void Com_RegisterConstInt(const char *name, int value)
Register mappings between script strings and enum values for values of the type V_INT.
Definition: scripts.cpp:198
ufoType_t Com_UFOShortNameToID(const char *token)
Translate short name to UFO type.
Definition: scripts.cpp:3329
bool Com_ParseBlockToken(const char *name, const char **text, void *base, const value_t *values, memPool_t *mempool, const char *token)
Definition: scripts.cpp:1311
const char * Com_GetRandomMapAssemblyNameForCraft(const char *craftID)
Returns the name of an aircraft or an ufo that is used in the ump files for the random map assembly...
Definition: scripts.cpp:3277
bool Com_ParseList(const char **text, linkedList_t **list)
Definition: scripts.cpp:1363
const char * Com_UFOCrashedTypeToShortName(ufoType_t type)
Translate UFO type to short name when UFO is crashed.
Definition: scripts.cpp:3351
const terrainType_t * Com_GetTerrainType(const char *textureName)
Searches the terrain definition if given.
Definition: scripts.cpp:3067
const char *const align_names[]
Definition: scripts.cpp:340
align_t
We need this here for checking the boundaries from script values.
Definition: scripts.h:89
const char * Com_EParse(const char **text, const char *errhead, const char *errinfo, char *target=0, size_t size=0)
Parsing function that prints an error message when there is no text in the buffer.
Definition: scripts.cpp:277
size_t ofs
Definition: scripts.h:170
const ugv_t * Com_GetUGVByID(const char *ugvID)
Searches an UGV definition by a given script id and returns the pointer to the global data...
Definition: scripts.cpp:3381
Definition: scripts.h:78
const char * Com_GetRandomMapAssemblyNameForCrashedCraft(const char *craftID)
Definition: scripts.cpp:3285
T & Com_GetValue(void *const object, value_t const *const value)
Definition: scripts.h:174
const char * string
Definition: scripts.h:168
blend_t
Definition: scripts.h:113
Definition: scripts.h:64
void Com_GetCharacterValues(const char *teamDefition, character_t *chr)
Assign character values, 3D models and names to a character.
Definition: scripts.cpp:2408
short Com_GetDropShipIdsNum(void)
Definition: scripts.cpp:576
const char * Com_GetLastParseError(void)
Definition: scripts.cpp:428
const char * Com_UFOTypeToShortName(ufoType_t type)
Translate UFO type to short name.
Definition: scripts.cpp:3342
Definition: scripts.h:53
size_t size
Definition: scripts.h:171
void * Com_AlignPtr(const void *memory, valueTypes_t type)
Align a memory to use a natural address for the data type we will write.
Definition: scripts.cpp:437
const char * name
Definition: scripts.h:232
Different terrain definitions for footsteps and particles.
Definition: scripts.h:215
struct terrainType_s * hash_next
Definition: scripts.h:221
resultStatus_t
Definition: scripts.h:184
bool Com_ParseBoolean(const char *token)
Parses a boolean from a string.
Definition: scripts.cpp:986
fade_t
Definition: scripts.h:135
Definition: scripts.h:49
bool Com_GetCharacterModel(character_t *chr)
Definition: scripts.cpp:2358
const char * footstepSound
Definition: scripts.h:217
int Com_EParseValue(void *base, const char *token, valueTypes_t type, int ofs, size_t size)
Definition: scripts.cpp:964
const char * Com_ValueToStr(const void *base, const valueTypes_t type, const int ofs)
Definition: scripts.cpp:1171
short Com_GetUfoIdsNum(void)
Definition: scripts.cpp:571
Definition: scripts.h:50
bool Com_UnregisterConstList(const constListEntry_t constList[])
Unregisters a list of string aliases.
Definition: scripts.cpp:237
QGL_EXTERN GLuint GLsizei GLsizei GLint GLenum GLchar * name
Definition: r_gl.h:110
const char * Com_DropShipTypeToShortName(humanAircraftType_t type)
Translate DropShip type to short name.
Definition: scripts.cpp:3319
list of script aliases to register
Definition: scripts.h:231
void Com_Shutdown(void)
Definition: scripts.cpp:3732
style_t
Definition: scripts.h:124
definitions common between client and server, but not game lib
Definition: scripts.h:52
const chrTemplate_t * Com_GetCharacterTemplateByID(const char *chrTemplate)
Returns the chrTemplate pointer for the given id - or nullptr if not found in the chrTemplates array...
Definition: scripts.cpp:2809
float footstepVolume
Definition: scripts.h:220
valueTypes_t type
Definition: scripts.h:169
const teamDef_t * Com_GetTeamDefinitionByID(const char *team)
Returns the teamDef pointer for the searched team id - or nullptr if not found in the teamDef array...
Definition: scripts.cpp:2345
const char *const blend_names[]
Definition: scripts.cpp:345
const char *const style_names[]
Definition: scripts.cpp:350
resultStatus_t Com_ParseValue(void *base, const char *token, valueTypes_t type, int ofs, size_t size, size_t *writtenBytes)
Parse a value from a string.
Definition: scripts.cpp:656
uint8_t byte
Definition: ufotypes.h:34
const char * particle
Definition: scripts.h:218
Definition: scripts.h:55
int Com_GetScriptChecksum(void)
Definition: scripts.cpp:3717
Defines a type of UGV/Robot.
Definition: chr_shared.h:245