UFO: Alien Invasion
Toggle main menu visibility
Loading...
Searching...
No Matches
g_local.h
Go to the documentation of this file.
1
5
6
/*
7
All original material Copyright (C) 2002-2025 UFO: Alien Invasion.
8
9
Original file from Quake 2 v3.21: quake2-2.31/game/g_local.h
10
Copyright (C) 1997-2001 Id Software, Inc.
11
12
This program is free software; you can redistribute it and/or
13
modify it under the terms of the GNU General Public License
14
as published by the Free Software Foundation; either version 2
15
of the License, or (at your option) any later version.
16
17
This program is distributed in the hope that it will be useful,
18
but WITHOUT ANY WARRANTY; without even the implied warranty of
19
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20
21
See the GNU General Public License for more details.
22
23
You should have received a copy of the GNU General Public License
24
along with this program; if not, write to the Free Software
25
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26
27
*/
28
29
#pragma once
30
31
#include "
q_shared.h
"
32
#include "
inventory.h
"
/* for InventoryInterface in game_locals_t */
33
#include "
../shared/infostring.h
"
34
extern
"C"
{
35
#include <lua.h>
36
}
37
39
#define _(String) String
40
#define ngettext(x, y, cnt) x
41
45
#define GAME_INCLUDE
46
#include "
game.h
"
47
49
#define GAMEVERSION "baseufo"
50
51
#define MAX_SPOT_DIST_CAMERA 768
52
#define MAX_SPOT_DIST 4096
53
55
#define SERVER_FRAME_SECONDS 0.1
56
58
#define TAG_GAME 765
/* clear when unloading the game library */
59
#define TAG_LEVEL 766
/* clear when loading a new level */
60
61
#define INVDEF(containerID) (&gi.csi->ids[(containerID)])
62
63
#define G_FreeTags(tag) gi.FreeTags((tag), __FILE__, __LINE__)
64
#define G_TagMalloc(size, tag) gi.TagMalloc((size), (tag), __FILE__, __LINE__)
65
#define G_MemFree(ptr) gi.TagFree((ptr), __FILE__, __LINE__)
66
69
typedef
struct
game_locals_s {
70
Player*
players
;
/* [maxplayers] */
71
72
/* store latched cvars here that we want to get at often */
73
int
sv_maxplayersperteam
;
74
int
sv_maxentities
;
75
76
InventoryInterface
invi
;
77
}
game_locals_t
;
78
80
typedef
struct
level_locals_s {
81
int
framenum
;
82
float
time
;
84
85
char
mapname
[
MAX_QPATH
];
86
char
*
mapEndCommand
;
87
bool
routed
;
88
bool
day
;
89
bool
hurtAliens
;
90
bool
nextMapSwitch
;
91
92
/* intermission state */
93
float
intermissionTime
;
96
int
winningTeam
;
97
float
roundstartTime
;
98
99
/* turn statistics */
100
int
numplayers
;
101
int
activeTeam
;
102
int
teamOfs
;
103
int
nextEndRound
;
104
int
actualRound
;
105
106
pathing_t
*
pathingMap
;
107
108
int
noRandomSpawn
;
109
int
noEquipment
;
110
111
int
initialAlienActorsSpawned
;
112
unsigned
num_spawned
[
MAX_TEAMS
];
113
unsigned
num_kills
[
MAX_TEAMS
+ 1][
MAX_TEAMS
];
114
unsigned
num_stuns
[
MAX_TEAMS
+ 1][
MAX_TEAMS
];
115
byte
num_alive
[
MAX_TEAMS
];
116
byte
num_spawnpoints
[
MAX_TEAMS
];
117
byte
num_2x2spawnpoints
[
MAX_TEAMS
];
118
Edict
*
ai_waypointList
;
119
}
level_locals_t
;
120
121
122
extern
game_locals_t
game
;
123
extern
level_locals_t
level
;
124
extern
game_import_t
gi
;
125
extern
game_export_t
globals
;
126
127
#define G_IsActor(ent) ((ent)->type == ET_ACTOR || (ent)->type == ET_ACTOR2x2)
128
#define G_IsActive(ent) ((ent)->active)
129
#define G_IsCamera(ent) ((ent)->type == ET_CAMERA)
130
#define G_IsActiveCamera(ent) (G_IsCamera(ent) && G_IsActive(ent))
131
#define G_IsSmoke(ent) ((ent)->type == ET_SMOKE)
132
#define G_IsFire(ent) ((ent)->type == ET_FIRE)
133
#define G_IsTriggerNextMap(ent) ((ent)->type == ET_TRIGGER_NEXTMAP)
134
#define G_IsItem(ent) ((ent)->type == ET_ITEM)
135
#define G_IsDoor(ent) ((ent)->type == ET_DOOR || (ent)->type == ET_DOOR_SLIDING)
136
137
#define G_IsBreakable(ent) ((ent)->flags & FL_DESTROYABLE)
138
#define G_IsBrushModel(ent) ((ent)->type == ET_BREAKABLE || G_IsDoor(ent) || (ent)->type == ET_ROTATING)
140
#define G_IsVisibleOnBattlefield(ent) (G_IsActor((ent)) || G_IsItem(ent) || G_IsCamera(ent) || (ent)->type == ET_PARTICLE)
141
#define G_IsAI(ent) ((ent)->getPlayer().pers.ai)
142
#define G_IsAIPlayer(player) ((player)->pers.ai)
143
#define G_TeamToVisMask(team) (1 << (team))
144
#define G_IsVisibleForTeam(ent, team) ((ent)->visflags & G_TeamToVisMask(team))
145
#define G_IsMultiPlayer() (sv_maxclients->integer > 1)
146
#define G_IsSinglePlayer() (!G_IsMultiPlayer())
148
#define G_IsCivilian(ent) ((ent)->getTeam() == TEAM_CIVILIAN)
149
#define G_IsAlien(ent) ((ent)->getTeam() == TEAM_ALIEN)
150
#define G_IsBlockingMovementActor(ent) (((ent)->type == ET_ACTOR && !G_IsDead(ent)) || ent->type == ET_ACTOR2x2)
151
152
extern
cvar_t
*
sv_maxentities
;
153
extern
cvar_t
*
password
;
154
extern
cvar_t
*
sv_needpass
;
155
extern
cvar_t
*
sv_dedicated
;
156
extern
cvar_t
*
developer
;
157
158
extern
cvar_t
*
logstats
;
159
extern
FILE
*
logstatsfile
;
160
161
extern
cvar_t
*
sv_filterban
;
162
163
extern
cvar_t
*
sv_maxvelocity
;
164
165
extern
cvar_t
*
sv_maxclients
;
166
extern
cvar_t
*
sv_shot_origin
;
167
extern
cvar_t
*
sv_hurtaliens
;
168
extern
cvar_t
*
sv_maxplayersperteam
;
169
extern
cvar_t
*
sv_maxsoldiersperteam
;
170
extern
cvar_t
*
sv_maxsoldiersperplayer
;
171
extern
cvar_t
*
sv_enablemorale
;
172
extern
cvar_t
*
sv_roundtimelimit
;
173
174
extern
cvar_t
*
sv_maxteams
;
175
176
extern
cvar_t
*
sv_ai
;
177
extern
cvar_t
*
sv_teamplay
;
178
179
extern
cvar_t
*
ai_alienteam
;
180
extern
cvar_t
*
ai_civilianteam
;
181
extern
cvar_t
*
ai_equipment
;
182
extern
cvar_t
*
ai_singleplayeraliens
;
183
extern
cvar_t
*
ai_numcivilians
;
184
extern
cvar_t
*
ai_multiplayeraliens
;
185
186
extern
cvar_t
*
mob_death
;
187
extern
cvar_t
*
mob_wound
;
188
extern
cvar_t
*
mob_shoot
;
189
extern
cvar_t
*
mof_watching
;
190
extern
cvar_t
*
mof_teamkill
;
191
extern
cvar_t
*
mof_civilian
;
192
extern
cvar_t
*
mof_enemy
;
193
extern
cvar_t
*
mor_pain
;
194
195
/*everyone gets this times morale damage */
196
extern
cvar_t
*
mor_default
;
197
198
/* at this distance the following two get halfed (exponential scale) */
199
extern
cvar_t
*
mor_distance
;
200
201
/* at this distance the following two get halfed (exponential scale) */
202
extern
cvar_t
*
mor_victim
;
203
204
/* at this distance the following two get halfed (exponential scale) */
205
extern
cvar_t
*
mor_attacker
;
206
207
/* how much the morale depends on the size of the damaged team */
208
extern
cvar_t
*
mon_teamfactor
;
209
210
extern
cvar_t
*
mor_regeneration
;
211
extern
cvar_t
*
mor_shaken
;
212
extern
cvar_t
*
mor_panic
;
213
extern
cvar_t
*
mor_brave
;
214
215
extern
cvar_t
*
m_sanity
;
216
extern
cvar_t
*
m_rage
;
217
extern
cvar_t
*
m_rage_stop
;
218
extern
cvar_t
*
m_panic_stop
;
219
220
extern
cvar_t
*
g_endlessaliens
;
221
extern
cvar_t
*
g_ailua
;
222
extern
cvar_t
*
g_aihumans
;
223
extern
cvar_t
*
g_aidebug
;
224
extern
cvar_t
*
g_drawtraces
;
225
extern
cvar_t
*
g_nodamage
;
226
extern
cvar_t
*
g_notu
;
227
extern
cvar_t
*
g_nospawn
;
228
extern
cvar_t
*
g_actorspeed
;
229
extern
cvar_t
*
g_lastseen
;
230
231
extern
cvar_t
*
flood_msgs
;
232
extern
cvar_t
*
flood_persecond
;
233
extern
cvar_t
*
flood_waitdelay
;
234
235
extern
cvar_t
*
g_difficulty
;
236
237
/* g_camera */
238
void
G_InitCamera
(
Edict
* ent,
camera_type_t
cameraType,
float
angle,
bool
rotate);
239
240
/* g_cmds.c */
241
void
G_ClientCommand
(Player& player);
242
#ifdef DEBUG
243
void
G_InvList_f(
const
Player& player);
244
#endif
245
246
/* g_morale */
247
void
G_MoraleBehaviour
(
int
team);
248
#define MORALE_RANDOM( mod ) ( (mod) * (1.0 + 0.3*crand()) )
249
250
/* g_round */
251
void
G_CheckForceEndRound
(
void
);
252
void
G_ClientEndRound
(Player& player);
253
254
/* g_stats */
255
void
G_SendStats
(
Edict
& ent);
256
void
G_SendPlayerStats
(
const
Player& player);
257
258
/* g_svcmds.c */
259
void
G_ServerCommand
(
void
);
260
bool
SV_FilterPacket
(
const
char
* from);
261
262
#include "
g_events.h
"
263
264
/*============================================================================ */
265
267
typedef
enum
{
268
MAT_GLASS
,
/* default */
269
MAT_METAL
,
270
MAT_ELECTRICAL
,
271
MAT_WOOD
,
272
273
MAT_MAX
274
}
edictMaterial_t
;
275
277
typedef
struct
moveinfo_s
{
278
byte
steps
;
279
280
inline
moveinfo_s
() :
steps
(0) {}
281
}
moveinfo_t
;
282
289
#define FL_DESTROYABLE 0x00000004
294
#define FL_GROUPSLAVE 0x00000008
298
#define FL_CLIENTACTION 0x00000010
302
#define FL_TRIGGERED 0x00000100
303
305
typedef
struct
AI_s
{
306
char
type
[
MAX_QPATH
];
307
char
subtype
[
MAX_VAR
];
308
309
inline
AI_s
()
310
{
311
OBJZERO
(
type
);
312
OBJZERO
(
subtype
);
313
}
314
}
AI_t
;
315
316
typedef
struct
camera_edict_data_s
{
317
camera_type_t
cameraType
;
318
bool
rotate
;
319
320
inline
camera_edict_data_s
() :
cameraType
(
CAMERA_MOBILE
),
rotate
(false) {}
321
}
camera_edict_data_t
;
322
323
#include "
g_edict.h
"
Edict
Definition
g_edict.h:45
InventoryInterface
Definition
inventory.h:41
sv_dedicated
cvar_t * sv_dedicated
Definition
common.cpp:51
developer
cvar_t * developer
Definition
common.cpp:46
sv_maxclients
cvar_t * sv_maxclients
Definition
g_main.cpp:43
MAX_TEAMS
#define MAX_TEAMS
Definition
defines.h:98
MAX_QPATH
#define MAX_QPATH
Definition
filesys.h:40
g_edict.h
Local definitions for game module.
g_events.h
Event related headers.
mor_pain
cvar_t * mor_pain
Definition
g_main.cpp:84
m_panic_stop
cvar_t * m_panic_stop
Definition
g_main.cpp:109
flood_msgs
cvar_t * flood_msgs
Definition
g_main.cpp:121
mor_attacker
cvar_t * mor_attacker
Definition
g_main.cpp:96
ai_singleplayeraliens
cvar_t * ai_singleplayeraliens
Definition
g_main.cpp:72
flood_persecond
cvar_t * flood_persecond
Definition
g_main.cpp:122
g_lastseen
cvar_t * g_lastseen
Definition
g_main.cpp:120
mor_shaken
cvar_t * mor_shaken
Definition
g_main.cpp:102
sv_hurtaliens
cvar_t * sv_hurtaliens
Definition
g_main.cpp:62
game
game_locals_t game
Definition
g_main.cpp:37
sv_shot_origin
cvar_t * sv_shot_origin
Definition
g_main.cpp:63
level
level_locals_t level
Definition
g_main.cpp:38
G_ClientCommand
void G_ClientCommand(Player &player)
Definition
g_cmds.cpp:423
mor_panic
cvar_t * mor_panic
Definition
g_main.cpp:103
sv_needpass
cvar_t * sv_needpass
Definition
g_main.cpp:51
ai_numcivilians
cvar_t * ai_numcivilians
Definition
g_main.cpp:73
mob_shoot
cvar_t * mob_shoot
Definition
g_main.cpp:79
g_aidebug
cvar_t * g_aidebug
Definition
g_main.cpp:114
ai_equipment
cvar_t * ai_equipment
Definition
g_main.cpp:71
sv_teamplay
cvar_t * sv_teamplay
Definition
g_main.cpp:61
g_notu
cvar_t * g_notu
Definition
g_main.cpp:117
mor_default
cvar_t * mor_default
Definition
g_main.cpp:87
ai_civilianteam
cvar_t * ai_civilianteam
Definition
g_main.cpp:70
sv_maxplayersperteam
cvar_t * sv_maxplayersperteam
Definition
g_main.cpp:52
mof_enemy
cvar_t * mof_enemy
Definition
g_main.cpp:83
m_rage
cvar_t * m_rage
Definition
g_main.cpp:107
mon_teamfactor
cvar_t * mon_teamfactor
Definition
g_main.cpp:99
SV_FilterPacket
bool SV_FilterPacket(const char *from)
Definition
g_svcmds.cpp:104
sv_maxentities
cvar_t * sv_maxentities
Definition
g_main.cpp:57
sv_filterban
cvar_t * sv_filterban
Definition
g_main.cpp:58
m_sanity
cvar_t * m_sanity
Definition
g_main.cpp:106
G_SendStats
void G_SendStats(Edict &ent)
Send stats to network buffer.
Definition
g_stats.cpp:34
gi
game_import_t gi
Definition
g_main.cpp:39
G_ServerCommand
void G_ServerCommand(void)
ServerCommand will be called when an "sv" command is issued. The game can issue gi....
Definition
g_svcmds.cpp:337
mor_distance
cvar_t * mor_distance
Definition
g_main.cpp:90
g_aihumans
cvar_t * g_aihumans
Definition
g_main.cpp:113
mor_brave
cvar_t * mor_brave
Definition
g_main.cpp:104
logstatsfile
FILE * logstatsfile
Definition
g_main.cpp:49
G_MoraleBehaviour
void G_MoraleBehaviour(int team)
Applies morale behaviour on actors.
Definition
g_morale.cpp:156
mor_victim
cvar_t * mor_victim
Definition
g_main.cpp:93
sv_enablemorale
cvar_t * sv_enablemorale
Definition
g_main.cpp:55
ai_alienteam
cvar_t * ai_alienteam
Definition
g_main.cpp:69
G_ClientEndRound
void G_ClientEndRound(Player &player)
Definition
g_round.cpp:184
sv_maxsoldiersperplayer
cvar_t * sv_maxsoldiersperplayer
Definition
g_main.cpp:54
g_endlessaliens
cvar_t * g_endlessaliens
Definition
g_main.cpp:111
G_InitCamera
void G_InitCamera(Edict *ent, camera_type_t cameraType, float angle, bool rotate)
Definition
g_camera.cpp:50
m_rage_stop
cvar_t * m_rage_stop
Definition
g_main.cpp:108
mof_teamkill
cvar_t * mof_teamkill
Definition
g_main.cpp:81
globals
game_export_t globals
Definition
g_main.cpp:40
ai_multiplayeraliens
cvar_t * ai_multiplayeraliens
Definition
g_main.cpp:74
mof_civilian
cvar_t * mof_civilian
Definition
g_main.cpp:82
sv_roundtimelimit
cvar_t * sv_roundtimelimit
Definition
g_main.cpp:56
g_nospawn
cvar_t * g_nospawn
Definition
g_main.cpp:118
flood_waitdelay
cvar_t * flood_waitdelay
Definition
g_main.cpp:123
logstats
cvar_t * logstats
Definition
g_main.cpp:48
sv_ai
cvar_t * sv_ai
Definition
g_main.cpp:60
g_ailua
cvar_t * g_ailua
Definition
g_main.cpp:112
g_difficulty
cvar_t * g_difficulty
Definition
g_main.cpp:125
mob_wound
cvar_t * mob_wound
Definition
g_main.cpp:78
mof_watching
cvar_t * mof_watching
Definition
g_main.cpp:80
edictMaterial_t
edictMaterial_t
e.g. used for breakable objects
Definition
g_local.h:267
MAT_WOOD
@ MAT_WOOD
Definition
g_local.h:271
MAT_METAL
@ MAT_METAL
Definition
g_local.h:269
MAT_GLASS
@ MAT_GLASS
Definition
g_local.h:268
MAT_ELECTRICAL
@ MAT_ELECTRICAL
Definition
g_local.h:270
MAT_MAX
@ MAT_MAX
Definition
g_local.h:273
sv_maxsoldiersperteam
cvar_t * sv_maxsoldiersperteam
Definition
g_main.cpp:53
g_drawtraces
cvar_t * g_drawtraces
Definition
g_main.cpp:115
g_nodamage
cvar_t * g_nodamage
Definition
g_main.cpp:116
sv_maxvelocity
cvar_t * sv_maxvelocity
password
cvar_t * password
Definition
g_main.cpp:67
G_SendPlayerStats
void G_SendPlayerStats(const Player &player)
Write player stats to network buffer.
Definition
g_stats.cpp:49
mor_regeneration
cvar_t * mor_regeneration
Definition
g_main.cpp:101
g_actorspeed
cvar_t * g_actorspeed
Definition
g_main.cpp:119
mob_death
cvar_t * mob_death
Definition
g_main.cpp:77
sv_maxteams
cvar_t * sv_maxteams
Definition
g_main.cpp:59
G_CheckForceEndRound
void G_CheckForceEndRound(void)
Check whether a forced turn end should be executed.
Definition
g_round.cpp:39
game.h
Interface to game library.
infostring.h
Info string handling.
inventory.h
q_shared.h
Common header file.
camera_type_t
camera_type_t
Definition
q_shared.h:178
CAMERA_MOBILE
@ CAMERA_MOBILE
Definition
q_shared.h:179
OBJZERO
#define OBJZERO(obj)
Definition
shared.h:178
MAX_VAR
#define MAX_VAR
Definition
shared.h:36
AI_t
Artificial intelligence of a character.
Definition
g_local.h:305
AI_t::AI_s
AI_s()
Definition
g_local.h:309
AI_t::type
char type[MAX_QPATH]
Definition
g_local.h:306
AI_t::subtype
char subtype[MAX_VAR]
Definition
g_local.h:307
camera_edict_data_t
Definition
g_local.h:316
camera_edict_data_t::camera_edict_data_s
camera_edict_data_s()
Definition
g_local.h:320
camera_edict_data_t::rotate
bool rotate
Definition
g_local.h:318
camera_edict_data_t::cameraType
camera_type_t cameraType
Definition
g_local.h:317
cvar_t
This is a cvar definition. Cvars can be user modified and used in our menus e.g.
Definition
cvar.h:71
game_export_t
functions exported by the game subsystem
Definition
game.h:317
game_import_t
functions provided by the main engine
Definition
game.h:173
game_locals_t
this structure is left intact through an entire game it should be initialized at game library load ti...
Definition
g_local.h:69
game_locals_t::sv_maxplayersperteam
int sv_maxplayersperteam
Definition
g_local.h:73
game_locals_t::invi
InventoryInterface invi
Definition
g_local.h:76
game_locals_t::players
Player * players
Definition
g_local.h:70
game_locals_t::sv_maxentities
int sv_maxentities
Definition
g_local.h:74
level_locals_t
this structure is cleared as each map is entered
Definition
g_local.h:80
level_locals_t::num_stuns
unsigned num_stuns[MAX_TEAMS+1][MAX_TEAMS]
Definition
g_local.h:114
level_locals_t::num_kills
unsigned num_kills[MAX_TEAMS+1][MAX_TEAMS]
Definition
g_local.h:113
level_locals_t::nextMapSwitch
bool nextMapSwitch
Definition
g_local.h:90
level_locals_t::pathingMap
pathing_t * pathingMap
Definition
g_local.h:106
level_locals_t::teamOfs
int teamOfs
Definition
g_local.h:102
level_locals_t::day
bool day
Definition
g_local.h:88
level_locals_t::activeTeam
int activeTeam
Definition
g_local.h:101
level_locals_t::framenum
int framenum
Definition
g_local.h:81
level_locals_t::hurtAliens
bool hurtAliens
Definition
g_local.h:89
level_locals_t::num_2x2spawnpoints
byte num_2x2spawnpoints[MAX_TEAMS]
Definition
g_local.h:117
level_locals_t::routed
bool routed
Definition
g_local.h:87
level_locals_t::num_spawned
unsigned num_spawned[MAX_TEAMS]
Definition
g_local.h:112
level_locals_t::time
float time
Definition
g_local.h:82
level_locals_t::mapname
char mapname[MAX_QPATH]
Definition
g_local.h:85
level_locals_t::actualRound
int actualRound
Definition
g_local.h:104
level_locals_t::initialAlienActorsSpawned
int initialAlienActorsSpawned
Definition
g_local.h:111
level_locals_t::mapEndCommand
char * mapEndCommand
Definition
g_local.h:86
level_locals_t::ai_waypointList
Edict * ai_waypointList
Definition
g_local.h:118
level_locals_t::roundstartTime
float roundstartTime
Definition
g_local.h:97
level_locals_t::numplayers
int numplayers
Definition
g_local.h:100
level_locals_t::noRandomSpawn
int noRandomSpawn
Definition
g_local.h:108
level_locals_t::winningTeam
int winningTeam
Definition
g_local.h:96
level_locals_t::intermissionTime
float intermissionTime
Definition
g_local.h:93
level_locals_t::noEquipment
int noEquipment
Definition
g_local.h:109
level_locals_t::nextEndRound
int nextEndRound
Definition
g_local.h:103
level_locals_t::num_alive
byte num_alive[MAX_TEAMS]
Definition
g_local.h:115
level_locals_t::num_spawnpoints
byte num_spawnpoints[MAX_TEAMS]
Definition
g_local.h:116
moveinfo_t
actor movement
Definition
g_local.h:277
moveinfo_t::moveinfo_s
moveinfo_s()
Definition
g_local.h:280
moveinfo_t::steps
byte steps
Definition
g_local.h:278
pathing_t
Definition
grid.h:83
FILE
#define FILE
Definition
test_webapi.cpp:30
src
game
g_local.h
Generated on __DATE__ __TIME__ for UFO: Alien Invasion by
1.17.0