summaryrefslogtreecommitdiff
path: root/src/cgame/cg_local.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cgame/cg_local.h')
-rw-r--r--src/cgame/cg_local.h463
1 files changed, 280 insertions, 183 deletions
diff --git a/src/cgame/cg_local.h b/src/cgame/cg_local.h
index ea1694b..ecdf02d 100644
--- a/src/cgame/cg_local.h
+++ b/src/cgame/cg_local.h
@@ -1,13 +1,14 @@
/*
===========================================================================
Copyright (C) 1999-2005 Id Software, Inc.
-Copyright (C) 2000-2006 Tim Angus
+Copyright (C) 2000-2013 Darklegion Development
+Copyright (C) 2015-2019 GrangerHub
This file is part of Tremulous.
Tremulous is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
-published by the Free Software Foundation; either version 2 of the License,
+published by the Free Software Foundation; either version 3 of the License,
or (at your option) any later version.
Tremulous is distributed in the hope that it will be
@@ -16,17 +17,18 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with Tremulous; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+along with Tremulous; if not, see <https://www.gnu.org/licenses/>
+
===========================================================================
*/
-#include "../qcommon/q_shared.h"
-#include "../renderer/tr_types.h"
-#include "../game/bg_public.h"
+#include "qcommon/q_shared.h"
+#include "renderercommon/tr_types.h"
+#include "game/bg_public.h"
#include "cg_public.h"
-#include "../ui/ui_shared.h"
+#include "binaryshader.h"
+#include "ui/ui_shared.h"
// The entire cgame module is unloaded and reloaded on each level change,
// so there is NO persistant data between levels on the client side.
@@ -70,6 +72,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#define CHAR_HEIGHT 48
#define TEXT_ICON_SPACE 4
+#define TEAMCHAT_WIDTH 80
+#define TEAMCHAT_HEIGHT 8
+
// very large characters
#define GIANT_WIDTH 32
#define GIANT_HEIGHT 48
@@ -79,10 +84,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#define TEAM_OVERLAY_MAXNAME_WIDTH 12
#define TEAM_OVERLAY_MAXLOCATION_WIDTH 16
-#define DEFAULT_MODEL "sarge"
-#define DEFAULT_TEAM_MODEL "sarge"
-#define DEFAULT_TEAM_HEAD "sarge"
-
typedef enum
{
FOOTSTEP_NORMAL,
@@ -207,7 +208,9 @@ typedef enum
PMT_STATIC_TRANSFORM,
PMT_TAG,
PMT_CENT_ANGLES,
- PMT_NORMAL
+ PMT_NORMAL,
+ PMT_LAST_NORMAL,
+ PMT_OPPORTUNISTIC_NORMAL
} pMoveType_t;
typedef enum
@@ -253,7 +256,7 @@ typedef struct pLerpValues_s
typedef struct baseParticle_s
{
vec3_t displacement;
- float randDisplacement;
+ vec3_t randDisplacement;
float normalDisplacement;
pMoveType_t velMoveType;
@@ -282,6 +285,7 @@ typedef struct baseParticle_s
float bounceSoundCountRandFrac;
pLerpValues_t radius;
+ int physicsRadius;
pLerpValues_t alpha;
pLerpValues_t rotation;
@@ -317,6 +321,8 @@ typedef struct baseParticle_s
qboolean overdrawProtection;
qboolean realLight;
qboolean cullOnStartSolid;
+
+ float scaleWithCharge;
} baseParticle_t;
@@ -358,6 +364,11 @@ typedef struct particleSystem_s
//for PMT_NORMAL
qboolean normalValid;
vec3_t normal;
+ //for PMT_LAST_NORMAL and PMT_OPPORTUNISTIC_NORMAL
+ qboolean lastNormalIsCurrent;
+ vec3_t lastNormal;
+
+ int charge;
} particleSystem_t;
@@ -383,6 +394,8 @@ typedef struct particle_s
baseParticle_t *class;
particleEjector_t *parent;
+ particleSystem_t *childParticleSystem;
+
int birthTime;
int lifeTime;
@@ -463,7 +476,7 @@ typedef struct baseTrailBeam_s
// the time it takes for a beam to fade out (double attached only)
int fadeOutTime;
-
+
char shaderName[ MAX_QPATH ];
qhandle_t shader;
@@ -492,6 +505,7 @@ typedef struct baseTrailSystem_s
baseTrailBeam_t *beams[ MAX_BEAMS_PER_SYSTEM ];
int numBeams;
+ int lifeTime;
qboolean thirdPersonOnly;
qboolean registered; //whether or not the assets for this trail have been loaded
} baseTrailSystem_t;
@@ -503,6 +517,7 @@ typedef struct trailSystem_s
attachment_t frontAttachment;
attachment_t backAttachment;
+ int birthTime;
int destroyTime;
qboolean valid;
} trailSystem_t;
@@ -551,7 +566,7 @@ typedef struct trailBeam_s
// because corpses after respawn are outside the normal
// client numbering range
-//TA: smoothing of view and model for WW transitions
+// smoothing of view and model for WW transitions
#define MAXSMOOTHS 32
typedef struct
@@ -566,7 +581,7 @@ typedef struct
typedef struct
{
- lerpFrame_t legs, torso, flag, nonseg;
+ lerpFrame_t legs, torso, nonseg, weapon;
int painTime;
int painDirection; // flip from 0 to 1
@@ -594,6 +609,16 @@ typedef struct buildableStatus_s
qboolean visible; // Status is visble?
} buildableStatus_t;
+typedef struct buildableCache_s
+{
+ vec3_t cachedOrigin; // If any of the values differ from their
+ vec3_t cachedAngles; // cached versions, then the cache is invalid
+ vec3_t cachedNormal;
+ buildable_t cachedType;
+ vec3_t axis[ 3 ];
+ vec3_t origin;
+} buildableCache_t;
+
//=================================================
// centity_t have a direct corespondence with gentity_t in the game, but
@@ -634,12 +659,13 @@ typedef struct centity_s
lerpFrame_t lerpFrame;
- //TA:
buildableAnimNumber_t buildableAnim; //persistant anim number
buildableAnimNumber_t oldBuildableAnim; //to detect when new anims are set
+ qboolean buildableIdleAnim; //to check if new idle anim
particleSystem_t *buildablePS;
buildableStatus_t buildableStatus;
- float lastBuildableHealthScale;
+ buildableCache_t buildableCache; // so we don't recalculate things
+ float lastBuildableHealth;
int lastBuildableDamageSoundTime;
lightFlareStatus_t lfs;
@@ -656,16 +682,20 @@ typedef struct centity_s
particleSystem_t *jetPackPS;
jetPackState_t jetPackState;
+ particleSystem_t *poisonCloudedPS;
+
particleSystem_t *entityPS;
qboolean entityPSMissing;
- trailSystem_t *level2ZapTS[ 3 ];
+ trailSystem_t *level2ZapTS[ LEVEL2_AREAZAP_MAX_TARGETS ];
+ int level2ZapTime;
trailSystem_t *muzzleTS; //used for the tesla and reactor
int muzzleTSDeathTime;
qboolean valid;
- qboolean oldValid;
+ qboolean oldValid;
+ struct centity_s *nextLocation;
} centity_t;
@@ -706,41 +736,20 @@ typedef struct
{
qboolean infoValid;
- char name[ MAX_QPATH ];
- pTeam_t team;
-
- int botSkill; // 0 = not bot, 1-5 = bot
-
- vec3_t color1;
- vec3_t color2;
+ char name[ MAX_NAME_LENGTH ];
+ team_t team;
int score; // updated by score servercmds
int location; // location index for team mode
int health; // you only get this info about your teammates
- int armor;
- int curWeapon;
-
- int handicap;
- int wins, losses; // in tourney mode
-
- int teamTask; // task in teamplay (offence/defence)
- qboolean teamLeader; // true when this is a team leader
-
- int powerups; // so can display quad/flag status
-
- int medkitUsageTime;
- int invulnerabilityStartTime;
- int invulnerabilityStopTime;
-
- int breathPuffTime;
+ int upgrade;
+ int curWeaponClass; // sends current weapon for H, current class for A
// when clientinfo is changed, the loading of models/skins/sounds
// can be deferred until you are dead, to prevent hitches in
// gameplay
char modelName[ MAX_QPATH ];
char skinName[ MAX_QPATH ];
- char headModelName[ MAX_QPATH ];
- char headSkinName[ MAX_QPATH ];
qboolean newAnims; // true if using the new mission pack animations
qboolean fixedlegs; // true if legs yaw is always the same as torso yaw
@@ -771,6 +780,9 @@ typedef struct
sfxHandle_t customFootsteps[ 4 ];
sfxHandle_t customMetalFootsteps[ 4 ];
+
+ char voice[ MAX_VOICE_NAME_LEN ];
+ int voiceTime;
} clientInfo_t;
@@ -789,6 +801,7 @@ typedef struct weaponInfoMode_s
qboolean usesSpriteMissle;
qhandle_t missileSprite;
int missileSpriteSize;
+ float missileSpriteCharge;
qhandle_t missileParticleSystem;
qhandle_t missileTrailSystem;
qboolean missileRotates;
@@ -799,7 +812,6 @@ typedef struct weaponInfoMode_s
int missileAnimLooping;
sfxHandle_t firingSound;
- qboolean loopFireSound;
qhandle_t muzzleParticleSystem;
@@ -824,6 +836,13 @@ typedef struct weaponInfo_s
qhandle_t barrelModel;
qhandle_t flashModel;
+ qhandle_t weaponModel3rdPerson;
+ qhandle_t barrelModel3rdPerson;
+ qhandle_t flashModel3rdPerson;
+
+ animation_t animations[ MAX_WEAPON_ANIMATIONS ];
+ qboolean noDrift;
+
vec3_t weaponMidpoint; // so it will rotate centered instead of by tag
qhandle_t weaponIcon;
@@ -869,7 +888,6 @@ typedef struct
//======================================================================
-//TA:
typedef struct
{
vec3_t alienBuildablePos[ MAX_GENTITIES ];
@@ -906,6 +924,9 @@ typedef struct
#define NUM_SAVED_STATES ( CMD_BACKUP + 2 )
+// After this many msec the crosshair name fades out completely
+#define CROSSHAIR_CLIENT_TIMEOUT 1000
+
typedef struct
{
int clientFrame; // incremented each frame
@@ -1000,19 +1021,14 @@ typedef struct
int scoreFadeTime;
char killerName[ MAX_NAME_LENGTH ];
char spectatorList[ MAX_STRING_CHARS ]; // list of names
- int spectatorLen; // length of list
- float spectatorWidth; // width in device units
int spectatorTime; // next time to offset
- int spectatorPaintX; // current paint x
- int spectatorPaintX2; // current paint x
- int spectatorOffset; // current offset from start
- int spectatorPaintLen; // current offset from start
+ float spectatorOffset; // current offset from start
// centerprinting
int centerPrintTime;
int centerPrintCharWidth;
int centerPrintY;
- char centerPrint[ 1024 ];
+ char centerPrint[ MAX_STRING_CHARS ];
int centerPrintLines;
// low ammo warning state
@@ -1022,6 +1038,7 @@ typedef struct
int lastKillTime;
// crosshair client ID
+ int crosshairBuildable;
int crosshairClientNum;
int crosshairClientTime;
@@ -1031,7 +1048,6 @@ typedef struct
// attacking player
int attackerTime;
- int voiceTime;
// reward medals
int rewardStack;
@@ -1052,8 +1068,7 @@ typedef struct
int voiceChatBufferOut;
// warmup countdown
- int warmup;
- int warmupCount;
+ int warmupTime;
//==========================
@@ -1083,8 +1098,7 @@ typedef struct
float v_dmg_pitch;
float v_dmg_roll;
- vec3_t kick_angles; // weapon kicks
- vec3_t kick_origin;
+ qboolean chaseFollow;
// temp working variables for player view
float bobfracsin;
@@ -1099,25 +1113,25 @@ typedef struct
char testModelBarrelName[MAX_QPATH];
qboolean testGun;
- int spawnTime; //TA: fovwarp
- int weapon1Time; //TA: time when BUTTON_ATTACK went t->f f->t
- int weapon2Time; //TA: time when BUTTON_ATTACK2 went t->f f->t
- int weapon3Time; //TA: time when BUTTON_USE_HOLDABLE went t->f f->t
+ int spawnTime; // fovwarp
+ int weapon1Time; // time when BUTTON_ATTACK went t->f f->t
+ int weapon2Time; // time when BUTTON_ATTACK2 went t->f f->t
+ int weapon3Time; // time when BUTTON_USE_HOLDABLE went t->f f->t
qboolean weapon1Firing;
qboolean weapon2Firing;
qboolean weapon3Firing;
int poisonedTime;
- vec3_t lastNormal; //TA: view smoothage
- vec3_t lastVangles; //TA: view smoothage
- smooth_t sList[ MAXSMOOTHS ]; //TA: WW smoothing
+ vec3_t lastNormal; // view smoothage
+ vec3_t lastVangles; // view smoothage
+ smooth_t sList[ MAXSMOOTHS ]; // WW smoothing
- int forwardMoveTime; //TA: for struggling
+ int forwardMoveTime; // for struggling
int rightMoveTime;
int upMoveTime;
- float charModelFraction; //TA: loading percentages
+ float charModelFraction; // loading percentages
float mediaFraction;
float buildablesFraction;
@@ -1129,23 +1143,32 @@ typedef struct
int numConsoleLines;
particleSystem_t *poisonCloudPS;
+ particleSystem_t *poisonCloudedPS;
float painBlendValue;
float painBlendTarget;
+ float healBlendValue;
int lastHealth;
+ qboolean wasDeadLastFrame;
int lastPredictedCommand;
int lastServerTime;
playerState_t savedPmoveStates[ NUM_SAVED_STATES ];
int stateHead, stateTail;
int ping;
+
+ float chargeMeterAlpha;
+ float chargeMeterValue;
+ qhandle_t lastHealthCross;
+ float healthCrossFade;
+ int nearUsableBuildable;
+
+ int nextWeaponClickTime;
+ // binary shaders - by /dev/humancontroller
+ int numBinaryShadersUsed;
+ cgBinaryShaderSetting_t binaryShaderSettings[ NUM_BINARY_SHADERS ];
} cg_t;
-
-// all of the model, shader, and sound references that are
-// loaded at gamestate time are stored in cgMedia_t
-// Other media that can be tied to clients, weapons, or items are
-// stored in the clientInfo_t, itemInfo_t, weaponInfo_t, and powerupInfo_t
typedef struct
{
qhandle_t charsetShader;
@@ -1168,6 +1191,7 @@ typedef struct
qhandle_t scannerBlipShader;
qhandle_t scannerLineShader;
+ qhandle_t teamOverlayShader;
qhandle_t numberShaders[ 11 ];
@@ -1179,12 +1203,22 @@ typedef struct
qhandle_t redBuildShader;
qhandle_t humanSpawningShader;
+ // binary shaders + range markers
+ qhandle_t sphereModel;
+ qhandle_t sphericalCone64Model;
+ qhandle_t sphericalCone240Model;
+
+ qhandle_t plainColorShader;
+ qhandle_t binaryAlpha1Shader;
+ cgMediaBinaryShader_t binaryShaders[ NUM_BINARY_SHADERS ];
+
// disconnect
qhandle_t disconnectPS;
qhandle_t disconnectSound;
// sounds
sfxHandle_t tracerSound;
+ sfxHandle_t weaponEmptyClick;
sfxHandle_t selectSound;
sfxHandle_t footsteps[ FOOTSTEP_TOTAL ][ 4 ];
sfxHandle_t talkSound;
@@ -1192,6 +1226,7 @@ typedef struct
sfxHandle_t humanTalkSound;
sfxHandle_t landSound;
sfxHandle_t fallSound;
+ sfxHandle_t turretSpinupSound;
sfxHandle_t hardBounceSound1;
sfxHandle_t hardBounceSound2;
@@ -1251,6 +1286,7 @@ typedef struct
sfxHandle_t buildableRepairedSound;
qhandle_t poisonCloudPS;
+ qhandle_t poisonCloudedPS;
qhandle_t alienEvolvePS;
qhandle_t alienAcidTubePS;
@@ -1263,13 +1299,22 @@ typedef struct
qhandle_t alienBleedPS;
qhandle_t humanBleedPS;
+ qhandle_t alienBuildableBleedPS;
+ qhandle_t humanBuildableBleedPS;
+
qhandle_t teslaZapTS;
sfxHandle_t lCannonWarningSound;
+ sfxHandle_t lCannonWarningSound2;
qhandle_t buildWeaponTimerPie[ 8 ];
qhandle_t upgradeClassIconShader;
+ qhandle_t healthCross;
+ qhandle_t healthCross2X;
+ qhandle_t healthCross3X;
+ qhandle_t healthCrossMedkit;
+ qhandle_t healthCrossPoisoned;
} cgMedia_t;
typedef struct
@@ -1319,17 +1364,12 @@ typedef struct
char mapname[ MAX_QPATH ];
qboolean markDeconstruct; // Whether or not buildables are marked
- int voteTime;
- int voteYes;
- int voteNo;
- qboolean voteModified; // beep whenever changed
- char voteString[ MAX_STRING_TOKENS ];
-
- int teamVoteTime[ 2 ];
- int teamVoteYes[ 2 ];
- int teamVoteNo[ 2 ];
- qboolean teamVoteModified[ 2 ]; // beep whenever changed
- char teamVoteString[ 2 ][ MAX_STRING_TOKENS ];
+ int voteTime[ NUM_TEAMS ];
+ int voteYes[ NUM_TEAMS ];
+ int voteNo[ NUM_TEAMS ];
+ char voteCaller[ NUM_TEAMS ][ MAX_NAME_LENGTH ];
+ qboolean voteModified[ NUM_TEAMS ];// beep whenever changed
+ char voteString[ NUM_TEAMS ][ MAX_STRING_TOKENS ];
int levelStartTime;
@@ -1337,22 +1377,13 @@ typedef struct
qboolean newHud;
- int alienBuildPoints;
- int alienBuildPointsTotal;
- int humanBuildPoints;
- int humanBuildPointsTotal;
- int humanBuildPointsPowered;
-
int alienStage;
int humanStage;
- int alienKills;
- int humanKills;
+ int alienCredits;
+ int humanCredits;
int alienNextStageThreshold;
int humanNextStageThreshold;
- int numAlienSpawns;
- int numHumanSpawns;
-
//
// locally derived information from gamestate
//
@@ -1367,7 +1398,9 @@ typedef struct
clientInfo_t clientinfo[ MAX_CLIENTS ];
- //TA: corpse info
+ int teaminfoReceievedTime;
+
+ // corpse info
clientInfo_t corpseinfo[ MAX_CLIENTS ];
int cursorX;
@@ -1383,57 +1416,69 @@ typedef struct
// media
cgMedia_t media;
+
+ voice_t *voices;
+ clientList_t ignoreList;
+
+ // Kill Message
+ char killMsgKillers[ TEAMCHAT_HEIGHT ][ 33*3+1 ];
+ char killMsgVictims[ TEAMCHAT_HEIGHT ][ 33*3+1 ];
+ int killMsgWeapons[ TEAMCHAT_HEIGHT ];
+ int killMsgMsgTimes[ TEAMCHAT_HEIGHT ];
+ int killMsgPos;
+ int killMsgLastPos;
} cgs_t;
+typedef struct
+{
+ char *cmd;
+ void ( *function )( void );
+} consoleCommand_t;
+
+typedef struct
+{
+ char *cmd;
+ void (*function)( int argNum );
+} consoleCommandCompletions_t;
+
//==============================================================================
extern cgs_t cgs;
extern cg_t cg;
extern centity_t cg_entities[ MAX_GENTITIES ];
+extern displayContextDef_t cgDC;
-//TA: weapon limit expanded:
-//extern weaponInfo_t cg_weapons[MAX_WEAPONS];
extern weaponInfo_t cg_weapons[ 32 ];
-//TA: upgrade infos:
extern upgradeInfo_t cg_upgrades[ 32 ];
-//TA: buildable infos:
extern buildableInfo_t cg_buildables[ BA_NUM_BUILDABLES ];
extern markPoly_t cg_markPolys[ MAX_MARK_POLYS ];
+extern vmCvar_t cg_teslaTrailTime;
extern vmCvar_t cg_centertime;
extern vmCvar_t cg_runpitch;
extern vmCvar_t cg_runroll;
-extern vmCvar_t cg_bobup;
-extern vmCvar_t cg_bobpitch;
-extern vmCvar_t cg_bobroll;
extern vmCvar_t cg_swingSpeed;
extern vmCvar_t cg_shadows;
-extern vmCvar_t cg_gibs;
extern vmCvar_t cg_drawTimer;
extern vmCvar_t cg_drawClock;
extern vmCvar_t cg_drawFPS;
extern vmCvar_t cg_drawDemoState;
extern vmCvar_t cg_drawSnapshot;
-extern vmCvar_t cg_draw3dIcons;
-extern vmCvar_t cg_drawIcons;
-extern vmCvar_t cg_drawAmmoWarning;
+extern vmCvar_t cg_drawChargeBar;
extern vmCvar_t cg_drawCrosshair;
extern vmCvar_t cg_drawCrosshairNames;
-extern vmCvar_t cg_drawRewards;
+extern vmCvar_t cg_crosshairSize;
extern vmCvar_t cg_drawTeamOverlay;
+extern vmCvar_t cg_teamOverlaySortMode;
+extern vmCvar_t cg_teamOverlayMaxPlayers;
extern vmCvar_t cg_teamOverlayUserinfo;
-extern vmCvar_t cg_crosshairX;
-extern vmCvar_t cg_crosshairY;
-extern vmCvar_t cg_drawStatus;
extern vmCvar_t cg_draw2D;
extern vmCvar_t cg_animSpeed;
extern vmCvar_t cg_debugAnim;
extern vmCvar_t cg_debugPosition;
extern vmCvar_t cg_debugEvents;
-extern vmCvar_t cg_teslaTrailTime;
-extern vmCvar_t cg_railTrailTime;
extern vmCvar_t cg_errorDecay;
extern vmCvar_t cg_nopredict;
extern vmCvar_t cg_debugMove;
@@ -1441,65 +1486,46 @@ extern vmCvar_t cg_noPlayerAnims;
extern vmCvar_t cg_showmiss;
extern vmCvar_t cg_footsteps;
extern vmCvar_t cg_addMarks;
-extern vmCvar_t cg_brassTime;
+extern vmCvar_t cg_viewsize;
+extern vmCvar_t cg_drawGun;
extern vmCvar_t cg_gun_frame;
extern vmCvar_t cg_gun_x;
extern vmCvar_t cg_gun_y;
extern vmCvar_t cg_gun_z;
-extern vmCvar_t cg_drawGun;
-extern vmCvar_t cg_viewsize;
extern vmCvar_t cg_tracerChance;
extern vmCvar_t cg_tracerWidth;
extern vmCvar_t cg_tracerLength;
-extern vmCvar_t cg_autoswitch;
-extern vmCvar_t cg_ignore;
-extern vmCvar_t cg_simpleItems;
-extern vmCvar_t cg_fov;
-extern vmCvar_t cg_zoomFov;
-extern vmCvar_t cg_thirdPersonRange;
-extern vmCvar_t cg_thirdPersonAngle;
extern vmCvar_t cg_thirdPerson;
+extern vmCvar_t cg_thirdPersonAngle;
+extern vmCvar_t cg_thirdPersonShoulderViewMode;
+extern vmCvar_t cg_staticDeathCam;
+extern vmCvar_t cg_thirdPersonPitchFollow;
+extern vmCvar_t cg_thirdPersonRange;
extern vmCvar_t cg_stereoSeparation;
extern vmCvar_t cg_lagometer;
-extern vmCvar_t cg_drawAttacker;
+extern vmCvar_t cg_drawSpeed;
+extern vmCvar_t cg_maxSpeedTimeWindow;
extern vmCvar_t cg_synchronousClients;
extern vmCvar_t cg_stats;
-extern vmCvar_t cg_forceModel;
-extern vmCvar_t cg_buildScript;
extern vmCvar_t cg_paused;
extern vmCvar_t cg_blood;
-extern vmCvar_t cg_predictItems;
-extern vmCvar_t cg_deferPlayers;
-extern vmCvar_t cg_drawFriend;
+extern vmCvar_t cg_teamOverlayUserinfo;
extern vmCvar_t cg_teamChatsOnly;
extern vmCvar_t cg_noVoiceChats;
extern vmCvar_t cg_noVoiceText;
-extern vmCvar_t cg_scorePlum;
+extern vmCvar_t cg_hudFiles;
extern vmCvar_t cg_smoothClients;
extern vmCvar_t pmove_fixed;
extern vmCvar_t pmove_msec;
-//extern vmCvar_t cg_pmove_fixed;
-extern vmCvar_t cg_cameraOrbit;
-extern vmCvar_t cg_cameraOrbitDelay;
+extern vmCvar_t cg_cameraMode;
extern vmCvar_t cg_timescaleFadeEnd;
extern vmCvar_t cg_timescaleFadeSpeed;
extern vmCvar_t cg_timescale;
-extern vmCvar_t cg_cameraMode;
-extern vmCvar_t cg_smallFont;
-extern vmCvar_t cg_bigFont;
extern vmCvar_t cg_noTaunt;
-extern vmCvar_t cg_noProjectileTrail;
-extern vmCvar_t cg_oldRail;
-extern vmCvar_t cg_oldRocket;
-extern vmCvar_t cg_oldPlasma;
-extern vmCvar_t cg_trueLightning;
-extern vmCvar_t cg_creepRes;
extern vmCvar_t cg_drawSurfNormal;
extern vmCvar_t cg_drawBBOX;
-extern vmCvar_t cg_debugAlloc;
extern vmCvar_t cg_wwSmoothTime;
-extern vmCvar_t cg_wwFollow;
-extern vmCvar_t cg_wwToggle;
+extern vmCvar_t cg_disableBlueprintErrors;
extern vmCvar_t cg_depthSortParticles;
extern vmCvar_t cg_bounceParticles;
extern vmCvar_t cg_consoleLatency;
@@ -1508,21 +1534,38 @@ extern vmCvar_t cg_debugParticles;
extern vmCvar_t cg_debugTrails;
extern vmCvar_t cg_debugPVS;
extern vmCvar_t cg_disableWarningDialogs;
+extern vmCvar_t cg_disableUpgradeDialogs;
+extern vmCvar_t cg_disableBuildDialogs;
+extern vmCvar_t cg_disableCommandDialogs;
extern vmCvar_t cg_disableScannerPlane;
extern vmCvar_t cg_tutorial;
+extern vmCvar_t cg_rangeMarkerDrawSurface;
+extern vmCvar_t cg_rangeMarkerDrawIntersection;
+extern vmCvar_t cg_rangeMarkerDrawFrontline;
+extern vmCvar_t cg_rangeMarkerSurfaceOpacity;
+extern vmCvar_t cg_rangeMarkerLineOpacity;
+extern vmCvar_t cg_rangeMarkerLineThickness;
+extern vmCvar_t cg_rangeMarkerForBlueprint;
+extern vmCvar_t cg_rangeMarkerBuildableTypes;
+extern vmCvar_t cg_binaryShaderScreenScale;
+
extern vmCvar_t cg_painBlendUpRate;
extern vmCvar_t cg_painBlendDownRate;
extern vmCvar_t cg_painBlendMax;
extern vmCvar_t cg_painBlendScale;
extern vmCvar_t cg_painBlendZoom;
-//TA: hack to get class an carriage through to UI module
+extern vmCvar_t cg_stickySpec;
+extern vmCvar_t cg_sprintToggle;
+extern vmCvar_t cg_unlagged;
+
+extern vmCvar_t cg_debugVoices;
+
extern vmCvar_t ui_currentClass;
extern vmCvar_t ui_carriage;
extern vmCvar_t ui_stages;
extern vmCvar_t ui_dialog;
-extern vmCvar_t ui_loading;
extern vmCvar_t ui_voteActive;
extern vmCvar_t ui_alienTeamVoteActive;
extern vmCvar_t ui_humanTeamVoteActive;
@@ -1531,7 +1574,22 @@ extern vmCvar_t cg_debugRandom;
extern vmCvar_t cg_optimizePrediction;
extern vmCvar_t cg_projectileNudge;
-extern vmCvar_t cg_unlagged;
+
+extern vmCvar_t cg_voice;
+
+extern vmCvar_t cg_emoticons;
+
+extern vmCvar_t cg_chatTeamPrefix;
+
+extern vmCvar_t cg_killMsg;
+extern vmCvar_t cg_killMsgTime;
+extern vmCvar_t cg_killMsgHeight;
+
+extern vmCvar_t cg_killMsgTime;
+extern vmCvar_t cg_killMsgHeight;
+
+extern vmCvar_t thz_radar;
+extern vmCvar_t thz_radarrange;
//
// cg_main.c
@@ -1539,8 +1597,8 @@ extern vmCvar_t cg_unlagged;
const char *CG_ConfigString( int index );
const char *CG_Argv( int arg );
-void QDECL CG_Printf( const char *msg, ... );
-void QDECL CG_Error( const char *msg, ... );
+void QDECL CG_Printf( const char *msg, ... ) __attribute__ ((format (printf, 1, 2)));
+void QDECL CG_Error( const char *msg, ... ) __attribute__ ((noreturn, format (printf, 1, 2)));
void CG_StartMusic( void );
int CG_PlayerCount( void );
@@ -1554,17 +1612,22 @@ void CG_KeyEvent( int key, qboolean down );
void CG_MouseEvent( int x, int y );
void CG_EventHandling( int type );
void CG_SetScoreSelection( void *menu );
+qboolean CG_ClientIsReady( int clientNum );
void CG_BuildSpectatorString( void );
-qboolean CG_FileExists( char *filename );
+qboolean CG_FileExists( const char *filename );
void CG_RemoveNotifyLine( void );
void CG_AddNotifyText( void );
+qboolean CG_GetRangeMarkerPreferences( qboolean *drawSurface, qboolean *drawIntersection,
+ qboolean *drawFrontline, float *surfaceOpacity,
+ float *lineOpacity, float *lineThickness );
+void CG_UpdateBuildableRangeMarkerMask( void );
//
// cg_view.c
//
-void CG_addSmoothOp( vec3_t rotAxis, float rotAngle, float timeMod ); //TA
+void CG_addSmoothOp( vec3_t rotAxis, float rotAngle, float timeMod );
void CG_TestModel_f( void );
void CG_TestGun_f( void );
void CG_TestModelNextFrame_f( void );
@@ -1573,6 +1636,9 @@ void CG_TestModelNextSkin_f( void );
void CG_TestModelPrevSkin_f( void );
void CG_AddBufferedSound( sfxHandle_t sfx );
void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView, qboolean demoPlayback );
+void CG_OffsetFirstPersonView( void );
+void CG_OffsetThirdPersonView( void );
+void CG_OffsetShoulderView( void );
//
@@ -1584,37 +1650,41 @@ void CG_FillRect( float x, float y, float width, float height, const floa
void CG_DrawPic( float x, float y, float width, float height, qhandle_t hShader );
void CG_DrawFadePic( float x, float y, float width, float height, vec4_t fcolor,
vec4_t tcolor, float amount, qhandle_t hShader );
+void CG_SetClipRegion( float x, float y, float w, float h );
+void CG_ClearClipRegion( void );
int CG_DrawStrlen( const char *str );
float *CG_FadeColor( int startMsec, int totalMsec );
void CG_TileClear( void );
void CG_ColorForHealth( vec4_t hcolor );
-void CG_GetColorForHealth( int health, int armor, vec4_t hcolor );
-
void CG_DrawRect( float x, float y, float width, float height, float size, const float *color );
void CG_DrawSides(float x, float y, float w, float h, float size);
void CG_DrawTopBottom(float x, float y, float w, float h, float size);
qboolean CG_WorldToScreen( vec3_t point, float *x, float *y );
char *CG_KeyBinding( const char *bind );
-
+char CG_GetColorCharForHealth( int clientnum );
+void CG_DrawSphere( const vec3_t center, float radius, int customShader, const float *shaderRGBA );
+void CG_DrawSphericalCone( const vec3_t tip, const vec3_t rotation, float radius,
+ qboolean a240, int customShader, const float *shaderRGBA );
+void CG_DrawRangeMarker( rangeMarkerType_t rmType, const vec3_t origin, const float *angles, float range,
+ qboolean drawSurface, qboolean drawIntersection, qboolean drawFrontline,
+ const vec3_t rgb, float surfaceOpacity, float lineOpacity, float lineThickness );
//
// cg_draw.c
//
-extern int sortedTeamPlayers[ TEAM_MAXOVERLAY ];
-extern int numSortedTeamPlayers;
void CG_AddLagometerFrameInfo( void );
void CG_AddLagometerSnapshotInfo( snapshot_t *snap );
+void CG_AddSpeed( void );
void CG_CenterPrint( const char *str, int y, int charWidth );
void CG_DrawActive( stereoFrame_t stereoView );
-void CG_OwnerDraw( float x, float y, float w, float h, float text_x, float text_y,
- int ownerDraw, int ownerDrawFlags, int align, float special,
- float scale, vec4_t color, qhandle_t shader, int textStyle);
-void CG_Text_Paint( float x, float y, float scale, vec4_t color, const char *text, float adjust, int limit, int style );
-int CG_Text_Width( const char *text, float scale, int limit );
-int CG_Text_Height( const char *text, float scale, int limit );
+void CG_OwnerDraw( float x, float y, float w, float h, float text_x,
+ float text_y, int ownerDraw, int ownerDrawFlags,
+ int align, int textalign, int textvalign,
+ float borderSize, float scale, vec4_t foreColor,
+ vec4_t backColor, qhandle_t shader, int textStyle );
float CG_GetValue(int ownerDraw);
void CG_RunMenuScript(char **args);
void CG_SetPrintString( int type, const char *p );
@@ -1633,13 +1703,12 @@ void CG_DrawField( float x, float y, int width, float cw, float ch, int v
void CG_Player( centity_t *cent );
void CG_Corpse( centity_t *cent );
void CG_ResetPlayerEntity( centity_t *cent );
-void CG_AddRefEntityWithPowerups( refEntity_t *ent, int powerups, int team );
void CG_NewClientInfo( int clientNum );
-void CG_PrecacheClientInfo( pClass_t class, char *model, char *skin );
+void CG_PrecacheClientInfo( class_t class, char *model, char *skin );
sfxHandle_t CG_CustomSound( int clientNum, const char *soundName );
void CG_PlayerDisconnect( vec3_t org );
void CG_Bleed( vec3_t origin, vec3_t normal, int entityNum );
-qboolean CG_AtHighestClass( void );
+centity_t *CG_GetPlayerLocation( void );
//
// cg_buildable.c
@@ -1651,11 +1720,12 @@ void CG_DrawBuildableStatus( void );
void CG_InitBuildables( void );
void CG_HumanBuildableExplosion( vec3_t origin, vec3_t dir );
void CG_AlienBuildableExplosion( vec3_t origin, vec3_t dir );
+qboolean CG_GetBuildableRangeMarkerProperties( buildable_t bType, rangeMarkerType_t *rmType, float *range, vec3_t rgb );
//
// cg_animation.c
//
-void CG_RunLerpFrame( lerpFrame_t *lf );
+void CG_RunLerpFrame( lerpFrame_t *lf, float scale );
//
// cg_animmapobj.c
@@ -1687,6 +1757,7 @@ void CG_CheckEvents( centity_t *cent );
void CG_EntityEvent( centity_t *cent, vec3_t position );
void CG_PainEvent( centity_t *cent, int health );
+void CG_AddToKillMsg( const char* killername, const char* victimname, int icon );
//
// cg_ents.c
@@ -1701,8 +1772,7 @@ void CG_PositionEntityOnTag( refEntity_t *entity, const refEntity_t *pare
qhandle_t parentModel, char *tagName );
void CG_PositionRotatedEntityOnTag( refEntity_t *entity, const refEntity_t *parent,
qhandle_t parentModel, char *tagName );
-
-
+void CG_RangeMarker( centity_t *cent );
//
@@ -1719,8 +1789,9 @@ void CG_RegisterWeapon( int weaponNum );
void CG_FireWeapon( centity_t *cent, weaponMode_t weaponMode );
void CG_MissileHitWall( weapon_t weapon, weaponMode_t weaponMode, int clientNum,
- vec3_t origin, vec3_t dir, impactSound_t soundType );
-void CG_MissileHitPlayer( weapon_t weapon, weaponMode_t weaponMode, vec3_t origin, vec3_t dir, int entityNum );
+ vec3_t origin, vec3_t dir, impactSound_t soundType, int charge );
+void CG_MissileHitEntity( weapon_t weaponNum, weaponMode_t weaponMode,
+ vec3_t origin, vec3_t dir, int entityNum, int charge );
void CG_Bullet( vec3_t origin, int sourceEntityNum, vec3_t normal, qboolean flesh, int fleshEntityNum );
void CG_ShotgunFire( entityState_t *es );
@@ -1736,6 +1807,7 @@ void CG_DrawItemSelectText( rectDef_t *rect, float scale, int textStyle )
void CG_UpdateEntityPositions( void );
void CG_Scanner( rectDef_t *rect, qhandle_t shader, vec4_t color );
void CG_AlienSense( rectDef_t *rect );
+void THZ_DrawScanner( rectDef_t *rect );
//
// cg_marks.c
@@ -1757,6 +1829,7 @@ void CG_ProcessSnapshots( void );
//
// cg_consolecmds.c
//
+qboolean CG_Console_CompleteArgument( int argNum );
qboolean CG_ConsoleCommand( void );
void CG_InitConsoleCommands( void );
qboolean CG_RequestScores( void );
@@ -1768,6 +1841,8 @@ void CG_ExecuteNewServerCommands( int latestSequence );
void CG_ParseServerinfo( void );
void CG_SetConfigValues( void );
void CG_ShaderStateChanged(void);
+void CG_UnregisterCommands( void );
+void CG_CenterPrint_f( void );
//
// cg_playerstate.c
@@ -1777,14 +1852,6 @@ void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops );
void CG_CheckChangedPredictableEvents( playerState_t *ps );
//
-// cg_mem.c
-//
-void CG_InitMemory( void );
-void *CG_Alloc( int size );
-void CG_Free( void *ptr );
-void CG_DefragmentMemory( void );
-
-//
// cg_attachment.c
//
qboolean CG_AttachmentPoint( attachment_t *a, vec3_t v );
@@ -1820,6 +1887,7 @@ qboolean CG_IsParticleSystemInfinite( particleSystem_t *ps );
qboolean CG_IsParticleSystemValid( particleSystem_t **ps );
void CG_SetParticleSystemNormal( particleSystem_t *ps, vec3_t normal );
+void CG_SetParticleSystemLastNormal( particleSystem_t *ps, const float *normal );
void CG_AddParticles( void );
@@ -1855,6 +1923,20 @@ void CG_WritePTRCode( int code );
//
const char *CG_TutorialText( void );
+// cg_main.c
+qboolean CG_GetRangeMarkerPreferences( qboolean *drawSurface, qboolean *drawIntersection,
+ qboolean *drawFrontline, float *surfaceOpacity,
+ float *lineOpacity, float *lineThickness );
+// cg_drawtools.c
+void CG_DrawRangeMarker( rangeMarkerType_t rmType, const vec3_t origin, const float *angles, float range,
+ qboolean drawSurface, qboolean drawIntersection, qboolean drawFrontline,
+ const vec3_t rgb, float surfaceOpacity, float lineOpacity, float lineThickness );
+// cg_buildable.c
+qboolean CG_GetBuildableRangeMarkerProperties( buildable_t bType, rangeMarkerType_t *rmType, float *range, vec3_t rgb );
+void CG_GhostBuildableRangeMarker( buildable_t buildable, const vec3_t origin, const vec3_t normal );
+// cg_ents.c
+void CG_RangeMarker( centity_t *cent );
+
//
//===============================================
@@ -1868,7 +1950,7 @@ const char *CG_TutorialText( void );
void trap_Print( const char *fmt );
// abort the game
-void trap_Error( const char *fmt );
+void trap_Error( const char *fmt ) __attribute__((noreturn));
// milliseconds should only be used for performance tuning, never
// for anything game related. Get time from the CG_DrawActiveFrame parameter
@@ -1888,11 +1970,11 @@ void trap_LiteralArgs( char *buffer, int bufferLength );
// filesystem access
// returns length of file
-int trap_FS_FOpenFile( const char *qpath, fileHandle_t *f, fsMode_t mode );
+int trap_FS_FOpenFile( const char *qpath, fileHandle_t *f, enum FS_Mode mode );
void trap_FS_Read( void *buffer, int len, fileHandle_t f );
void trap_FS_Write( const void *buffer, int len, fileHandle_t f );
void trap_FS_FCloseFile( fileHandle_t f );
-void trap_FS_Seek( fileHandle_t f, long offset, fsOrigin_t origin ); // fsOrigin_t
+void trap_FS_Seek( fileHandle_t f, long offset, enum FS_Origin origin ); // fsOrigin_t
int trap_FS_GetFileList( const char *path, const char *extension,
char *listbuf, int bufsize );
@@ -1905,6 +1987,7 @@ void trap_SendConsoleCommand( const char *text );
// register a command name so the console can perform command completion.
// FIXME: replace this with a normal console command "defineCommand"?
void trap_AddCommand( const char *cmdName );
+void trap_RemoveCommand( const char *cmdName );
// send a string to the server over the network
void trap_SendClientCommand( const char *s );
@@ -1985,11 +2068,13 @@ void trap_R_AddRefEntityToScene( const refEntity_t *re );
// significant construction
void trap_R_AddPolyToScene( qhandle_t hShader , int numVerts, const polyVert_t *verts );
void trap_R_AddPolysToScene( qhandle_t hShader , int numVerts, const polyVert_t *verts, int numPolys );
+qboolean trap_R_inPVS( const vec3_t p1, const vec3_t p2 );
void trap_R_AddLightToScene( const vec3_t org, float intensity, float r, float g, float b );
void trap_R_AddAdditiveLightToScene( const vec3_t org, float intensity, float r, float g, float b );
int trap_R_LightForPoint( vec3_t point, vec3_t ambientLight, vec3_t directedLight, vec3_t lightDir );
void trap_R_RenderScene( const refdef_t *fd );
void trap_R_SetColor( const float *rgba ); // NULL = 1,1,1,1
+void trap_R_SetClipRegion( const float *region );
void trap_R_DrawStretchPic( float x, float y, float w, float h,
float s1, float t1, float s2, float t2, qhandle_t hShader );
void trap_R_ModelBounds( clipHandle_t model, vec3_t mins, vec3_t maxs );
@@ -2180,6 +2265,8 @@ int trap_Key_GetKey( const char *binding );
void trap_Key_KeynumToStringBuf( int keynum, char *buf, int buflen );
void trap_Key_GetBindingBuf( int keynum, char *buf, int buflen );
void trap_Key_SetBinding( int keynum, const char *binding );
+void trap_Key_SetOverstrikeMode( qboolean state );
+qboolean trap_Key_GetOverstrikeMode( void );
int trap_CIN_PlayCinematic( const char *arg0, int xpos, int ypos, int width, int height, int bits );
e_status trap_CIN_StopCinematic( int handle );
@@ -2199,9 +2286,19 @@ qboolean trap_GetEntityToken( char *buffer, int bufferSize );
int trap_GetDemoState( void );
int trap_GetDemoPos( void );
void trap_GetDemoName( char *buffer, int size );
+void trap_Field_CompleteList( char *listJson );
// cg_drawCrosshair settings
#define CROSSHAIR_ALWAYSOFF 0
#define CROSSHAIR_RANGEDONLY 1
#define CROSSHAIR_ALWAYSON 2
+// menu types for cg_disable*Dialogs
+typedef enum
+{
+ DT_INTERACTIVE, // team, class, armoury
+ DT_ARMOURYEVOLVE, // Insufficient funds et al
+ DT_BUILD, // build errors
+ DT_COMMAND, // You must be living/human/spec etc.
+
+} dialogType_t;