UFO: Alien Invasion
Loading...
Searching...
No Matches
g_local.h
Go to the documentation of this file.
1
5
6/*
7All original material Copyright (C) 2002-2025 UFO: Alien Invasion.
8
9Original file from Quake 2 v3.21: quake2-2.31/game/g_local.h
10Copyright (C) 1997-2001 Id Software, Inc.
11
12This program is free software; you can redistribute it and/or
13modify it under the terms of the GNU General Public License
14as published by the Free Software Foundation; either version 2
15of the License, or (at your option) any later version.
16
17This program is distributed in the hope that it will be useful,
18but WITHOUT ANY WARRANTY; without even the implied warranty of
19MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20
21See the GNU General Public License for more details.
22
23You should have received a copy of the GNU General Public License
24along with this program; if not, write to the Free Software
25Foundation, 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 */
34extern "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
69typedef struct game_locals_s {
70 Player* players; /* [maxplayers] */
71
72 /* store latched cvars here that we want to get at often */
75
78
120
121
122extern game_locals_t game;
123extern level_locals_t level;
124extern game_import_t gi;
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
152extern cvar_t* sv_maxentities;
153extern cvar_t* password;
154extern cvar_t* sv_needpass;
155extern cvar_t* sv_dedicated;
156extern cvar_t* developer;
157
158extern cvar_t* logstats;
159extern FILE* logstatsfile;
160
161extern cvar_t* sv_filterban;
162
163extern cvar_t* sv_maxvelocity;
164
165extern cvar_t* sv_maxclients;
166extern cvar_t* sv_shot_origin;
167extern cvar_t* sv_hurtaliens;
171extern cvar_t* sv_enablemorale;
173
174extern cvar_t* sv_maxteams;
175
176extern cvar_t* sv_ai;
177extern cvar_t* sv_teamplay;
178
179extern cvar_t* ai_alienteam;
180extern cvar_t* ai_civilianteam;
181extern cvar_t* ai_equipment;
183extern cvar_t* ai_numcivilians;
185
186extern cvar_t* mob_death;
187extern cvar_t* mob_wound;
188extern cvar_t* mob_shoot;
189extern cvar_t* mof_watching;
190extern cvar_t* mof_teamkill;
191extern cvar_t* mof_civilian;
192extern cvar_t* mof_enemy;
193extern cvar_t* mor_pain;
194
195/*everyone gets this times morale damage */
196extern cvar_t* mor_default;
197
198/* at this distance the following two get halfed (exponential scale) */
199extern cvar_t* mor_distance;
200
201/* at this distance the following two get halfed (exponential scale) */
202extern cvar_t* mor_victim;
203
204/* at this distance the following two get halfed (exponential scale) */
205extern cvar_t* mor_attacker;
206
207/* how much the morale depends on the size of the damaged team */
208extern cvar_t* mon_teamfactor;
209
211extern cvar_t* mor_shaken;
212extern cvar_t* mor_panic;
213extern cvar_t* mor_brave;
214
215extern cvar_t* m_sanity;
216extern cvar_t* m_rage;
217extern cvar_t* m_rage_stop;
218extern cvar_t* m_panic_stop;
219
220extern cvar_t* g_endlessaliens;
221extern cvar_t* g_ailua;
222extern cvar_t* g_aihumans;
223extern cvar_t* g_aidebug;
224extern cvar_t* g_drawtraces;
225extern cvar_t* g_nodamage;
226extern cvar_t* g_notu;
227extern cvar_t* g_nospawn;
228extern cvar_t* g_actorspeed;
229extern cvar_t* g_lastseen;
230
231extern cvar_t* flood_msgs;
232extern cvar_t* flood_persecond;
233extern cvar_t* flood_waitdelay;
234
235extern cvar_t* g_difficulty;
236
237/* g_camera */
238void G_InitCamera(Edict* ent, camera_type_t cameraType, float angle, bool rotate);
239
240/* g_cmds.c */
241void G_ClientCommand(Player& player);
242#ifdef DEBUG
243void G_InvList_f(const Player& player);
244#endif
245
246/* g_morale */
247void G_MoraleBehaviour(int team);
248#define MORALE_RANDOM( mod ) ( (mod) * (1.0 + 0.3*crand()) )
249
250/* g_round */
251void G_CheckForceEndRound(void);
252void G_ClientEndRound(Player& player);
253
254/* g_stats */
255void G_SendStats(Edict& ent);
256void G_SendPlayerStats(const Player& player);
257
258/* g_svcmds.c */
259void G_ServerCommand(void);
260bool SV_FilterPacket(const char* from);
261
262#include "g_events.h"
263
264/*============================================================================ */
265
275
277typedef 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
305typedef struct AI_s {
308
309 inline AI_s ()
310 {
311 OBJZERO(type);
313 }
314} AI_t;
315
322
323#include "g_edict.h"
cvar_t * sv_dedicated
Definition common.cpp:51
cvar_t * developer
Definition common.cpp:46
cvar_t * sv_maxclients
Definition g_main.cpp:43
#define MAX_TEAMS
Definition defines.h:98
#define MAX_QPATH
Definition filesys.h:40
Local definitions for game module.
Event related headers.
cvar_t * mor_pain
Definition g_main.cpp:84
cvar_t * m_panic_stop
Definition g_main.cpp:109
cvar_t * flood_msgs
Definition g_main.cpp:121
cvar_t * mor_attacker
Definition g_main.cpp:96
cvar_t * ai_singleplayeraliens
Definition g_main.cpp:72
cvar_t * flood_persecond
Definition g_main.cpp:122
cvar_t * g_lastseen
Definition g_main.cpp:120
cvar_t * mor_shaken
Definition g_main.cpp:102
cvar_t * sv_hurtaliens
Definition g_main.cpp:62
game_locals_t game
Definition g_main.cpp:37
cvar_t * sv_shot_origin
Definition g_main.cpp:63
level_locals_t level
Definition g_main.cpp:38
void G_ClientCommand(Player &player)
Definition g_cmds.cpp:423
cvar_t * mor_panic
Definition g_main.cpp:103
cvar_t * sv_needpass
Definition g_main.cpp:51
cvar_t * ai_numcivilians
Definition g_main.cpp:73
cvar_t * mob_shoot
Definition g_main.cpp:79
cvar_t * g_aidebug
Definition g_main.cpp:114
cvar_t * ai_equipment
Definition g_main.cpp:71
cvar_t * sv_teamplay
Definition g_main.cpp:61
cvar_t * g_notu
Definition g_main.cpp:117
cvar_t * mor_default
Definition g_main.cpp:87
cvar_t * ai_civilianteam
Definition g_main.cpp:70
cvar_t * sv_maxplayersperteam
Definition g_main.cpp:52
cvar_t * mof_enemy
Definition g_main.cpp:83
cvar_t * m_rage
Definition g_main.cpp:107
cvar_t * mon_teamfactor
Definition g_main.cpp:99
bool SV_FilterPacket(const char *from)
Definition g_svcmds.cpp:104
cvar_t * sv_maxentities
Definition g_main.cpp:57
cvar_t * sv_filterban
Definition g_main.cpp:58
cvar_t * m_sanity
Definition g_main.cpp:106
void G_SendStats(Edict &ent)
Send stats to network buffer.
Definition g_stats.cpp:34
game_import_t gi
Definition g_main.cpp:39
void G_ServerCommand(void)
ServerCommand will be called when an "sv" command is issued. The game can issue gi....
Definition g_svcmds.cpp:337
cvar_t * mor_distance
Definition g_main.cpp:90
cvar_t * g_aihumans
Definition g_main.cpp:113
cvar_t * mor_brave
Definition g_main.cpp:104
FILE * logstatsfile
Definition g_main.cpp:49
void G_MoraleBehaviour(int team)
Applies morale behaviour on actors.
Definition g_morale.cpp:156
cvar_t * mor_victim
Definition g_main.cpp:93
cvar_t * sv_enablemorale
Definition g_main.cpp:55
cvar_t * ai_alienteam
Definition g_main.cpp:69
void G_ClientEndRound(Player &player)
Definition g_round.cpp:184
cvar_t * sv_maxsoldiersperplayer
Definition g_main.cpp:54
cvar_t * g_endlessaliens
Definition g_main.cpp:111
void G_InitCamera(Edict *ent, camera_type_t cameraType, float angle, bool rotate)
Definition g_camera.cpp:50
cvar_t * m_rage_stop
Definition g_main.cpp:108
cvar_t * mof_teamkill
Definition g_main.cpp:81
game_export_t globals
Definition g_main.cpp:40
cvar_t * ai_multiplayeraliens
Definition g_main.cpp:74
cvar_t * mof_civilian
Definition g_main.cpp:82
cvar_t * sv_roundtimelimit
Definition g_main.cpp:56
cvar_t * g_nospawn
Definition g_main.cpp:118
cvar_t * flood_waitdelay
Definition g_main.cpp:123
cvar_t * logstats
Definition g_main.cpp:48
cvar_t * sv_ai
Definition g_main.cpp:60
cvar_t * g_ailua
Definition g_main.cpp:112
cvar_t * g_difficulty
Definition g_main.cpp:125
cvar_t * mob_wound
Definition g_main.cpp:78
cvar_t * mof_watching
Definition g_main.cpp:80
edictMaterial_t
e.g. used for breakable objects
Definition g_local.h:267
@ MAT_WOOD
Definition g_local.h:271
@ MAT_METAL
Definition g_local.h:269
@ MAT_GLASS
Definition g_local.h:268
@ MAT_ELECTRICAL
Definition g_local.h:270
@ MAT_MAX
Definition g_local.h:273
cvar_t * sv_maxsoldiersperteam
Definition g_main.cpp:53
cvar_t * g_drawtraces
Definition g_main.cpp:115
cvar_t * g_nodamage
Definition g_main.cpp:116
cvar_t * sv_maxvelocity
cvar_t * password
Definition g_main.cpp:67
void G_SendPlayerStats(const Player &player)
Write player stats to network buffer.
Definition g_stats.cpp:49
cvar_t * mor_regeneration
Definition g_main.cpp:101
cvar_t * g_actorspeed
Definition g_main.cpp:119
cvar_t * mob_death
Definition g_main.cpp:77
cvar_t * sv_maxteams
Definition g_main.cpp:59
void G_CheckForceEndRound(void)
Check whether a forced turn end should be executed.
Definition g_round.cpp:39
Interface to game library.
Info string handling.
Common header file.
camera_type_t
Definition q_shared.h:178
@ CAMERA_MOBILE
Definition q_shared.h:179
#define OBJZERO(obj)
Definition shared.h:178
#define MAX_VAR
Definition shared.h:36
Artificial intelligence of a character.
Definition g_local.h:305
AI_s()
Definition g_local.h:309
char type[MAX_QPATH]
Definition g_local.h:306
char subtype[MAX_VAR]
Definition g_local.h:307
camera_type_t cameraType
Definition g_local.h:317
This is a cvar definition. Cvars can be user modified and used in our menus e.g.
Definition cvar.h:71
functions exported by the game subsystem
Definition game.h:317
functions provided by the main engine
Definition game.h:173
this structure is left intact through an entire game it should be initialized at game library load ti...
Definition g_local.h:69
int sv_maxplayersperteam
Definition g_local.h:73
InventoryInterface invi
Definition g_local.h:76
Player * players
Definition g_local.h:70
int sv_maxentities
Definition g_local.h:74
this structure is cleared as each map is entered
Definition g_local.h:80
unsigned num_stuns[MAX_TEAMS+1][MAX_TEAMS]
Definition g_local.h:114
unsigned num_kills[MAX_TEAMS+1][MAX_TEAMS]
Definition g_local.h:113
bool nextMapSwitch
Definition g_local.h:90
pathing_t * pathingMap
Definition g_local.h:106
bool hurtAliens
Definition g_local.h:89
byte num_2x2spawnpoints[MAX_TEAMS]
Definition g_local.h:117
unsigned num_spawned[MAX_TEAMS]
Definition g_local.h:112
char mapname[MAX_QPATH]
Definition g_local.h:85
int initialAlienActorsSpawned
Definition g_local.h:111
char * mapEndCommand
Definition g_local.h:86
Edict * ai_waypointList
Definition g_local.h:118
float roundstartTime
Definition g_local.h:97
int noRandomSpawn
Definition g_local.h:108
int winningTeam
Definition g_local.h:96
float intermissionTime
Definition g_local.h:93
byte num_alive[MAX_TEAMS]
Definition g_local.h:115
byte num_spawnpoints[MAX_TEAMS]
Definition g_local.h:116
actor movement
Definition g_local.h:277
byte steps
Definition g_local.h:278
#define FILE