UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
scripts.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 
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 {
80 
82  V_ENSURE32BIT = 0xffffffff
83 } valueTypes_t;
84 
85 extern const char* const vt_names[];
86 
90 typedef enum {
109 
111 } align_t;
112 
114 typedef enum {
121 
123 } blend_t;
124 
125 typedef enum {
132 
134 } style_t;
135 
136 typedef enum {
142 
144 } fade_t;
145 
146 typedef short ufoType_t;
147 #define UFO_MAX 16
148 #define AIRCRAFT_NONE -1
149 #define UFO_NONE AIRCRAFT_NONE
150 extern const char* const align_names[];
151 extern const char* const blend_names[];
152 extern const char* const style_names[];
153 extern const char* const fade_names[];
154 extern const char* const longlines_names[];
155 #define AIR_SLOT_TYPE_STRINGS { \
156 "base_missile", \
157 "base_laser", \
158 "weapon", \
159 "shield", \
160 "electronics", \
161 "pilot", \
162 "ammo", \
163 "base_ammo_missile", \
164 "base_ammo_laser" \
165 }
166 
168 typedef struct value_s {
169  const char* string;
171  size_t ofs;
172  size_t size;
173 } value_t;
174 
175 template<typename T> inline T& Com_GetValue(void* const object, value_t const* const value)
176 {
177  return *reinterpret_cast<T*>(reinterpret_cast<byte*>(object) + value->ofs);
178 }
179 
180 template<typename T> inline T const& Com_GetValue(void const* const object, value_t const* const value)
181 {
182  return Com_GetValue<T>(const_cast<void*>(object), value);
183 }
184 
185 typedef enum {
190 
191 #ifdef DEBUG
192 int Com_SetValueDebug(void* base, const void* set, valueTypes_t type, int ofs, size_t size, const char* file, int line);
193 #define Com_SetValue(base, set, type, ofs, size) Com_SetValueDebug(base, set, type, ofs, size, __FILE__, __LINE__)
194 #else
195 int Com_SetValue(void* base, const void* set, valueTypes_t type, int ofs, size_t size);
196 #endif
197 int Com_EParseValue(void* base, const char* token, valueTypes_t type, int ofs, size_t size);
198 bool Com_ParseBlock(const char* name, const char** text, void* base, const value_t* values, memPool_t* mempool);
199 bool Com_ParseBlockToken(const char* name, const char** text, void* base, const value_t* values, memPool_t* mempool, const char* token);
200 bool Com_ParseList(const char** text, linkedList_t** list);
201 void* Com_AlignPtr(const void* memory, valueTypes_t type);
202 const char* Com_ValueToStr(const void* base, const valueTypes_t type, const int ofs);
203 const char* Com_GetLastParseError(void);
204 resultStatus_t Com_ParseValue(void* base, const char* token, valueTypes_t type, int ofs, size_t size, size_t* writtenBytes);
205 bool Com_ParseBoolean(const char* token);
206 
207 /*==============================================================
208 SCRIPT PARSING
209 ==============================================================*/
210 
211 extern const char* const name_strings[];
212 
213 #define SND_VOLUME_FOOTSTEPS 0.4f
214 
216 typedef struct terrainType_s {
217  const char* texture;
218  const char* footstepSound;
219  const char* particle;
223 } terrainType_t;
224 
225 const terrainType_t* Com_GetTerrainType(const char* textureName);
226 
232 typedef struct constListEntry_s {
233  const char* name;
234  int value;
236 
237 bool Com_GetConstInt(const char* name, int* value);
238 bool Com_GetConstIntFromNamespace(const char* space, const char* variable, int* value);
239 const char* Com_GetConstVariable(const char* space, int value);
240 bool Com_UnregisterConstVariable(const char* name);
241 void Com_RegisterConstInt(const char* name, int value);
242 void Com_RegisterConstList(const constListEntry_t constList[]);
243 bool Com_UnregisterConstList(const constListEntry_t constList[]);
244 
245 void Com_ParseScripts(bool onlyServer);
246 const char* Com_EParse(const char** text, const char* errhead, const char* errinfo, char* target = 0, size_t size = 0);
247 const char* Com_GetRandomMapAssemblyNameForCraft(const char* craftID);
248 const char* Com_GetRandomMapAssemblyNameForCrashedCraft(const char* craftID);
249 ufoType_t Com_UFOShortNameToID(const char* token);
252 short Com_GetUfoIdsNum(void);
253 short Com_GetDropShipIdsNum(void);
254 short Com_GetHumanAircraftIdsNum(void);
255 int Com_GetScriptChecksum(void);
256 void Com_Shutdown(void);
257 
258 #include "../game/q_shared.h"
259 
260 const ugv_t* Com_GetUGVByIDSilent(const char* ugvID);
261 const ugv_t* Com_GetUGVByID(const char* ugvID);
264 void Com_GetCharacterValues(const char* teamDefition, character_t* chr);
266 const teamDef_t* Com_GetTeamDefinitionByID(const char* team);
267 const chrTemplate_t* Com_GetCharacterTemplateByID(const char* chrTemplate);
list of script aliases to register
Definition: scripts.h:232
const char *const vt_names[]
possible values for parsing functions
Definition: scripts.cpp:310
void Com_ParseScripts(bool onlyServer)
Definition: scripts.cpp:3641
const char *const longlines_names[]
Definition: scripts.h:51
Valid ufo types.
Definition: scripts.h:72
bool Com_UnregisterConstVariable(const char *name)
Removes a registered constant from the script mapping hash table.
Definition: scripts.cpp:147
Definition: scripts.h:71
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
short humanAircraftType_t
Definition: inv_shared.h:28
short Com_GetHumanAircraftIdsNum(void)
Definition: scripts.cpp:584
const char * texture
Definition: scripts.h:217
humanAircraftType_t Com_DropShipShortNameToID(const char *token)
Translate DropShip type to short name.
Definition: scripts.cpp:3329
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:3384
const char *const fade_names[]
Definition: scripts.cpp:356
Defines a type of UGV/Robot.
Definition: chr_shared.h:234
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:146
const char *const name_strings[]
Definition: scripts.cpp:2184
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:1415
int Com_SetValue(void *base, const void *set, valueTypes_t type, int ofs, size_t size)
Definition: scripts.cpp:1023
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:3351
valueTypes_t type
Definition: scripts.h:170
bool Com_ParseBlockToken(const char *name, const char **text, void *base, const value_t *values, memPool_t *mempool, const char *token)
Definition: scripts.cpp:1333
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:3299
bool Com_ParseList(const char **text, linkedList_t **list)
Definition: scripts.cpp:1385
const char * Com_UFOCrashedTypeToShortName(ufoType_t type)
Translate UFO type to short name when UFO is crashed.
Definition: scripts.cpp:3373
const terrainType_t * Com_GetTerrainType(const char *textureName)
Searches the terrain definition if given.
Definition: scripts.cpp:3089
const char * particle
Definition: scripts.h:219
const char *const align_names[]
Definition: scripts.cpp:341
align_t
We need this here for checking the boundaries from script values.
Definition: scripts.h:90
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
GLsizei size
Definition: r_gl.h:152
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:3403
Definition: scripts.h:79
const char * Com_GetRandomMapAssemblyNameForCrashedCraft(const char *craftID)
Definition: scripts.cpp:3307
T & Com_GetValue(void *const object, value_t const *const value)
Definition: scripts.h:175
float footstepVolume
Definition: scripts.h:221
blend_t
Definition: scripts.h:114
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:2430
Definition: scripts.h:68
short Com_GetDropShipIdsNum(void)
Definition: scripts.cpp:579
const char * Com_GetLastParseError(void)
Definition: scripts.cpp:431
const char * Com_UFOTypeToShortName(ufoType_t type)
Translate UFO type to short name.
Definition: scripts.cpp:3364
Definition: scripts.h:53
const char * string
Definition: scripts.h:169
struct terrainType_s * hash_next
Definition: scripts.h:222
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:440
size_t ofs
Definition: scripts.h:171
resultStatus_t
Definition: scripts.h:185
bool Com_ParseBoolean(const char *token)
Parses a boolean from a string.
Definition: scripts.cpp:1000
int value
Definition: scripts.h:234
struct value_s value_t
fade_t
Definition: scripts.h:136
Definition: scripts.h:49
bool Com_GetCharacterModel(character_t *chr)
Definition: scripts.cpp:2380
struct constListEntry_s constListEntry_t
list of script aliases to register
int Com_EParseValue(void *base, const char *token, valueTypes_t type, int ofs, size_t size)
Definition: scripts.cpp:978
const char * Com_ValueToStr(const void *base, const valueTypes_t type, const int ofs)
Definition: scripts.cpp:1189
short Com_GetUfoIdsNum(void)
Definition: scripts.cpp:574
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:3341
const char * name
Definition: scripts.h:233
struct terrainType_s terrainType_t
Different terrain definitions for footsteps and particles.
void Com_Shutdown(void)
Definition: scripts.cpp:3754
size_t size
Definition: scripts.h:172
style_t
Definition: scripts.h:125
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:2831
Different terrain definitions for footsteps and particles.
Definition: scripts.h:216
const char * footstepSound
Definition: scripts.h:218
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:2367
const char *const blend_names[]
Definition: scripts.cpp:346
const char *const style_names[]
Definition: scripts.cpp:351
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:659
uint8_t byte
Definition: ufotypes.h:34
Definition: scripts.h:55
int Com_GetScriptChecksum(void)
Definition: scripts.cpp:3739
float bounceFraction
Definition: scripts.h:220
Describes a character with all its attributes.
Definition: chr_shared.h:369