UFO: Alien Invasion
Loading...
Searching...
No Matches
scripts.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
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
83
84extern const char* const vt_names[];
85
87
111
123
134
144
145typedef short ufoType_t;
146#define UFO_MAX 16
147#define AIRCRAFT_NONE -1
148#define UFO_NONE AIRCRAFT_NONE
149extern const char* const align_names[];
150extern const char* const blend_names[];
151extern const char* const style_names[];
152extern const char* const fade_names[];
153extern 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
167typedef struct value_s {
168 const char* string;
170 size_t ofs;
171 size_t size;
172} value_t;
173
174template<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
179template<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
189
190#ifdef DEBUG
191int 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
194int Com_SetValue(void* base, const void* set, valueTypes_t type, int ofs, size_t size);
195#endif
196int Com_EParseValue(void* base, const char* token, valueTypes_t type, int ofs, size_t size);
197bool Com_ParseBlock(const char* name, const char** text, void* base, const value_t* values, memPool_t* mempool);
198bool Com_ParseBlockToken(const char* name, const char** text, void* base, const value_t* values, memPool_t* mempool, const char* token);
199bool Com_ParseList(const char** text, linkedList_t** list);
200void* Com_AlignPtr(const void* memory, valueTypes_t type);
201const char* Com_ValueToStr(const void* base, const valueTypes_t type, const int ofs);
202const char* Com_GetLastParseError(void);
203resultStatus_t Com_ParseValue(void* base, const char* token, valueTypes_t type, int ofs, size_t size, size_t* writtenBytes);
204bool Com_ParseBoolean(const char* token);
205
206/*==============================================================
207SCRIPT PARSING
208==============================================================*/
209
210extern const char* const name_strings[];
211
212#define SND_VOLUME_FOOTSTEPS 0.4f
213
215typedef struct terrainType_s {
216 const char* texture;
217 const char* footstepSound;
218 const char* particle;
221 struct terrainType_s* hash_next;
223
224const terrainType_t* Com_GetTerrainType(const char* textureName);
225
231typedef struct constListEntry_s {
232 const char* name;
233 int value;
235
236bool Com_GetConstInt(const char* name, int* value);
237bool Com_GetConstIntFromNamespace(const char* space, const char* variable, int* value);
238const char* Com_GetConstVariable(const char* space, int value);
239bool Com_UnregisterConstVariable(const char* name);
240void Com_RegisterConstInt(const char* name, int value);
241void Com_RegisterConstList(const constListEntry_t constList[]);
242bool Com_UnregisterConstList(const constListEntry_t constList[]);
243
244void Com_ParseScripts(bool onlyServer);
245const char* Com_EParse(const char** text, const char* errhead, const char* errinfo, char* target = 0, size_t size = 0);
246const char* Com_GetRandomMapAssemblyNameForCraft(const char* craftID);
247const char* Com_GetRandomMapAssemblyNameForCrashedCraft(const char* craftID);
248ufoType_t Com_UFOShortNameToID(const char* token);
251short Com_GetUfoIdsNum(void);
252short Com_GetDropShipIdsNum(void);
254int Com_GetScriptChecksum(void);
255void Com_Shutdown(void);
256
257#include "../game/q_shared.h"
258
259const ugv_t* Com_GetUGVByIDSilent(const char* ugvID);
260const ugv_t* Com_GetUGVByID(const char* ugvID);
263void Com_GetCharacterValues(const char* teamDefition, character_t* chr);
265const teamDef_t* Com_GetTeamDefinitionByID(const char* team);
266const chrTemplate_t* Com_GetCharacterTemplateByID(const char* chrTemplate);
definitions common between client and server, but not game lib
short humanAircraftType_t
Definition inv_shared.h:31
voidpf void uLong size
Definition ioapi.h:42
Common header file.
QGL_EXTERN GLint GLenum type
Definition r_gl.h:94
QGL_EXTERN GLuint GLsizei GLsizei GLint GLenum GLchar * name
Definition r_gl.h:110
const char *const vt_names[]
possible values for parsing functions
Definition scripts.cpp:310
const char *const blend_names[]
Definition scripts.cpp:345
const char *const name_strings[NAME_NUM_TYPES]
Definition scripts.cpp:2162
const char *const fade_names[]
Definition scripts.cpp:355
const char *const align_names[]
Definition scripts.cpp:340
const char *const style_names[]
Definition scripts.cpp:350
bool Com_ParseBoolean(const char *token)
Parses a boolean from a string.
Definition scripts.cpp:986
style_t
Definition scripts.h:124
@ STYLE_ROTATED
Definition scripts.h:126
@ STYLE_FACING
Definition scripts.h:125
@ STYLE_AXIS
Definition scripts.h:129
@ STYLE_CIRCLE
Definition scripts.h:130
@ STYLE_LAST
Definition scripts.h:132
@ STYLE_BEAM
Definition scripts.h:127
@ STYLE_LINE
Definition scripts.h:128
int Com_SetValue(void *base, const void *set, valueTypes_t type, int ofs, size_t size)
Definition scripts.cpp:1009
bool Com_ParseBlock(const char *name, const char **text, void *base, const value_t *values, memPool_t *mempool)
Definition scripts.cpp:1393
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
void Com_ParseScripts(bool onlyServer)
Definition scripts.cpp:3619
const char * Com_GetRandomMapAssemblyNameForCrashedCraft(const char *craftID)
Definition scripts.cpp:3285
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
const char * Com_UFOCrashedTypeToShortName(ufoType_t type)
Translate UFO type to short name when UFO is crashed.
Definition scripts.cpp:3351
align_t
We need this here for checking the boundaries from script values.
Definition scripts.h:89
@ ALIGN_CL_RSL
Definition scripts.h:102
@ ALIGN_CR
Definition scripts.h:95
@ ALIGN_LL_RSL
Definition scripts.h:105
@ ALIGN_CL
Definition scripts.h:93
@ ALIGN_LAST
Definition scripts.h:109
@ ALIGN_LR_RSL
Definition scripts.h:107
@ ALIGN_UC_RSL
Definition scripts.h:100
@ ALIGN_CC_RSL
Definition scripts.h:103
@ ALIGN_CC
Definition scripts.h:94
@ ALIGN_UR_RSL
Definition scripts.h:101
@ ALIGN_UL_RSL
Definition scripts.h:99
@ ALIGN_LC
Definition scripts.h:97
@ ALIGN_UL
Definition scripts.h:90
@ ALIGN_UC
Definition scripts.h:91
@ ALIGN_LR
Definition scripts.h:98
@ ALIGN_UR
Definition scripts.h:92
@ ALIGN_LC_RSL
Definition scripts.h:106
@ ALIGN_LL
Definition scripts.h:96
@ ALIGN_CR_RSL
Definition scripts.h:104
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
T & Com_GetValue(void *const object, value_t const *const value)
Definition scripts.h:174
valueTypes_t
possible values for parsing functions
Definition scripts.h:48
@ V_BOOL
Definition scripts.h:50
@ V_UFOCRASHED
Definition scripts.h:76
@ V_FLOAT
Definition scripts.h:54
@ V_AIRCRAFTTYPE
Definition scripts.h:77
@ V_CHAR
Definition scripts.h:51
@ V_SHAPE_BIG
Definition scripts.h:66
@ V_LONGSTRING
Definition scripts.h:60
@ V_RELABS
Definition scripts.h:68
@ V_TRANSLATION_STRING
Definition scripts.h:59
@ V_UFO
Valid ufo types.
Definition scripts.h:71
@ V_HUNK_STRING
Definition scripts.h:69
@ V_STYLE
Definition scripts.h:63
@ V_BLEND
Definition scripts.h:62
@ V_NULL
Definition scripts.h:49
@ V_LIST
Definition scripts.h:78
@ V_ENSURE32BIT
Definition scripts.h:81
@ V_STRING
Definition scripts.h:58
@ V_FADE
Definition scripts.h:64
@ V_TEAM
Definition scripts.h:70
@ V_INT2
Definition scripts.h:53
@ V_ALIGN
Definition scripts.h:61
@ V_DAMAGE
Definition scripts.h:67
@ V_INT
Definition scripts.h:52
@ V_VECTOR
Definition scripts.h:56
@ V_COLOR
Definition scripts.h:57
@ V_SHAPE_SMALL
Definition scripts.h:65
@ V_NUM_TYPES
Definition scripts.h:80
@ V_POS
Definition scripts.h:55
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
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 * 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
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
const char * Com_GetLastParseError(void)
Definition scripts.cpp:428
bool Com_UnregisterConstList(const constListEntry_t constList[])
Unregisters a list of string aliases.
Definition scripts.cpp:237
int Com_GetScriptChecksum(void)
Definition scripts.cpp:3717
bool Com_UnregisterConstVariable(const char *name)
Removes a registered constant from the script mapping hash table.
Definition scripts.cpp:147
resultStatus_t
Definition scripts.h:184
@ RESULT_ERROR
Definition scripts.h:185
@ RESULT_OK
Definition scripts.h:187
@ RESULT_WARNING
Definition scripts.h:186
short Com_GetHumanAircraftIdsNum(void)
Definition scripts.cpp:581
short Com_GetDropShipIdsNum(void)
Definition scripts.cpp:576
ufoType_t Com_UFOShortNameToID(const char *token)
Translate short name to UFO type.
Definition scripts.cpp:3329
bool Com_GetCharacterModel(character_t *chr)
Definition scripts.cpp:2358
const terrainType_t * Com_GetTerrainType(const char *textureName)
Searches the terrain definition if given.
Definition scripts.cpp:3067
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
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
const char *const longlines_names[]
short Com_GetUfoIdsNum(void)
Definition scripts.cpp:571
void Com_GetCharacterValues(const char *teamDefition, character_t *chr)
Assign character values, 3D models and names to a character.
Definition scripts.cpp:2408
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
blend_t
Definition scripts.h:113
@ BLEND_BLEND
Definition scripts.h:116
@ BLEND_INVFILTER
Definition scripts.h:119
@ BLEND_FILTER
Definition scripts.h:118
@ BLEND_REPLACE
Definition scripts.h:114
@ BLEND_ONE
Definition scripts.h:115
@ BLEND_LAST
Definition scripts.h:121
@ BLEND_ADD
Definition scripts.h:117
void Com_Shutdown(void)
Definition scripts.cpp:3732
humanAircraftType_t Com_DropShipShortNameToID(const char *token)
Translate DropShip type to short name.
Definition scripts.cpp:3307
bool Com_ParseList(const char **text, linkedList_t **list)
Definition scripts.cpp:1363
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
const char * Com_ValueToStr(const void *base, const valueTypes_t type, const int ofs)
Definition scripts.cpp:1171
const char * Com_UFOTypeToShortName(ufoType_t type)
Translate UFO type to short name.
Definition scripts.cpp:3342
const char * Com_DropShipTypeToShortName(humanAircraftType_t type)
Translate DropShip type to short name.
Definition scripts.cpp:3319
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
fade_t
Definition scripts.h:135
@ FADE_IN
Definition scripts.h:137
@ FADE_SAW
Definition scripts.h:140
@ FADE_SIN
Definition scripts.h:139
@ FADE_OUT
Definition scripts.h:138
@ FADE_LAST
Definition scripts.h:142
@ FADE_NONE
Definition scripts.h:136
short ufoType_t
Definition scripts.h:145
void Com_RegisterConstList(const constListEntry_t constList[])
Registers a list of string aliases.
Definition scripts.cpp:253
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
int Com_EParseValue(void *base, const char *token, valueTypes_t type, int ofs, size_t size)
Definition scripts.cpp:964
Describes a character with all its attributes.
Definition chr_shared.h:388
list of script aliases to register
Definition scripts.h:231
int value
Definition scripts.h:233
const char * name
Definition scripts.h:232
Different terrain definitions for footsteps and particles.
Definition scripts.h:215
const char * footstepSound
Definition scripts.h:217
float footstepVolume
Definition scripts.h:220
const char * particle
Definition scripts.h:218
float bounceFraction
Definition scripts.h:219
struct terrainType_s * hash_next
Definition scripts.h:221
const char * texture
Definition scripts.h:216
Defines a type of UGV/Robot.
Definition chr_shared.h:245
size_t ofs
Definition scripts.h:170
const char * string
Definition scripts.h:168
size_t size
Definition scripts.h:171
valueTypes_t type
Definition scripts.h:169