From 425decdf7e9284d15aa726e3ae96b9942fb0e3ea Mon Sep 17 00:00:00 2001 From: IronClawTrem Date: Sun, 16 Feb 2020 03:40:06 +0000 Subject: create tremded branch --- src/cgame/cg_local.h | 463 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 280 insertions(+), 183 deletions(-) (limited to 'src/cgame/cg_local.h') 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 + =========================================================================== */ -#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 @@ -1776,14 +1851,6 @@ void CG_Respawn( void ); 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 // @@ -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; -- cgit