summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cgame/cg_draw.c18
-rw-r--r--src/cgame/cg_local.h1702
-rw-r--r--src/cgame/cg_main.c14
-rw-r--r--src/cgame/cg_playerstate.c24
-rw-r--r--src/cgame/cg_predict.c24
-rw-r--r--src/cgame/cg_public.h242
-rw-r--r--src/cgame/cg_servercmds.c5
-rw-r--r--src/cgame/cg_weapons.c7
-rw-r--r--src/game/bg_pmove.c8
-rw-r--r--src/game/bg_public.h15
10 files changed, 901 insertions, 1158 deletions
diff --git a/src/cgame/cg_draw.c b/src/cgame/cg_draw.c
index 3938aa4a..a9d704f5 100644
--- a/src/cgame/cg_draw.c
+++ b/src/cgame/cg_draw.c
@@ -24,12 +24,11 @@ menuDef_t *menuScoreboard = NULL;
int drawTeamOverlayModificationCount = -1;
-int sortedTeamPlayers[TEAM_MAXOVERLAY];
-int numSortedTeamPlayers;
-
-char systemChat[ 256 ];
-char teamChat1[ 256 ];
-char teamChat2[ 256 ];
+int sortedTeamPlayers[ TEAM_MAXOVERLAY ];
+int numSortedTeamPlayers;
+char systemChat[ 256 ];
+char teamChat1[ 256 ];
+char teamChat2[ 256 ];
//TA UI
int CG_Text_Width( const char *text, float scale, int limit )
@@ -1740,13 +1739,6 @@ int CG_ClientNumFromName( const char *p )
return -1;
}
-void CG_ShowResponseHead( )
-{
- Menus_OpenByName( "voiceMenu" );
- trap_Cvar_Set( "cl_conXOffset", "72" );
- cg.voiceTime = cg.time;
-}
-
void CG_RunMenuScript( char **args )
{
}
diff --git a/src/cgame/cg_local.h b/src/cgame/cg_local.h
index 15be6a51..7f8efc83 100644
--- a/src/cgame/cg_local.h
+++ b/src/cgame/cg_local.h
@@ -95,7 +95,8 @@
#define DEFAULT_REDTEAM_NAME "Stroggs"
#define DEFAULT_BLUETEAM_NAME "Pagans"
-typedef enum {
+typedef enum
+{
FOOTSTEP_NORMAL,
FOOTSTEP_BOOT,
FOOTSTEP_FLESH,
@@ -107,7 +108,8 @@ typedef enum {
FOOTSTEP_TOTAL
} footstep_t;
-typedef enum {
+typedef enum
+{
IMPACTSOUND_DEFAULT,
IMPACTSOUND_METAL,
IMPACTSOUND_FLESH
@@ -125,39 +127,41 @@ typedef enum {
// when changing animation, set animationTime to frameTime + lerping time
// The current lerp will finish out, then it will lerp to the new animation
-typedef struct {
- int oldFrame;
- int oldFrameTime; // time when ->oldFrame was exactly on
+typedef struct
+{
+ int oldFrame;
+ int oldFrameTime; // time when ->oldFrame was exactly on
- int frame;
- int frameTime; // time when ->frame will be exactly on
+ int frame;
+ int frameTime; // time when ->frame will be exactly on
- float backlerp;
+ float backlerp;
- float yawAngle;
- qboolean yawing;
- float pitchAngle;
- qboolean pitching;
+ float yawAngle;
+ qboolean yawing;
+ float pitchAngle;
+ qboolean pitching;
- int animationNumber; // may include ANIM_TOGGLEBIT
+ int animationNumber; // may include ANIM_TOGGLEBIT
animation_t *animation;
- int animationTime; // time when the first frame of the animation will be exact
+ int animationTime; // time when the first frame of the animation will be exact
} lerpFrame_t;
-typedef struct {
- lerpFrame_t legs, torso, flag;
- int painTime;
- int painDirection; // flip from 0 to 1
- int lightningFiring;
+typedef struct
+{
+ lerpFrame_t legs, torso, flag;
+ int painTime;
+ int painDirection; // flip from 0 to 1
+ int lightningFiring;
// railgun trail spawning
vec3_t railgunImpact;
qboolean railgunFlash;
// machinegun spinning
- float barrelAngle;
- int barrelTime;
+ float barrelAngle;
+ int barrelTime;
qboolean barrelSpinning;
} playerEntity_t;
@@ -167,47 +171,48 @@ typedef struct {
// centity_t have a direct corespondence with gentity_t in the game, but
// only the entityState_t is directly communicated to the cgame
-typedef struct centity_s {
- entityState_t currentState; // from cg.frame
- entityState_t nextState; // from cg.nextFrame, if available
- qboolean interpolate; // true if next is valid to interpolate to
- qboolean currentValid; // true if cg.frame holds this entity
+typedef struct centity_s
+{
+ entityState_t currentState; // from cg.frame
+ entityState_t nextState; // from cg.nextFrame, if available
+ qboolean interpolate; // true if next is valid to interpolate to
+ qboolean currentValid; // true if cg.frame holds this entity
- int muzzleFlashTime; // move to playerEntity?
- int muzzleFlashTime2; // move to playerEntity?
- int muzzleFlashTime3; // move to playerEntity?
- int previousEvent;
- int teleportFlag;
+ int muzzleFlashTime; // move to playerEntity?
+ int muzzleFlashTime2; // move to playerEntity?
+ int muzzleFlashTime3; // move to playerEntity?
+ int previousEvent;
+ int teleportFlag;
- int trailTime; // so missile trails can handle dropped initial packets
- int dustTrailTime;
- int miscTime;
- int snapShotTime; // last time this entity was found in a snapshot
+ int trailTime; // so missile trails can handle dropped initial packets
+ int dustTrailTime;
+ int miscTime;
+ int snapShotTime; // last time this entity was found in a snapshot
- playerEntity_t pe;
+ playerEntity_t pe;
- int errorTime; // decay the error from this time
- vec3_t errorOrigin;
- vec3_t errorAngles;
+ int errorTime; // decay the error from this time
+ vec3_t errorOrigin;
+ vec3_t errorAngles;
- qboolean extrapolated; // false if origin / angles is an interpolation
- vec3_t rawOrigin;
- vec3_t rawAngles;
+ qboolean extrapolated; // false if origin / angles is an interpolation
+ vec3_t rawOrigin;
+ vec3_t rawAngles;
- vec3_t beamEnd;
+ vec3_t beamEnd;
// exact interpolated position of entity on this frame
- vec3_t lerpOrigin;
- vec3_t lerpAngles;
+ vec3_t lerpOrigin;
+ vec3_t lerpAngles;
- lerpFrame_t lerpFrame;
+ lerpFrame_t lerpFrame;
//TA:
- buildableAnimNumber_t buildableAnim; //persistant anim number
- int flamerTime; //limit flameball count
- int poisonTime; //limit poison count
- int firstPoisonTime; //when poison cloud starts
- int jetTime; //limit jet count
+ buildableAnimNumber_t buildableAnim; //persistant anim number
+ int flamerTime; //limit flameball count
+ int poisonTime; //limit poison count
+ int firstPoisonTime; //when poison cloud starts
+ int jetTime; //limit jet count
} centity_t;
@@ -216,18 +221,20 @@ typedef struct centity_s {
// local entities are created as a result of events or predicted actions,
// and live independantly from all server transmitted entities
-typedef struct markPoly_s {
+typedef struct markPoly_s
+{
struct markPoly_s *prevMark, *nextMark;
- int time;
- qhandle_t markShader;
- qboolean alphaFade; // fade alpha instead of rgb
- float color[4];
- poly_t poly;
- polyVert_t verts[MAX_VERTS_ON_POLY];
+ int time;
+ qhandle_t markShader;
+ qboolean alphaFade; // fade alpha instead of rgb
+ float color[ 4 ];
+ poly_t poly;
+ polyVert_t verts[ MAX_VERTS_ON_POLY ];
} markPoly_t;
-typedef enum {
+typedef enum
+{
LE_MARK,
LE_EXPLOSION,
LE_LIGHTNING_BOLT, //wolf trail
@@ -240,77 +247,82 @@ typedef enum {
LE_SCALE_FADE
} leType_t;
-typedef enum {
- LEF_PUFF_DONT_SCALE = 0x0001, // do not scale size over time
- LEF_TUMBLE = 0x0002 // tumble over time, used for ejecting shells
+typedef enum
+{
+ LEF_PUFF_DONT_SCALE = 0x0001, // do not scale size over time
+ LEF_TUMBLE = 0x0002 // tumble over time, used for ejecting shells
} leFlag_t;
-typedef enum {
+typedef enum
+{
LEMT_NONE,
LEMT_BURN,
LEMT_BLOOD,
- LEMT_GREENBLOOD, //TA: when aliens are injured
- LEMT_BANG //TA: human item explosions
+ LEMT_GREENBLOOD, //TA: when aliens are injured
+ LEMT_BANG //TA: human item explosions
} leMarkType_t; // fragment local entities can leave marks on walls
-typedef enum {
+typedef enum
+{
LEBS_NONE,
LEBS_BLOOD,
LEBS_BANG, //TA: human item explosions
LEBS_BRASS
} leBounceSoundType_t; // fragment local entities can make sounds on impacts
-typedef struct localEntity_s {
+typedef struct localEntity_s
+{
struct localEntity_s *prev, *next;
- leType_t leType;
- int leFlags;
+ leType_t leType;
+ int leFlags;
- int startTime;
- int endTime;
- int fadeInTime;
+ int startTime;
+ int endTime;
+ int fadeInTime;
- float lifeRate; // 1.0 / (endTime - startTime)
+ float lifeRate; // 1.0 / (endTime - startTime)
- trajectory_t pos;
- trajectory_t angles;
+ trajectory_t pos;
+ trajectory_t angles;
- float bounceFactor; // 0.0 = no bounce, 1.0 = perfect
+ float bounceFactor; // 0.0 = no bounce, 1.0 = perfect
- float color[4];
+ float color[4];
- float radius;
+ float radius;
- float light;
- vec3_t lightColor;
+ float light;
+ vec3_t lightColor;
- leMarkType_t leMarkType; // mark to leave on fragment impact
- leBounceSoundType_t leBounceSoundType;
+ leMarkType_t leMarkType; // mark to leave on fragment impact
+ leBounceSoundType_t leBounceSoundType;
- refEntity_t refEntity;
+ refEntity_t refEntity;
//TA: random stuff for cg_spriter.c
- vec3_t acceleration;
- float initAlp, finalAlp;
- float initRad, finalRad;
- qboolean overdraw;
- qboolean realLight;
- int sortKey;
+ vec3_t acceleration;
+ float initAlp, finalAlp;
+ float initRad, finalRad;
+ qboolean overdraw;
+ qboolean realLight;
+ int sortKey;
//TA: lightning bolt endpoint entities
- int srcENum, destENum;
- int vOffset;
- int maxRange;
+ int srcENum, destENum;
+ int vOffset;
+ int maxRange;
} localEntity_t;
//======================================================================
-typedef struct {
- int client;
- int score;
- int ping;
- int time;
- int team;
+typedef struct
+{
+ int client;
+ int score;
+ int ping;
+ int time;
+ int team;
} score_t;
// each client has an associated clientInfo_t
@@ -319,56 +331,57 @@ typedef struct {
// this is regenerated each time a client's configstring changes,
// usually as a result of a userinfo (name, model, etc) change
#define MAX_CUSTOM_SOUNDS 32
-typedef struct {
+typedef struct
+{
qboolean infoValid;
- char name[MAX_QPATH];
+ char name[ MAX_QPATH ];
team_t team;
- int botSkill; // 0 = not bot, 1-5 = bot
+ int botSkill; // 0 = not bot, 1-5 = bot
vec3_t color1;
vec3_t color2;
- 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 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 handicap;
+ int wins, losses; // in tourney mode
- int teamTask; // task in teamplay (offence/defence)
- qboolean teamLeader; // true when this is a team leader
+ 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 powerups; // so can display quad/flag status
- int medkitUsageTime;
- int invulnerabilityStartTime;
- int invulnerabilityStopTime;
+ int medkitUsageTime;
+ int invulnerabilityStartTime;
+ int invulnerabilityStopTime;
- int breathPuffTime;
+ int breathPuffTime;
// 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];
- char redTeam[MAX_TEAMNAME];
- char blueTeam[MAX_TEAMNAME];
+ char modelName[ MAX_QPATH ];
+ char skinName[ MAX_QPATH ];
+ char headModelName[ MAX_QPATH ];
+ char headSkinName[ MAX_QPATH ];
+ char redTeam[ MAX_TEAMNAME ];
+ char blueTeam[ MAX_TEAMNAME ];
qboolean deferred;
- qboolean newAnims; // true if using the new mission pack animations
- qboolean fixedlegs; // true if legs yaw is always the same as torso yaw
- qboolean fixedtorso; // true if torso never changes yaw
+ qboolean newAnims; // true if using the new mission pack animations
+ qboolean fixedlegs; // true if legs yaw is always the same as torso yaw
+ qboolean fixedtorso; // true if torso never changes yaw
- vec3_t headOffset; // move head in icon views
- footstep_t footsteps;
- gender_t gender; // from model
+ vec3_t headOffset; // move head in icon views
+ footstep_t footsteps;
+ gender_t gender; // from model
qhandle_t legsModel;
qhandle_t legsSkin;
@@ -381,30 +394,31 @@ typedef struct {
qhandle_t modelIcon;
- animation_t animations[MAX_PLAYER_TOTALANIMATIONS];
+ animation_t animations[ MAX_PLAYER_TOTALANIMATIONS ];
- sfxHandle_t sounds[MAX_CUSTOM_SOUNDS];
+ sfxHandle_t sounds[ MAX_CUSTOM_SOUNDS ];
} clientInfo_t;
// each WP_* weapon enum has an associated weaponInfo_t
// that contains media references necessary to present the
// weapon and its effects
-typedef struct weaponInfo_s {
+typedef struct weaponInfo_s
+{
qboolean registered;
gitem_t *item;
char *humanName;
- qhandle_t handsModel; // the hands don't actually draw, they just position the weapon
+ qhandle_t handsModel; // the hands don't actually draw, they just position the weapon
qhandle_t weaponModel;
qhandle_t barrelModel;
qhandle_t flashModel;
vec3_t weaponMidpoint; // so it will rotate centered instead of by tag
- float flashDlight;
+ float flashDlight;
vec3_t flashDlightColor;
- sfxHandle_t flashSound[4]; // fast firing weapons randomly choose
+ sfxHandle_t flashSound[ 4 ]; // fast firing weapons randomly choose
qhandle_t weaponIcon;
qhandle_t ammoIcon;
@@ -412,39 +426,30 @@ typedef struct weaponInfo_s {
qhandle_t ammoModel;
qhandle_t missileModel;
- sfxHandle_t missileSound;
- void (*missileTrailFunc)( centity_t *, const struct weaponInfo_s *wi );
- float missileDlight;
+ sfxHandle_t missileSound;
+ void (*missileTrailFunc)( centity_t *, const struct weaponInfo_s *wi );
+ float missileDlight;
vec3_t missileDlightColor;
- int missileRenderfx;
+ int missileRenderfx;
- void (*ejectBrassFunc)( centity_t * );
+ void (*ejectBrassFunc)( centity_t * );
- float trailRadius;
- float wiTrailTime;
+ float trailRadius;
+ float wiTrailTime;
- sfxHandle_t readySound;
- sfxHandle_t firingSound;
+ sfxHandle_t readySound;
+ sfxHandle_t firingSound;
qboolean loopFireSound;
} weaponInfo_t;
-typedef struct upgradeInfo_s {
+typedef struct upgradeInfo_s
+{
qboolean registered;
char *humanName;
qhandle_t upgradeIcon;
} upgradeInfo_t;
-
-// each IT_* item has an associated itemInfo_t
-// that constains media references necessary to present the
-// item and its effects
-typedef struct {
- qboolean registered;
- qhandle_t models[MAX_ITEM_MODELS];
- qhandle_t icon;
-} itemInfo_t;
-
typedef struct
{
qboolean looped;
@@ -462,17 +467,6 @@ typedef struct
sound_t sounds[ MAX_BUILDABLE_ANIMATIONS ];
} buildableInfo_t;
-typedef struct {
- int itemNum;
-} powerupInfo_t;
-
-#define MAX_SKULLTRAIL 10
-
-typedef struct {
- vec3_t positions[MAX_SKULLTRAIL];
- int numpositions;
-} skulltrail_t;
-
//TA: smoothing of view for WW transitions
#define MAXSMOOTHS 32
@@ -520,225 +514,226 @@ typedef struct
#define MAX_PREDICTED_EVENTS 16
-typedef struct {
- int clientFrame; // incremented each frame
+typedef struct
+{
+ int clientFrame; // incremented each frame
- int clientNum;
+ int clientNum;
- qboolean demoPlayback;
- qboolean levelShot; // taking a level menu screenshot
- int deferredPlayerLoading;
- qboolean loading; // don't defer players at initial startup
- qboolean intermissionStarted; // don't play voice rewards, because game will end shortly
+ qboolean demoPlayback;
+ qboolean levelShot; // taking a level menu screenshot
+ int deferredPlayerLoading;
+ qboolean loading; // don't defer players at initial startup
+ qboolean intermissionStarted; // don't play voice rewards, because game will end shortly
// there are only one or two snapshot_t that are relevent at a time
- int latestSnapshotNum; // the number of snapshots the client system has received
- int latestSnapshotTime; // the time from latestSnapshotNum, so we don't need to read the snapshot yet
+ int latestSnapshotNum; // the number of snapshots the client system has received
+ int latestSnapshotTime; // the time from latestSnapshotNum, so we don't need to read the snapshot yet
- snapshot_t *snap; // cg.snap->serverTime <= cg.time
- snapshot_t *nextSnap; // cg.nextSnap->serverTime > cg.time, or NULL
- snapshot_t activeSnapshots[2];
+ snapshot_t *snap; // cg.snap->serverTime <= cg.time
+ snapshot_t *nextSnap; // cg.nextSnap->serverTime > cg.time, or NULL
+ snapshot_t activeSnapshots[ 2 ];
- float frameInterpolation; // (float)( cg.time - cg.frame->serverTime ) / (cg.nextFrame->serverTime - cg.frame->serverTime)
+ float frameInterpolation; // (float)( cg.time - cg.frame->serverTime ) /
+ // (cg.nextFrame->serverTime - cg.frame->serverTime)
- qboolean thisFrameTeleport;
- qboolean nextFrameTeleport;
+ qboolean thisFrameTeleport;
+ qboolean nextFrameTeleport;
- int frametime; // cg.time - cg.oldTime
+ int frametime; // cg.time - cg.oldTime
- int time; // this is the time value that the client
- // is rendering at.
- int oldTime; // time at last frame, used for missile trails and prediction checking
+ int time; // this is the time value that the client
+ // is rendering at.
+ int oldTime; // time at last frame, used for missile trails and prediction checking
- int physicsTime; // either cg.snap->time or cg.nextSnap->time
+ int physicsTime; // either cg.snap->time or cg.nextSnap->time
- int timelimitWarnings; // 5 min, 1 min, overtime
- int fraglimitWarnings;
+ int timelimitWarnings; // 5 min, 1 min, overtime
+ int fraglimitWarnings;
- qboolean mapRestart; // set on a map restart to set back the weapon
+ qboolean mapRestart; // set on a map restart to set back the weapon
- qboolean renderingThirdPerson; // during deaths, chasecams, etc
+ qboolean renderingThirdPerson; // during deaths, chasecams, etc
// prediction state
- qboolean hyperspace; // true if prediction has hit a trigger_teleport
+ qboolean hyperspace; // true if prediction has hit a trigger_teleport
playerState_t predictedPlayerState;
- centity_t predictedPlayerEntity;
- qboolean validPPS; // clear until the first call to CG_PredictPlayerState
- int predictedErrorTime;
- vec3_t predictedError;
+ centity_t predictedPlayerEntity;
+ qboolean validPPS; // clear until the first call to CG_PredictPlayerState
+ int predictedErrorTime;
+ vec3_t predictedError;
- int eventSequence;
- int predictableEvents[MAX_PREDICTED_EVENTS];
+ int eventSequence;
+ int predictableEvents[MAX_PREDICTED_EVENTS];
- float stepChange; // for stair up smoothing
- int stepTime;
+ float stepChange; // for stair up smoothing
+ int stepTime;
- float duckChange; // for duck viewheight smoothing
- int duckTime;
+ float duckChange; // for duck viewheight smoothing
+ int duckTime;
- float landChange; // for landing hard
- int landTime;
+ float landChange; // for landing hard
+ int landTime;
// input state sent to server
- int weaponSelect;
+ int weaponSelect;
// auto rotating items
- vec3_t autoAngles;
- vec3_t autoAxis[3];
- vec3_t autoAnglesFast;
- vec3_t autoAxisFast[3];
+ vec3_t autoAngles;
+ vec3_t autoAxis[ 3 ];
+ vec3_t autoAnglesFast;
+ vec3_t autoAxisFast[ 3 ];
// view rendering
- refdef_t refdef;
- vec3_t refdefViewAngles; // will be converted to refdef.viewaxis
+ refdef_t refdef;
+ vec3_t refdefViewAngles; // will be converted to refdef.viewaxis
// zoom key
- qboolean zoomed;
- int zoomTime;
- float zoomSensitivity;
+ qboolean zoomed;
+ int zoomTime;
+ float zoomSensitivity;
// information screen text during loading
- char infoScreenText[MAX_STRING_CHARS];
+ char infoScreenText[ MAX_STRING_CHARS ];
// scoreboard
- int scoresRequestTime;
- int numScores;
- int selectedScore;
- int teamScores[2];
- score_t scores[MAX_CLIENTS];
- qboolean showScores;
- qboolean scoreBoardShowing;
- 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
-
- // skull trails
- skulltrail_t skulltrails[MAX_CLIENTS];
+ int scoresRequestTime;
+ int numScores;
+ int selectedScore;
+ int teamScores[ 2 ];
+ score_t scores[MAX_CLIENTS];
+ qboolean showScores;
+ qboolean scoreBoardShowing;
+ 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
// centerprinting
- int centerPrintTime;
- int centerPrintCharWidth;
- int centerPrintY;
- char centerPrint[1024];
- int centerPrintLines;
+ int centerPrintTime;
+ int centerPrintCharWidth;
+ int centerPrintY;
+ char centerPrint[ 1024 ];
+ int centerPrintLines;
// low ammo warning state
- int lowAmmoWarning; // 1 = low, 2 = empty
+ int lowAmmoWarning; // 1 = low, 2 = empty
// kill timers for carnage reward
- int lastKillTime;
+ int lastKillTime;
// crosshair client ID
- int crosshairClientNum;
- int crosshairClientTime;
+ int crosshairClientNum;
+ int crosshairClientTime;
// powerup active flashing
- int powerupActive;
- int powerupTime;
+ int powerupActive;
+ int powerupTime;
// attacking player
- int attackerTime;
- int voiceTime;
+ int attackerTime;
+ int voiceTime;
// reward medals
- int rewardStack;
- int rewardTime;
- int rewardCount[MAX_REWARDSTACK];
- qhandle_t rewardShader[MAX_REWARDSTACK];
- qhandle_t rewardSound[MAX_REWARDSTACK];
+ int rewardStack;
+ int rewardTime;
+ int rewardCount[ MAX_REWARDSTACK ];
+ qhandle_t rewardShader[ MAX_REWARDSTACK ];
+ qhandle_t rewardSound[ MAX_REWARDSTACK ];
// sound buffer mainly for announcer sounds
- int soundBufferIn;
- int soundBufferOut;
- int soundTime;
- qhandle_t soundBuffer[MAX_SOUNDBUFFER];
+ int soundBufferIn;
+ int soundBufferOut;
+ int soundTime;
+ qhandle_t soundBuffer[ MAX_SOUNDBUFFER ];
// for voice chat buffer
- int voiceChatTime;
- int voiceChatBufferIn;
- int voiceChatBufferOut;
+ int voiceChatTime;
+ int voiceChatBufferIn;
+ int voiceChatBufferOut;
// warmup countdown
- int warmup;
- int warmupCount;
+ int warmup;
+ int warmupCount;
//==========================
- int itemPickup;
- int itemPickupTime;
- int itemPickupBlendTime; // the pulse around the crosshair is timed seperately
+ int itemPickup;
+ int itemPickupTime;
+ int itemPickupBlendTime; // the pulse around the crosshair is timed seperately
- int weaponSelectTime;
- int weaponAnimation;
- int weaponAnimationTime;
+ int weaponSelectTime;
+ int weaponAnimation;
+ int weaponAnimationTime;
// blend blobs
- float damageTime;
- float damageX, damageY, damageValue;
+ float damageTime;
+ float damageX, damageY, damageValue;
// status bar head
- float headYaw;
- float headEndPitch;
- float headEndYaw;
- int headEndTime;
- float headStartPitch;
- float headStartYaw;
- int headStartTime;
+ float headYaw;
+ float headEndPitch;
+ float headEndYaw;
+ int headEndTime;
+ float headStartPitch;
+ float headStartYaw;
+ int headStartTime;
// view movement
- float v_dmg_time;
- float v_dmg_pitch;
- float v_dmg_roll;
+ float v_dmg_time;
+ float v_dmg_pitch;
+ float v_dmg_roll;
- vec3_t kick_angles; // weapon kicks
- vec3_t kick_origin;
+ vec3_t kick_angles; // weapon kicks
+ vec3_t kick_origin;
// temp working variables for player view
- float bobfracsin;
- int bobcycle;
- float xyspeed;
- int nextOrbitTime;
+ float bobfracsin;
+ int bobcycle;
+ float xyspeed;
+ int nextOrbitTime;
// development tool
refEntity_t testModelEntity;
- char testModelName[MAX_QPATH];
- qboolean testGun;
+ char testModelName[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
- qboolean weapon1Firing;
- qboolean weapon2Firing;
+ 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
+ qboolean weapon1Firing;
+ qboolean weapon2Firing;
+ qboolean weapon3Firing;
- vec3_t lastNormal; //TA: view smoothage
- vec3_t lastVangles; //TA: view smoothage
- smooth_t sList[ MAXSMOOTHS ]; //TA: WW smoothing
+ vec3_t lastNormal; //TA: view smoothage
+ vec3_t lastVangles; //TA: view smoothage
+ smooth_t sList[ MAXSMOOTHS ]; //TA: WW smoothing
- int forwardMoveTime; //TA: for struggling
- int rightMoveTime;
- int upMoveTime;
+ int forwardMoveTime; //TA: for struggling
+ int rightMoveTime;
+ int upMoveTime;
- int poisonedTime; //TA: poison cloud
- int firstPoisonedTime; //TA: poison cloud
- int lastRumbleTime; //TA: knocked over time
- vec3_t rumbleVector; //TA: vertical displacement whilst rumbling
- int firstKnockedTime; //TA: knocked over time
- int firstGetUpTime; //TA: getting up time
+ int poisonedTime; //TA: poison cloud
+ int firstPoisonedTime; //TA: poison cloud
+ int lastRumbleTime; //TA: knocked over time
+ vec3_t rumbleVector; //TA: vertical displacement whilst rumbling
+ int firstKnockedTime; //TA: knocked over time
+ int firstGetUpTime; //TA: getting up time
- float charModelFraction; //TA: loading percentages
- float mediaFraction;
- float buildablesFraction;
+ float charModelFraction; //TA: loading percentages
+ float mediaFraction;
+ float buildablesFraction;
- entityPos_t ep;
+ entityPos_t ep;
- int lastBuildAttempt;
+ int lastBuildAttempt;
char consoleText[ MAX_CONSOLE_TEXT ];
consoleLine_t consoleLines[ MAX_CONSOLE_LINES ];
@@ -752,207 +747,122 @@ typedef struct {
// 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;
- qhandle_t charsetProp;
- qhandle_t charsetPropGlow;
- qhandle_t charsetPropB;
- qhandle_t whiteShader;
-
- qhandle_t redCubeModel;
- qhandle_t blueCubeModel;
- qhandle_t redCubeIcon;
- qhandle_t blueCubeIcon;
-
- qhandle_t redFlagModel;
- qhandle_t blueFlagModel;
- qhandle_t neutralFlagModel;
- qhandle_t redFlagShader[3];
- qhandle_t blueFlagShader[3];
- qhandle_t flagShader[4];
- qhandle_t flagPoleModel;
- qhandle_t flagFlapModel;
-
- qhandle_t redFlagFlapSkin;
- qhandle_t blueFlagFlapSkin;
- qhandle_t neutralFlagFlapSkin;
-
- qhandle_t redFlagBaseModel;
- qhandle_t blueFlagBaseModel;
- qhandle_t neutralFlagBaseModel;
-
-#ifdef MISSIONPACK
- qhandle_t overloadBaseModel;
- qhandle_t overloadTargetModel;
- qhandle_t overloadLightsModel;
- qhandle_t overloadEnergyModel;
-
- qhandle_t harvesterModel;
- qhandle_t harvesterRedSkin;
- qhandle_t harvesterBlueSkin;
- qhandle_t harvesterNeutralModel;
-#endif
-
- qhandle_t armorModel;
- qhandle_t armorIcon;
-
- qhandle_t teamStatusBar;
-
- qhandle_t deferShader;
+typedef struct
+{
+ qhandle_t charsetShader;
+ qhandle_t whiteShader;
+
+ qhandle_t deferShader;
// gib explosions
- qhandle_t gibAbdomen;
- qhandle_t gibArm;
- qhandle_t gibChest;
- qhandle_t gibFist;
- qhandle_t gibFoot;
- qhandle_t gibForearm;
- qhandle_t gibIntestine;
- qhandle_t gibLeg;
- qhandle_t gibSkull;
- qhandle_t gibBrain;
-
- qhandle_t metalGib1;
- qhandle_t metalGib2;
- qhandle_t metalGib3;
- qhandle_t metalGib4;
- qhandle_t metalGib5;
- qhandle_t metalGib6;
- qhandle_t metalGib7;
- qhandle_t metalGib8;
-
- qhandle_t gibSpark1;
- qhandle_t gibSpark2;
+ qhandle_t gibAbdomen;
+ qhandle_t gibArm;
+ qhandle_t gibChest;
+ qhandle_t gibFist;
+ qhandle_t gibFoot;
+ qhandle_t gibForearm;
+ qhandle_t gibIntestine;
+ qhandle_t gibLeg;
+ qhandle_t gibSkull;
+ qhandle_t gibBrain;
+
+ qhandle_t metalGib1;
+ qhandle_t metalGib2;
+ qhandle_t metalGib3;
+ qhandle_t metalGib4;
+ qhandle_t metalGib5;
+ qhandle_t metalGib6;
+ qhandle_t metalGib7;
+ qhandle_t metalGib8;
+
+ qhandle_t gibSpark1;
+ qhandle_t gibSpark2;
- qhandle_t smoke2;
+ qhandle_t smoke2;
- qhandle_t machinegunBrassModel;
- qhandle_t shotgunBrassModel;
+ qhandle_t machinegunBrassModel;
+ qhandle_t shotgunBrassModel;
- qhandle_t railRingsShader;
- qhandle_t railCoreShader;
+ qhandle_t lightningShader;
- qhandle_t lightningShader;
+ qhandle_t friendShader;
- qhandle_t friendShader;
+ qhandle_t balloonShader;
+ qhandle_t connectionShader;
- qhandle_t balloonShader;
- qhandle_t connectionShader;
+ qhandle_t selectShader;
+ qhandle_t viewBloodShader;
+ qhandle_t tracerShader;
+ qhandle_t crosshairShader[ NUM_CROSSHAIRS ];
+ qhandle_t backTileShader;
+ qhandle_t noammoShader;
- qhandle_t selectShader;
- qhandle_t viewBloodShader;
- qhandle_t tracerShader;
- qhandle_t crosshairShader[NUM_CROSSHAIRS];
- qhandle_t lagometerShader;
- qhandle_t backTileShader;
- qhandle_t noammoShader;
-
- qhandle_t smokePuffShader;
- qhandle_t smokePuffRageProShader;
- qhandle_t shotgunSmokePuffShader;
- qhandle_t plasmaBallShader;
- qhandle_t waterBubbleShader;
- qhandle_t bloodTrailShader;
+ qhandle_t smokePuffShader;
+ qhandle_t smokePuffRageProShader;
+ qhandle_t shotgunSmokePuffShader;
+ qhandle_t plasmaBallShader;
+ qhandle_t waterBubbleShader;
+ qhandle_t bloodTrailShader;
//TA: extra stuff
- qhandle_t explosionShader;
- qhandle_t greenBloodTrailShader;
- qhandle_t greenBloodMarkShader;
- qhandle_t greenBloodExplosionShader;
- qhandle_t explosionTrailShader;
- qhandle_t poisonCloudShader;
-
- qhandle_t humanNV;
- qhandle_t humanTorch8;
- qhandle_t humanTorch7;
- qhandle_t humanTorch6;
- qhandle_t humanTorch5;
- qhandle_t humanTorch4;
- qhandle_t humanTorch3;
- qhandle_t humanTorch2;
- qhandle_t humanTorch1;
- qhandle_t alienHealth;
-
- qhandle_t flameShader[ 32 ];
- qhandle_t flameExplShader;
- qhandle_t creepShader;
+ qhandle_t explosionShader;
+ qhandle_t greenBloodTrailShader;
+ qhandle_t greenBloodMarkShader;
+ qhandle_t greenBloodExplosionShader;
+ qhandle_t explosionTrailShader;
+ qhandle_t poisonCloudShader;
+
+ qhandle_t flameShader[ 32 ];
+ qhandle_t flameExplShader;
+ qhandle_t creepShader;
- qhandle_t scannerShader;
- qhandle_t scannerBlipShader;
- qhandle_t scannerLineShader;
-
+ qhandle_t scannerShader;
+ qhandle_t scannerBlipShader;
+ qhandle_t scannerLineShader;
- qhandle_t numberShaders[11];
- qhandle_t shadowMarkShader;
+ qhandle_t numberShaders[ 11 ];
- qhandle_t botSkillShaders[5];
+ qhandle_t shadowMarkShader;
// wall mark shaders
- qhandle_t wakeMarkShader;
- qhandle_t bloodMarkShader;
- qhandle_t bulletMarkShader;
- qhandle_t burnMarkShader;
- qhandle_t holeMarkShader;
- qhandle_t energyMarkShader;
-
- // powerup shaders
- qhandle_t quadShader;
- qhandle_t redQuadShader;
- qhandle_t quadWeaponShader;
- qhandle_t invisShader;
- qhandle_t regenShader;
- qhandle_t battleSuitShader;
- qhandle_t battleWeaponShader;
- qhandle_t hastePuffShader;
- qhandle_t redKamikazeShader;
- qhandle_t blueKamikazeShader;
+ qhandle_t wakeMarkShader;
+ qhandle_t bloodMarkShader;
+ qhandle_t bulletMarkShader;
+ qhandle_t burnMarkShader;
+ qhandle_t holeMarkShader;
+ qhandle_t energyMarkShader;
//TA: buildable shaders
- qhandle_t greenBuildShader;
- qhandle_t redBuildShader;
- qhandle_t noPowerShader;
+ qhandle_t greenBuildShader;
+ qhandle_t redBuildShader;
+ qhandle_t noPowerShader;
// weapon effect models
- qhandle_t bulletFlashModel;
- qhandle_t ringFlashModel;
- qhandle_t dishFlashModel;
- qhandle_t lightningExplosionModel;
+ qhandle_t bulletFlashModel;
+ qhandle_t ringFlashModel;
+ qhandle_t dishFlashModel;
+ qhandle_t lightningExplosionModel;
// weapon effect shaders
- qhandle_t railExplosionShader;
- qhandle_t plasmaExplosionShader;
- qhandle_t bulletExplosionShader;
- qhandle_t rocketExplosionShader;
- qhandle_t grenadeExplosionShader;
- qhandle_t bfgExplosionShader;
- qhandle_t bloodExplosionShader;
+ qhandle_t railExplosionShader;
+ qhandle_t plasmaExplosionShader;
+ qhandle_t bulletExplosionShader;
+ qhandle_t rocketExplosionShader;
+ qhandle_t grenadeExplosionShader;
+ qhandle_t bfgExplosionShader;
+ qhandle_t bloodExplosionShader;
// special effects models
- qhandle_t teleportEffectModel;
- qhandle_t teleportEffectShader;
-
- // scoreboard headers
- qhandle_t scoreboardName;
- qhandle_t scoreboardPing;
- qhandle_t scoreboardScore;
- qhandle_t scoreboardTime;
-
- // medals shown during gameplay
- qhandle_t medalImpressive;
- qhandle_t medalExcellent;
- qhandle_t medalGauntlet;
- qhandle_t medalDefend;
- qhandle_t medalAssist;
- qhandle_t medalCapture;
+ qhandle_t teleportEffectModel;
+ qhandle_t teleportEffectShader;
// sounds
- sfxHandle_t quadSound;
sfxHandle_t tracerSound;
sfxHandle_t selectSound;
sfxHandle_t useNothingSound;
sfxHandle_t wearOffSound;
- sfxHandle_t footsteps[FOOTSTEP_TOTAL][4];
+ sfxHandle_t footsteps[ FOOTSTEP_TOTAL ][ 4 ];
sfxHandle_t sfx_lghit;
sfxHandle_t sfx_ric1;
sfxHandle_t sfx_ric2;
@@ -974,31 +884,10 @@ typedef struct {
sfxHandle_t fallSound;
sfxHandle_t jumpPadSound;
- sfxHandle_t oneMinuteSound;
- sfxHandle_t fiveMinuteSound;
- sfxHandle_t suddenDeathSound;
-
- sfxHandle_t threeFragSound;
- sfxHandle_t twoFragSound;
- sfxHandle_t oneFragSound;
-
sfxHandle_t hitSound;
sfxHandle_t hitSoundHighArmor;
sfxHandle_t hitSoundLowArmor;
sfxHandle_t hitTeamSound;
- sfxHandle_t impressiveSound;
- sfxHandle_t excellentSound;
- sfxHandle_t deniedSound;
- sfxHandle_t humiliationSound;
- sfxHandle_t assistSound;
- sfxHandle_t defendSound;
- sfxHandle_t firstImpressiveSound;
- sfxHandle_t firstExcellentSound;
- sfxHandle_t firstHumiliationSound;
-
- sfxHandle_t takenLeadSound;
- sfxHandle_t tiedLeadSound;
- sfxHandle_t lostLeadSound;
sfxHandle_t voteNow;
sfxHandle_t votePassed;
@@ -1008,68 +897,23 @@ typedef struct {
sfxHandle_t watrOutSound;
sfxHandle_t watrUnSound;
- sfxHandle_t flightSound;
- sfxHandle_t medkitSound;
-
sfxHandle_t jetpackDescendSound;
sfxHandle_t jetpackIdleSound;
sfxHandle_t jetpackAscendSound;
- sfxHandle_t weaponHoverSound;
-
- // teamplay sounds
- sfxHandle_t captureAwardSound;
- sfxHandle_t redScoredSound;
- sfxHandle_t blueScoredSound;
- sfxHandle_t redLeadsSound;
- sfxHandle_t blueLeadsSound;
- sfxHandle_t teamsTiedSound;
-
- sfxHandle_t captureYourTeamSound;
- sfxHandle_t captureOpponentSound;
- sfxHandle_t returnYourTeamSound;
- sfxHandle_t returnOpponentSound;
- sfxHandle_t takenYourTeamSound;
- sfxHandle_t takenOpponentSound;
-
- sfxHandle_t redFlagReturnedSound;
- sfxHandle_t blueFlagReturnedSound;
- sfxHandle_t neutralFlagReturnedSound;
- sfxHandle_t enemyTookYourFlagSound;
- sfxHandle_t enemyTookTheFlagSound;
- sfxHandle_t yourTeamTookEnemyFlagSound;
- sfxHandle_t yourTeamTookTheFlagSound;
- sfxHandle_t youHaveFlagSound;
- sfxHandle_t yourBaseIsUnderAttackSound;
- sfxHandle_t holyShitSound;
-
- // tournament sounds
- sfxHandle_t count3Sound;
- sfxHandle_t count2Sound;
- sfxHandle_t count1Sound;
- sfxHandle_t countFightSound;
- sfxHandle_t countPrepareSound;
-
//TA:
sfxHandle_t alienStageTransition;
sfxHandle_t humanStageTransition;
- qhandle_t cursor;
- qhandle_t selectCursor;
- qhandle_t sizeCursor;
+ qhandle_t cursor;
+ qhandle_t selectCursor;
+ qhandle_t sizeCursor;
- sfxHandle_t regenSound;
- sfxHandle_t protectSound;
- sfxHandle_t n_healthSound;
sfxHandle_t hgrenb1aSound;
sfxHandle_t hgrenb2aSound;
- sfxHandle_t wstbimplSound;
- sfxHandle_t wstbimpmSound;
- sfxHandle_t wstbimpdSound;
- sfxHandle_t wstbactvSound;
//TA: for wolf trail effects
- qhandle_t sparkFlareShader;
+ qhandle_t sparkFlareShader;
} cgMedia_t;
@@ -1077,117 +921,103 @@ typedef struct {
// loaded or calculated from the gamestate. It will NOT
// be cleared when a tournement restart is done, allowing
// all clients to begin playing instantly
-typedef struct {
- gameState_t gameState; // gamestate from server
- glconfig_t glconfig; // rendering configuration
- float screenXScale; // derived from glconfig
- float screenYScale;
- float screenXBias;
+typedef struct
+{
+ gameState_t gameState; // gamestate from server
+ glconfig_t glconfig; // rendering configuration
+ float screenXScale; // derived from glconfig
+ float screenYScale;
+ float screenXBias;
- int serverCommandSequence; // reliable command stream counter
- int processedSnapshotNum;// the number of snapshots cgame has requested
+ int serverCommandSequence; // reliable command stream counter
+ int processedSnapshotNum; // the number of snapshots cgame has requested
- qboolean localServer; // detected on startup by checking sv_running
+ qboolean localServer; // detected on startup by checking sv_running
// parsed from serverinfo
- int dmflags;
- int teamflags;
- int fraglimit;
- int capturelimit;
- int timelimit;
- int maxclients;
- char mapname[MAX_QPATH];
- char redTeam[MAX_QPATH];
- char blueTeam[MAX_QPATH];
-
- 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 levelStartTime;
-
- int scores1, scores2; // from configstrings
- int redflag, blueflag; // flag status from configstrings
- int flagStatus;
-
- qboolean newHud;
-
- int alienBuildPoints;
- int alienBuildPointsTotal;
- int humanBuildPoints;
- int humanBuildPointsTotal;
- int humanBuildPointsPowered;
-
- int alienStage;
- int humanStage;
+ int dmflags;
+ int teamflags;
+ int timelimit;
+ int maxclients;
+ char mapname[ MAX_QPATH ];
+
+ 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 levelStartTime;
+
+ int scores1, scores2; // from configstrings
+
+ qboolean newHud;
+
+ int alienBuildPoints;
+ int alienBuildPointsTotal;
+ int humanBuildPoints;
+ int humanBuildPointsTotal;
+ int humanBuildPointsPowered;
+
+ int alienStage;
+ int humanStage;
//
// locally derived information from gamestate
//
- qhandle_t gameModels[MAX_MODELS];
- qhandle_t gameShaders[MAX_SHADERS];
- sfxHandle_t gameSounds[MAX_SOUNDS];
+ qhandle_t gameModels[ MAX_MODELS ];
+ qhandle_t gameShaders[ MAX_SHADERS ];
+ sfxHandle_t gameSounds[ MAX_SOUNDS ];
- int numInlineModels;
- qhandle_t inlineDrawModel[MAX_MODELS];
- vec3_t inlineModelMidpoints[MAX_MODELS];
+ int numInlineModels;
+ qhandle_t inlineDrawModel[ MAX_MODELS ];
+ vec3_t inlineModelMidpoints[ MAX_MODELS ];
- clientInfo_t clientinfo[MAX_CLIENTS];
+ clientInfo_t clientinfo[ MAX_CLIENTS ];
+
//TA: corpse info
- clientInfo_t corpseinfo[MAX_CLIENTS];
+ clientInfo_t corpseinfo[ MAX_CLIENTS ];
// teamchat width is *3 because of embedded color codes
- char teamChatMsgs[TEAMCHAT_HEIGHT][TEAMCHAT_WIDTH*3+1];
- int teamChatMsgTimes[TEAMCHAT_HEIGHT];
- int teamChatPos;
- int teamLastChatPos;
-
- int cursorX;
- int cursorY;
- qboolean eventHandling;
- qboolean mouseCaptured;
- qboolean sizingHud;
- void *capturedItem;
- qhandle_t activeCursor;
-
- // orders
- int currentOrder;
- qboolean orderPending;
- int orderTime;
- int currentVoiceClient;
- int acceptOrderTime;
- int acceptTask;
- int acceptLeader;
- char acceptVoice[MAX_NAME_LENGTH];
+ char teamChatMsgs[ TEAMCHAT_HEIGHT ][ TEAMCHAT_WIDTH * 3 + 1 ];
+ int teamChatMsgTimes[ TEAMCHAT_HEIGHT ];
+ int teamChatPos;
+ int teamLastChatPos;
+
+ int cursorX;
+ int cursorY;
+ qboolean eventHandling;
+ qboolean mouseCaptured;
+ qboolean sizingHud;
+ void *capturedItem;
+ qhandle_t activeCursor;
// media
- cgMedia_t media;
+ cgMedia_t media;
} cgs_t;
//==============================================================================
extern cgs_t cgs;
extern cg_t cg;
-extern centity_t cg_entities[MAX_GENTITIES];
+extern centity_t cg_entities[ MAX_GENTITIES ];
//TA: weapon limit expanded:
//extern weaponInfo_t cg_weapons[MAX_WEAPONS];
-extern weaponInfo_t cg_weapons[32];
+extern weaponInfo_t cg_weapons[ 32 ];
//TA: upgrade infos:
-extern upgradeInfo_t cg_upgrades[32];
-extern itemInfo_t cg_items[MAX_ITEMS];
+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 markPoly_t cg_markPolys[ MAX_MARK_POLYS ];
extern vmCvar_t cg_centertime;
extern vmCvar_t cg_runpitch;
@@ -1300,188 +1130,161 @@ extern vmCvar_t ui_loading;
//
// cg_main.c
//
-const char *CG_ConfigString( int index );
-const char *CG_Argv( int arg );
+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, ... );
+void QDECL CG_Error( const char *msg, ... );
-void CG_StartMusic( void );
+void CG_StartMusic( void );
-void CG_UpdateCvars( void );
+void CG_UpdateCvars( void );
-int CG_CrosshairPlayer( void );
-int CG_LastAttacker( void );
-void CG_LoadMenus(const char *menuFile);
-void CG_KeyEvent(int key, qboolean down);
-void CG_MouseEvent(int x, int y);
-void CG_EventHandling(int type);
-void CG_RankRunFrame( void );
-void CG_SetScoreSelection(void *menu);
-score_t *CG_GetSelectedScore();
-void CG_BuildSpectatorString();
+int CG_CrosshairPlayer( void );
+int CG_LastAttacker( void );
+void CG_LoadMenus( const char *menuFile );
+void CG_KeyEvent( int key, qboolean down );
+void CG_MouseEvent( int x, int y );
+void CG_EventHandling( int type );
+void CG_SetScoreSelection( void *menu );
+void CG_BuildSpectatorString( );
//
// cg_view.c
//
-void CG_TestModel_f (void);
-void CG_TestGun_f (void);
-void CG_TestModelNextFrame_f (void);
-void CG_TestModelPrevFrame_f (void);
-void CG_TestModelNextSkin_f (void);
-void CG_TestModelPrevSkin_f (void);
-void CG_ZoomDown_f( void );
-void CG_ZoomUp_f( void );
-void CG_AddBufferedSound( sfxHandle_t sfx);
-void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView, qboolean demoPlayback );
+void CG_TestModel_f( void );
+void CG_TestGun_f( void );
+void CG_TestModelNextFrame_f( void );
+void CG_TestModelPrevFrame_f( void );
+void CG_TestModelNextSkin_f( void );
+void CG_TestModelPrevSkin_f( void );
+void CG_ZoomDown_f( void );
+void CG_ZoomUp_f( void );
+void CG_AddBufferedSound( sfxHandle_t sfx );
+void CG_DrawActiveFrame( int serverTime, stereoFrame_t stereoView, qboolean demoPlayback );
//
// cg_drawtools.c
//
-void CG_DrawPlane( vec3_t origin, vec3_t down, vec3_t right, qhandle_t shader );
-void CG_AdjustFrom640( float *x, float *y, float *w, float *h );
-void CG_FillRect( float x, float y, float width, float height, const float *color );
-void CG_DrawPic( float x, float y, float width, float height, qhandle_t hShader );
-//TA: draw a pic weighted between two colors. <- hmm me is turning into a yank.
-void CG_DrawFadePic( float x, float y, float width, float height, vec4_t fcolor, vec4_t tcolor, float amount, qhandle_t hShader );
-void CG_DrawString( float x, float y, const char *string,
- float charWidth, float charHeight, const float *modulate );
-
-
-void CG_DrawStringExt( int x, int y, const char *string, const float *setColor,
- qboolean forceColor, qboolean shadow, int charWidth, int charHeight, int maxChars );
-void CG_DrawBigString( int x, int y, const char *s, float alpha );
-void CG_DrawBigStringColor( int x, int y, const char *s, vec4_t color );
-void CG_DrawSmallString( int x, int y, const char *s, float alpha );
-void CG_DrawSmallStringColor( int x, int y, const char *s, vec4_t color );
+void CG_DrawPlane( vec3_t origin, vec3_t down, vec3_t right, qhandle_t shader );
+void CG_AdjustFrom640( float *x, float *y, float *w, float *h );
+void CG_FillRect( float x, float y, float width, float height, const float *color );
+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 );
-int CG_DrawStrlen( const char *str );
+int CG_DrawStrlen( const char *str );
-float *CG_FadeColor( int startMsec, int totalMsec );
-float *CG_TeamColor( int team );
-void CG_TileClear( void );
-void CG_ColorForHealth( vec4_t hcolor );
-void CG_GetColorForHealth( int health, int armor, vec4_t hcolor );
+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 UI_DrawProportionalString( int x, int y, const char* str, int style, vec4_t color );
-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);
+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);
//
// cg_draw.c
//
-extern int sortedTeamPlayers[TEAM_MAXOVERLAY];
+extern int sortedTeamPlayers[ TEAM_MAXOVERLAY ];
extern int numSortedTeamPlayers;
-extern int drawTeamOverlayModificationCount;
-extern char systemChat[256];
-extern char teamChat1[256];
-extern char teamChat2[256];
-
-void CG_AddLagometerFrameInfo( void );
-void CG_AddLagometerSnapshotInfo( snapshot_t *snap );
-void CG_CenterPrint( const char *str, int y, int charWidth );
-void CG_DrawHead( float x, float y, float w, float h, int clientNum, vec3_t headAngles );
-void CG_DrawActive( stereoFrame_t stereoView );
-void CG_DrawFlagModel( float x, float y, float w, float h, int team, qboolean force2D );
-void CG_DrawTeamBackground( int x, int y, int w, int h, float alpha, int team );
-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_SelectPrevPlayer();
-void CG_SelectNextPlayer();
-float CG_GetValue(int ownerDraw);
-qboolean CG_OwnerDrawVisible(int flags);
-void CG_RunMenuScript(char **args);
-void CG_ShowResponseHead();
-void CG_SetPrintString(int type, const char *p);
-void CG_InitTeamChat();
-void CG_GetTeamColor(vec4_t *color);
-const char *CG_GetGameStatusText();
-const char *CG_GetKillerText();
-void CG_Draw3DModel( float x, float y, float w, float h, qhandle_t model, qhandle_t skin, vec3_t origin, vec3_t angles );
-void CG_Text_PaintChar(float x, float y, float width, float height, float scale, float s, float t, float s2, float t2, qhandle_t hShader);
-void CG_CheckOrderPending();
-const char *CG_GameTypeString();
-qboolean CG_YourTeamHasFlag();
-qboolean CG_OtherTeamHasFlag();
-qhandle_t CG_StatusHandle(int task);
-void CG_DrawLoadingScreen( void );
-void CG_UpdateMediaFraction( float newFract );
+extern char systemChat[ 256 ];
+extern char teamChat1[ 256 ];
+extern char teamChat2[ 256 ];
+
+void CG_AddLagometerFrameInfo( void );
+void CG_AddLagometerSnapshotInfo( snapshot_t *snap );
+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 );
+float CG_GetValue(int ownerDraw);
+void CG_RunMenuScript(char **args);
+void CG_SetPrintString( int type, const char *p );
+void CG_InitTeamChat( );
+void CG_GetTeamColor( vec4_t *color );
+const char *CG_GetKillerText();
+void CG_Text_PaintChar( float x, float y, float width, float height, float scale,
+ float s, float t, float s2, float t2, qhandle_t hShader );
+void CG_DrawLoadingScreen( void );
+void CG_UpdateMediaFraction( float newFract );
//
// cg_player.c
//
-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( int clientNum );
+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( int clientNum );
sfxHandle_t CG_CustomSound( int clientNum, const char *soundName );
//
// cg_buildable.c
//
-void CG_GhostBuildable( buildable_t buildable );
-void CG_Buildable( centity_t *cent );
-void CG_InitBuildables( );
+void CG_GhostBuildable( buildable_t buildable );
+void CG_Buildable( centity_t *cent );
+void CG_InitBuildables( );
//
// cg_spriter.c
//
-void CG_Spriter( centity_t *cent );
-void CG_LaunchSprite( const vec3_t p, const vec3_t vel, const vec3_t accel,
- float spread, float bounce,
- float initRad, float finalRad,
- float initAlp, float finalAlp,
- float rotation,
- int startTime, int shaderTime, int duration,
- qhandle_t hShader, qboolean overdraw, qboolean realLight );
+void CG_Spriter( centity_t *cent );
+void CG_LaunchSprite( const vec3_t p, const vec3_t vel, const vec3_t accel,
+ float spread, float bounce,
+ float initRad, float finalRad,
+ float initAlp, float finalAlp,
+ float rotation,
+ int startTime, int shaderTime, int duration,
+ qhandle_t hShader, qboolean overdraw, qboolean realLight );
//
// cg_animmapobj.c
//
-void CG_animMapObj( centity_t *cent );
+void CG_animMapObj( centity_t *cent );
//
// cg_predict.c
//
-void CG_BuildSolidList( void );
-int CG_PointContents( const vec3_t point, int passEntityNum );
-void CG_Trace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
- int skipNumber, int mask );
-void CG_CapTrace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
- int skipNumber, int mask );
-void CG_PredictPlayerState( void );
-void CG_LoadDeferredPlayers( void );
+void CG_BuildSolidList( void );
+int CG_PointContents( const vec3_t point, int passEntityNum );
+void CG_Trace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
+ int skipNumber, int mask );
+void CG_CapTrace( trace_t *result, const vec3_t start, const vec3_t mins, const vec3_t maxs, const vec3_t end,
+ int skipNumber, int mask );
+void CG_PredictPlayerState( void );
+void CG_LoadDeferredPlayers( void );
//
// cg_events.c
//
-void CG_CheckEvents( centity_t *cent );
-const char *CG_PlaceString( int rank );
-void CG_EntityEvent( centity_t *cent, vec3_t position );
-void CG_PainEvent( centity_t *cent, int health );
+void CG_CheckEvents( centity_t *cent );
+void CG_EntityEvent( centity_t *cent, vec3_t position );
+void CG_PainEvent( centity_t *cent, int health );
//
// cg_ents.c
//
-void CG_SetEntitySoundPosition( centity_t *cent );
-void CG_AddPacketEntities( void );
-void CG_Beam( centity_t *cent );
-void CG_AdjustPositionForMover( const vec3_t in, int moverNum, int fromTime, int toTime, vec3_t out );
+void CG_SetEntitySoundPosition( centity_t *cent );
+void CG_AddPacketEntities( void );
+void CG_Beam( centity_t *cent );
+void CG_AdjustPositionForMover( const vec3_t in, int moverNum, int fromTime, int toTime, vec3_t out );
-void CG_PositionEntityOnTag( refEntity_t *entity, const refEntity_t *parent,
- qhandle_t parentModel, char *tagName );
-void CG_PositionRotatedEntityOnTag( refEntity_t *entity, const refEntity_t *parent,
- qhandle_t parentModel, char *tagName );
+void CG_PositionEntityOnTag( refEntity_t *entity, const refEntity_t *parent,
+ qhandle_t parentModel, char *tagName );
+void CG_PositionRotatedEntityOnTag( refEntity_t *entity, const refEntity_t *parent,
+ qhandle_t parentModel, char *tagName );
@@ -1489,159 +1292,145 @@ void CG_PositionRotatedEntityOnTag( refEntity_t *entity, const refEntity_t *pare
//
// cg_weapons.c
//
-void CG_NextWeapon_f( void );
-void CG_PrevWeapon_f( void );
-void CG_Weapon_f( void );
-
-void CG_InitUpgrades( );
-void CG_RegisterUpgrade( int upgradeNum );
-void CG_InitWeapons( );
-void CG_RegisterWeapon( int weaponNum );
-
-void CG_FireWeapon( centity_t *cent, int mode );
-void CG_MissileHitWall( int weapon, int clientNum, vec3_t origin, vec3_t dir, impactSound_t soundType, int damage );
-void CG_Explosion( int clientNum, vec3_t origin, vec3_t dir );
-void CG_MissileHitPlayer( int weapon, vec3_t origin, vec3_t dir, int entityNum, int damage );
-void CG_ShotgunFire( entityState_t *es );
-void CG_Bullet( vec3_t origin, int sourceEntityNum, vec3_t normal, qboolean flesh, int fleshEntityNum );
-void CG_LasGunHit( vec3_t origin, int sourceEntityNum, vec3_t normal, qboolean flesh, int fleshEntityNum );
-
-void CG_RailTrail( vec3_t start, vec3_t end );
-void CG_TeslaTrail( vec3_t start, vec3_t end, int srcENum, int destENum );
-void CG_AlienZap( vec3_t start, vec3_t end, int srcENum, int destENum );
-void CG_GrappleTrail( centity_t *ent, const weaponInfo_t *wi );
-void CG_AddViewWeapon (playerState_t *ps);
-void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent );
-void CG_DrawWeaponSelect( rectDef_t *rect );
-void CG_DrawWeaponSelectText( rectDef_t *rect, float scale, int textStyle );
-
-void CG_OutOfAmmoChange( void ); // should this be in pmove?
+void CG_NextWeapon_f( void );
+void CG_PrevWeapon_f( void );
+void CG_Weapon_f( void );
+
+void CG_InitUpgrades( );
+void CG_RegisterUpgrade( int upgradeNum );
+void CG_InitWeapons( );
+void CG_RegisterWeapon( int weaponNum );
+
+void CG_FireWeapon( centity_t *cent, int mode );
+void CG_MissileHitWall( int weapon, int clientNum, vec3_t origin, vec3_t dir, impactSound_t soundType, int damage );
+void CG_Explosion( int clientNum, vec3_t origin, vec3_t dir );
+void CG_MissileHitPlayer( int weapon, vec3_t origin, vec3_t dir, int entityNum, int damage );
+void CG_Bullet( vec3_t origin, int sourceEntityNum, vec3_t normal, qboolean flesh, int fleshEntityNum );
+void CG_LasGunHit( vec3_t origin, int sourceEntityNum, vec3_t normal, qboolean flesh, int fleshEntityNum );
+
+void CG_TeslaTrail( vec3_t start, vec3_t end, int srcENum, int destENum );
+void CG_AlienZap( vec3_t start, vec3_t end, int srcENum, int destENum );
+void CG_AddViewWeapon (playerState_t *ps);
+void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent );
+void CG_DrawWeaponSelect( rectDef_t *rect );
+void CG_DrawWeaponSelectText( rectDef_t *rect, float scale, int textStyle );
//
// cg_creep.c
//
-void CG_Creep( centity_t *cent );
+void CG_Creep( centity_t *cent );
//
// cg_scanner.c
//
-void CG_Scanner( );
-void CG_AlienSense( );
+void CG_Scanner( );
+void CG_AlienSense( );
//
// cg_marks.c
//
-void CG_InitMarkPolys( void );
-void CG_AddMarks( void );
-void CG_ImpactMark( qhandle_t markShader,
- const vec3_t origin, const vec3_t dir,
- float orientation,
- float r, float g, float b, float a,
- qboolean alphaFade,
- float radius, qboolean temporary );
+void CG_InitMarkPolys( void );
+void CG_AddMarks( void );
+void CG_ImpactMark( qhandle_t markShader,
+ const vec3_t origin, const vec3_t dir,
+ float orientation,
+ float r, float g, float b, float a,
+ qboolean alphaFade,
+ float radius, qboolean temporary );
//
// cg_localents.c
//
-void CG_InitLocalEntities( void );
+void CG_InitLocalEntities( void );
localEntity_t *CG_AllocLocalEntity( void );
-void CG_AddLocalEntities( void );
+void CG_AddLocalEntities( void );
//
// cg_effects.c
//
localEntity_t *CG_SmokePuff( const vec3_t p,
- const vec3_t vel,
- float radius,
- float r, float g, float b, float a,
- float duration,
- int startTime,
- int fadeInTime,
- int leFlags,
- qhandle_t hShader );
-void CG_BubbleTrail( vec3_t start, vec3_t end, float spacing );
-void CG_SpawnEffect( vec3_t org );
-void CG_GibPlayer( vec3_t playerOrigin );
-void CG_BigExplode( vec3_t playerOrigin );
-
-void CG_Bleed( vec3_t origin, int entityNum );
+ const vec3_t vel,
+ float radius,
+ float r, float g, float b, float a,
+ float duration,
+ int startTime,
+ int fadeInTime,
+ int leFlags,
+ qhandle_t hShader );
+void CG_BubbleTrail( vec3_t start, vec3_t end, float spacing );
+void CG_SpawnEffect( vec3_t org );
+void CG_GibPlayer( vec3_t playerOrigin );
+void CG_BigExplode( vec3_t playerOrigin );
+
+void CG_Bleed( vec3_t origin, int entityNum );
localEntity_t *CG_MakeExplosion( vec3_t origin, vec3_t dir,
- qhandle_t hModel, qhandle_t shader, int msec,
- qboolean isSprite );
+ qhandle_t hModel, qhandle_t shader, int msec,
+ qboolean isSprite );
//TA: wolf tesla effect
-void CG_DynamicLightningBolt( qhandle_t shader, vec3_t start, vec3_t pend,
- int numBolts, float maxWidth, qboolean fade,
- float startAlpha, int recursion, int randseed );
+void CG_DynamicLightningBolt( qhandle_t shader, vec3_t start, vec3_t pend,
+ int numBolts, float maxWidth, qboolean fade,
+ float startAlpha, int recursion, int randseed );
// Ridah, trails
//
// cg_trails.c
//
-int CG_AddTrailJunc( int headJuncIndex, qhandle_t shader, int spawnTime,
- int sType, vec3_t pos, int trailLife, float alphaStart,
- float alphaEnd, float startWidth, float endWidth, int flags,
- vec3_t colorStart, vec3_t colorEnd, float sRatio, float animSpeed );
-int CG_AddSparkJunc( int headJuncIndex, qhandle_t shader, vec3_t pos, int trailLife,
- float alphaStart, float alphaEnd, float startWidth, float endWidth );
-int CG_AddSmokeJunc( int headJuncIndex, qhandle_t shader, vec3_t pos, int trailLife,
- float alpha, float startWidth, float endWidth );
-int CG_AddFireJunc( int headJuncIndex, qhandle_t shader, vec3_t pos, int trailLife,
- float alpha, float startWidth, float endWidth );
-void CG_AddTrails( void );
-void CG_ClearTrails( void );
+int CG_AddTrailJunc( int headJuncIndex, qhandle_t shader, int spawnTime,
+ int sType, vec3_t pos, int trailLife, float alphaStart,
+ float alphaEnd, float startWidth, float endWidth, int flags,
+ vec3_t colorStart, vec3_t colorEnd, float sRatio, float animSpeed );
+int CG_AddSparkJunc( int headJuncIndex, qhandle_t shader, vec3_t pos, int trailLife,
+ float alphaStart, float alphaEnd, float startWidth, float endWidth );
+int CG_AddSmokeJunc( int headJuncIndex, qhandle_t shader, vec3_t pos, int trailLife,
+ float alpha, float startWidth, float endWidth );
+int CG_AddFireJunc( int headJuncIndex, qhandle_t shader, vec3_t pos, int trailLife,
+ float alpha, float startWidth, float endWidth );
+void CG_AddTrails( void );
+void CG_ClearTrails( void );
// done.
//
// cg_snapshot.c
//
-void CG_ProcessSnapshots( void );
-
-//
-// cg_scoreboard.c
-//
-qboolean CG_DrawOldScoreboard( void );
-void CG_DrawOldTourneyScoreboard( void );
+void CG_ProcessSnapshots( void );
//
// cg_consolecmds.c
//
-qboolean CG_ConsoleCommand( void );
-void CG_InitConsoleCommands( void );
+qboolean CG_ConsoleCommand( void );
+void CG_InitConsoleCommands( void );
//
// cg_servercmds.c
//
-void CG_ExecuteNewServerCommands( int latestSequence );
-void CG_ParseServerinfo( void );
-void CG_SetConfigValues( void );
-void CG_LoadVoiceChats( void );
-void CG_ShaderStateChanged(void);
-void CG_VoiceChatLocal( int mode, qboolean voiceOnly, int clientNum, int color, const char *cmd );
-void CG_PlayBufferedVoiceChats( void );
+void CG_ExecuteNewServerCommands( int latestSequence );
+void CG_ParseServerinfo( void );
+void CG_SetConfigValues( void );
+void CG_ShaderStateChanged(void);
//
// cg_playerstate.c
//
-void CG_Respawn( void );
-void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops );
-void CG_CheckChangedPredictableEvents( playerState_t *ps );
+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 );
+void CG_InitMemory( void );
+void *CG_Alloc( int size );
+void CG_Free( void *ptr );
+void CG_DefragmentMemory( void );
//
// cg_mp3decoder.c
//
-qboolean S_decodeMP3( char *mp3File, char *wavFile );
+qboolean S_decodeMP3( char *mp3File, char *wavFile );
//===============================================
@@ -1652,197 +1441,184 @@ qboolean S_decodeMP3( char *mp3File, char *wavFile );
// print message on the local console
-void trap_Print( const char *fmt );
+void trap_Print( const char *fmt );
// abort the game
-void trap_Error( const char *fmt );
+void trap_Error( const char *fmt );
// milliseconds should only be used for performance tuning, never
// for anything game related. Get time from the CG_DrawActiveFrame parameter
-int trap_Milliseconds( void );
+int trap_Milliseconds( void );
// console variable interaction
-void trap_Cvar_Register( vmCvar_t *vmCvar, const char *varName, const char *defaultValue, int flags );
-void trap_Cvar_Update( vmCvar_t *vmCvar );
-void trap_Cvar_Set( const char *var_name, const char *value );
-void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize );
+void trap_Cvar_Register( vmCvar_t *vmCvar, const char *varName, const char *defaultValue, int flags );
+void trap_Cvar_Update( vmCvar_t *vmCvar );
+void trap_Cvar_Set( const char *var_name, const char *value );
+void trap_Cvar_VariableStringBuffer( const char *var_name, char *buffer, int bufsize );
// ServerCommand and ConsoleCommand parameter access
-int trap_Argc( void );
-void trap_Argv( int n, char *buffer, int bufferLength );
-void trap_Args( char *buffer, int bufferLength );
+int trap_Argc( void );
+void trap_Argv( int n, char *buffer, int bufferLength );
+void trap_Args( char *buffer, int bufferLength );
// filesystem access
// returns length of file
-int trap_FS_FOpenFile( const char *qpath, fileHandle_t *f, fsMode_t 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 );
+int trap_FS_FOpenFile( const char *qpath, fileHandle_t *f, fsMode_t 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 );
// add commands to the local console as if they were typed in
// for map changing, etc. The command is not executed immediately,
// but will be executed in order the next time console commands
// are processed
-void trap_SendConsoleCommand( const char *text );
+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_AddCommand( const char *cmdName );
// send a string to the server over the network
-void trap_SendClientCommand( const char *s );
+void trap_SendClientCommand( const char *s );
// force a screen update, only used during gamestate load
-void trap_UpdateScreen( void );
+void trap_UpdateScreen( void );
// model collision
-void trap_CM_LoadMap( const char *mapname );
-int trap_CM_NumInlineModels( void );
-clipHandle_t trap_CM_InlineModel( int index ); // 0 = world, 1+ = bmodels
-clipHandle_t trap_CM_TempBoxModel( const vec3_t mins, const vec3_t maxs );
-int trap_CM_PointContents( const vec3_t p, clipHandle_t model );
-int trap_CM_TransformedPointContents( const vec3_t p, clipHandle_t model, const vec3_t origin, const vec3_t angles );
-void trap_CM_BoxTrace( trace_t *results, const vec3_t start, const vec3_t end,
- const vec3_t mins, const vec3_t maxs,
- clipHandle_t model, int brushmask );
-void trap_CM_TransformedBoxTrace( trace_t *results, const vec3_t start, const vec3_t end,
- const vec3_t mins, const vec3_t maxs,
- clipHandle_t model, int brushmask,
- const vec3_t origin, const vec3_t angles );
+void trap_CM_LoadMap( const char *mapname );
+int trap_CM_NumInlineModels( void );
+clipHandle_t trap_CM_InlineModel( int index ); // 0 = world, 1+ = bmodels
+clipHandle_t trap_CM_TempBoxModel( const vec3_t mins, const vec3_t maxs );
+int trap_CM_PointContents( const vec3_t p, clipHandle_t model );
+int trap_CM_TransformedPointContents( const vec3_t p, clipHandle_t model, const vec3_t origin, const vec3_t angles );
+void trap_CM_BoxTrace( trace_t *results, const vec3_t start, const vec3_t end,
+ const vec3_t mins, const vec3_t maxs,
+ clipHandle_t model, int brushmask );
+void trap_CM_TransformedBoxTrace( trace_t *results, const vec3_t start, const vec3_t end,
+ const vec3_t mins, const vec3_t maxs,
+ clipHandle_t model, int brushmask,
+ const vec3_t origin, const vec3_t angles );
// Returns the projection of a polygon onto the solid brushes in the world
-int trap_CM_MarkFragments( int numPoints, const vec3_t *points,
- const vec3_t projection,
- int maxPoints, vec3_t pointBuffer,
- int maxFragments, markFragment_t *fragmentBuffer );
+int trap_CM_MarkFragments( int numPoints, const vec3_t *points,
+ const vec3_t projection,
+ int maxPoints, vec3_t pointBuffer,
+ int maxFragments, markFragment_t *fragmentBuffer );
// normal sounds will have their volume dynamically changed as their entity
// moves and the listener moves
-void trap_S_StartSound( vec3_t origin, int entityNum, int entchannel, sfxHandle_t sfx );
-void trap_S_StopLoopingSound(int entnum);
+void trap_S_StartSound( vec3_t origin, int entityNum, int entchannel, sfxHandle_t sfx );
+void trap_S_StopLoopingSound( int entnum );
// a local sound is always played full volume
-void trap_S_StartLocalSound( sfxHandle_t sfx, int channelNum );
-void trap_S_ClearLoopingSounds( qboolean killall );
-void trap_S_AddLoopingSound( int entityNum, const vec3_t origin, const vec3_t velocity, sfxHandle_t sfx );
-void trap_S_AddRealLoopingSound( int entityNum, const vec3_t origin, const vec3_t velocity, sfxHandle_t sfx );
-void trap_S_UpdateEntityPosition( int entityNum, const vec3_t origin );
+void trap_S_StartLocalSound( sfxHandle_t sfx, int channelNum );
+void trap_S_ClearLoopingSounds( qboolean killall );
+void trap_S_AddLoopingSound( int entityNum, const vec3_t origin, const vec3_t velocity, sfxHandle_t sfx );
+void trap_S_AddRealLoopingSound( int entityNum, const vec3_t origin, const vec3_t velocity, sfxHandle_t sfx );
+void trap_S_UpdateEntityPosition( int entityNum, const vec3_t origin );
// repatialize recalculates the volumes of sound as they should be heard by the
// given entityNum and position
-void trap_S_Respatialize( int entityNum, const vec3_t origin, vec3_t axis[3], int inwater );
-sfxHandle_t trap_S_RegisterSound( const char *sample, qboolean compressed ); // returns buzz if not found
-void trap_S_StartBackgroundTrack( const char *intro, const char *loop ); // empty name stops music
-void trap_S_StopBackgroundTrack( void );
+void trap_S_Respatialize( int entityNum, const vec3_t origin, vec3_t axis[3], int inwater );
+sfxHandle_t trap_S_RegisterSound( const char *sample, qboolean compressed ); // returns buzz if not found
+void trap_S_StartBackgroundTrack( const char *intro, const char *loop ); // empty name stops music
+void trap_S_StopBackgroundTrack( void );
-void trap_R_LoadWorldMap( const char *mapname );
+void trap_R_LoadWorldMap( const char *mapname );
// all media should be registered during level startup to prevent
// hitches during gameplay
-qhandle_t trap_R_RegisterModel( const char *name ); // returns rgb axis if not found
-qhandle_t trap_R_RegisterSkin( const char *name ); // returns all white if not found
-qhandle_t trap_R_RegisterShader( const char *name ); // returns all white if not found
-qhandle_t trap_R_RegisterShaderNoMip( const char *name ); // returns all white if not found
+qhandle_t trap_R_RegisterModel( const char *name ); // returns rgb axis if not found
+qhandle_t trap_R_RegisterSkin( const char *name ); // returns all white if not found
+qhandle_t trap_R_RegisterShader( const char *name ); // returns all white if not found
+qhandle_t trap_R_RegisterShaderNoMip( const char *name ); // returns all white if not found
// a scene is built up by calls to R_ClearScene and the various R_Add functions.
// Nothing is drawn until R_RenderScene is called.
-void trap_R_ClearScene( void );
-void trap_R_AddRefEntityToScene( const refEntity_t *re );
+void trap_R_ClearScene( void );
+void trap_R_AddRefEntityToScene( const refEntity_t *re );
// polys are intended for simple wall marks, not really for doing
// 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 );
-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_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 );
-int trap_R_LerpTag( orientation_t *tag, clipHandle_t mod, int startFrame, int endFrame,
- float frac, const char *tagName );
-void trap_R_RemapShader( const char *oldShader, const char *newShader, const char *timeOffset );
+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 );
+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_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 );
+int trap_R_LerpTag( orientation_t *tag, clipHandle_t mod, int startFrame, int endFrame,
+ float frac, const char *tagName );
+void trap_R_RemapShader( const char *oldShader, const char *newShader, const char *timeOffset );
// The glconfig_t will not change during the life of a cgame.
// If it needs to change, the entire cgame will be restarted, because
// all the qhandle_t are then invalid.
-void trap_GetGlconfig( glconfig_t *glconfig );
+void trap_GetGlconfig( glconfig_t *glconfig );
// the gamestate should be grabbed at startup, and whenever a
// configstring changes
-void trap_GetGameState( gameState_t *gamestate );
+void trap_GetGameState( gameState_t *gamestate );
// cgame will poll each frame to see if a newer snapshot has arrived
// that it is interested in. The time is returned seperately so that
// snapshot latency can be calculated.
-void trap_GetCurrentSnapshotNumber( int *snapshotNumber, int *serverTime );
+void trap_GetCurrentSnapshotNumber( int *snapshotNumber, int *serverTime );
// a snapshot get can fail if the snapshot (or the entties it holds) is so
// old that it has fallen out of the client system queue
-qboolean trap_GetSnapshot( int snapshotNumber, snapshot_t *snapshot );
+qboolean trap_GetSnapshot( int snapshotNumber, snapshot_t *snapshot );
// retrieve a text command from the server stream
// the current snapshot will hold the number of the most recent command
// qfalse can be returned if the client system handled the command
// argc() / argv() can be used to examine the parameters of the command
-qboolean trap_GetServerCommand( int serverCommandNumber );
+qboolean trap_GetServerCommand( int serverCommandNumber );
// returns the most recent command number that can be passed to GetUserCmd
// this will always be at least one higher than the number in the current
// snapshot, and it may be quite a few higher if it is a fast computer on
// a lagged connection
-int trap_GetCurrentCmdNumber( void );
+int trap_GetCurrentCmdNumber( void );
-qboolean trap_GetUserCmd( int cmdNumber, usercmd_t *ucmd );
+qboolean trap_GetUserCmd( int cmdNumber, usercmd_t *ucmd );
// used for the weapon select and zoom
-void trap_SetUserCmdValue( int stateValue, float sensitivityScale );
+void trap_SetUserCmdValue( int stateValue, float sensitivityScale );
// aids for VM testing
-void testPrintInt( char *string, int i );
-void testPrintFloat( char *string, float f );
+void testPrintInt( char *string, int i );
+void testPrintFloat( char *string, float f );
-int trap_MemoryRemaining( void );
-void trap_R_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font);
-qboolean trap_Key_IsDown( int keynum );
-int trap_Key_GetCatcher( void );
-void trap_Key_SetCatcher( int catcher );
-int trap_Key_GetKey( const char *binding );
+int trap_MemoryRemaining( void );
+void trap_R_RegisterFont(const char *fontName, int pointSize, fontInfo_t *font);
+qboolean trap_Key_IsDown( int keynum );
+int trap_Key_GetCatcher( void );
+void trap_Key_SetCatcher( int catcher );
+int trap_Key_GetKey( const char *binding );
-typedef enum {
+typedef enum
+{
SYSTEM_PRINT,
CHAT_PRINT,
TEAMCHAT_PRINT
} q3print_t;
-int trap_CIN_PlayCinematic( const char *arg0, int xpos, int ypos, int width, int height, int bits);
-e_status trap_CIN_StopCinematic(int handle);
-e_status trap_CIN_RunCinematic (int handle);
-void trap_CIN_DrawCinematic (int handle);
-void trap_CIN_SetExtents (int handle, int x, int y, int w, int h);
-
-void trap_SnapVector( float *v );
-
-qboolean trap_loadCamera(const char *name);
-void trap_startCamera(int time);
-qboolean trap_getCameraInfo(int time, vec3_t *origin, vec3_t *angles);
-
-qboolean trap_GetEntityToken( char *buffer, int bufferSize );
-
-void CG_ClearParticles (void);
-void CG_AddParticles (void);
-void CG_ParticleSnow (qhandle_t pshader, vec3_t origin, vec3_t origin2, int turb, float range, int snum);
-void CG_ParticleSmoke (qhandle_t pshader, centity_t *cent);
-void CG_AddParticleShrapnel (localEntity_t *le);
-void CG_ParticleSnowFlurry (qhandle_t pshader, centity_t *cent);
-void CG_ParticleBulletDebris (vec3_t org, vec3_t vel, int duration);
-void CG_ParticleSparks (vec3_t org, vec3_t vel, int duration, float x, float y, float speed);
-void CG_ParticleDust (centity_t *cent, vec3_t origin, vec3_t dir);
-void CG_ParticleMisc (qhandle_t pshader, vec3_t origin, int size, int duration, float alpha);
-void CG_ParticleExplosion (char *animStr, vec3_t origin, vec3_t vel, int duration, int sizeStart, int sizeEnd);
-extern qboolean initparticles;
-int CG_NewParticleArea ( int num );
+int trap_CIN_PlayCinematic( const char *arg0, int xpos, int ypos, int width, int height, int bits );
+e_status trap_CIN_StopCinematic( int handle );
+e_status trap_CIN_RunCinematic( int handle );
+void trap_CIN_DrawCinematic( int handle );
+void trap_CIN_SetExtents( int handle, int x, int y, int w, int h );
+
+void trap_SnapVector( float *v );
+
+qboolean trap_loadCamera( const char *name );
+void trap_startCamera( int time );
+qboolean trap_getCameraInfo( int time, vec3_t *origin, vec3_t *angles );
+
+qboolean trap_GetEntityToken( char *buffer, int bufferSize );
diff --git a/src/cgame/cg_main.c b/src/cgame/cg_main.c
index cf99e93e..e19f67d8 100644
--- a/src/cgame/cg_main.c
+++ b/src/cgame/cg_main.c
@@ -400,18 +400,6 @@ void CG_UpdateCvars( void )
// check for modications here
- // If team overlay is on, ask for updates from the server. If its off,
- // let the server know so we don't receive it
- if( drawTeamOverlayModificationCount != cg_drawTeamOverlay.modificationCount )
- {
- drawTeamOverlayModificationCount = cg_drawTeamOverlay.modificationCount;
-
- if( cg_drawTeamOverlay.integer > 0 )
- trap_Cvar_Set( "teamoverlay", "1" );
- else
- trap_Cvar_Set( "teamoverlay", "0" );
- }
-
// if force model changed
if( forceModelModificationCount != cg_forceModel.modificationCount )
{
@@ -1654,8 +1642,6 @@ void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum )
cg.weaponSelect = WP_NONE;
- cgs.redflag = cgs.blueflag = -1; // For compatibily, default to unset for
- cgs.flagStatus = -1;
// old servers
// get the rendering configuration from the client system
diff --git a/src/cgame/cg_playerstate.c b/src/cgame/cg_playerstate.c
index 1e39ad70..d43f41a8 100644
--- a/src/cgame/cg_playerstate.c
+++ b/src/cgame/cg_playerstate.c
@@ -265,30 +265,6 @@ void CG_CheckLocalSounds( playerState_t *ps, playerState_t *ops )
// reward sounds
reward = qfalse;
-
- // timelimit warnings
- if( cgs.timelimit > 0 )
- {
- int msec;
-
- msec = cg.time - cgs.levelStartTime;
-
- if( !( cg.timelimitWarnings & 4 ) && msec > ( cgs.timelimit * 60 + 2 ) * 1000 )
- {
- cg.timelimitWarnings |= 1 | 2 | 4;
- trap_S_StartLocalSound( cgs.media.suddenDeathSound, CHAN_ANNOUNCER );
- }
- else if( !( cg.timelimitWarnings & 2 ) && msec > ( cgs.timelimit - 1 ) * 60 * 1000 )
- {
- cg.timelimitWarnings |= 1 | 2;
- trap_S_StartLocalSound( cgs.media.oneMinuteSound, CHAN_ANNOUNCER );
- }
- else if( cgs.timelimit > 5 && !( cg.timelimitWarnings & 1 ) && msec > ( cgs.timelimit - 5 ) * 60 * 1000 )
- {
- cg.timelimitWarnings |= 1;
- trap_S_StartLocalSound( cgs.media.fiveMinuteSound, CHAN_ANNOUNCER );
- }
- }
}
diff --git a/src/cgame/cg_predict.c b/src/cgame/cg_predict.c
index fabe1065..6f55f1ce 100644
--- a/src/cgame/cg_predict.c
+++ b/src/cgame/cg_predict.c
@@ -187,32 +187,32 @@ void CG_CapTrace( trace_t *result, const vec3_t start, const vec3_t mins, const
CG_PointContents
================
*/
-int CG_PointContents( const vec3_t point, int passEntityNum ) {
- int i;
+int CG_PointContents( const vec3_t point, int passEntityNum )
+{
+ int i;
entityState_t *ent;
- centity_t *cent;
- clipHandle_t cmodel;
- int contents;
+ centity_t *cent;
+ clipHandle_t cmodel;
+ int contents;
contents = trap_CM_PointContents (point, 0);
- for ( i = 0 ; i < cg_numSolidEntities ; i++ ) {
+ for( i = 0; i < cg_numSolidEntities; i++ )
+ {
cent = cg_solidEntities[ i ];
ent = &cent->currentState;
- if ( ent->number == passEntityNum ) {
+ if( ent->number == passEntityNum )
continue;
- }
- if (ent->solid != SOLID_BMODEL) { // special value for bmodel
+ if( ent->solid != SOLID_BMODEL ) // special value for bmodel
continue;
- }
cmodel = trap_CM_InlineModel( ent->modelindex );
- if ( !cmodel ) {
+
+ if( !cmodel )
continue;
- }
contents |= trap_CM_TransformedPointContents( point, cmodel, ent->origin, ent->angles );
}
diff --git a/src/cgame/cg_public.h b/src/cgame/cg_public.h
index 86318beb..c97b68b9 100644
--- a/src/cgame/cg_public.h
+++ b/src/cgame/cg_public.h
@@ -14,38 +14,40 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
-#define CMD_BACKUP 64
-#define CMD_MASK (CMD_BACKUP - 1)
+#define CMD_BACKUP 64
+#define CMD_MASK (CMD_BACKUP - 1)
// allow a lot of command backups for very fast systems
// multiple commands may be combined into a single packet, so this
// needs to be larger than PACKET_BACKUP
-#define MAX_ENTITIES_IN_SNAPSHOT 256
+#define MAX_ENTITIES_IN_SNAPSHOT 256
// snapshots are a view of the server at a given time
// Snapshots are generated at regular time intervals by the server,
// but they may not be sent if a client's rate level is exceeded, or
// they may be dropped by the network.
-typedef struct {
- int snapFlags; // SNAPFLAG_RATE_DELAYED, etc
- int ping;
+typedef struct
+{
+ int snapFlags; // SNAPFLAG_RATE_DELAYED, etc
+ int ping;
- int serverTime; // server time the message is valid for (in msec)
+ int serverTime; // server time the message is valid for (in msec)
- byte areamask[MAX_MAP_AREA_BYTES]; // portalarea visibility bits
+ byte areamask[ MAX_MAP_AREA_BYTES ]; // portalarea visibility bits
- playerState_t ps; // complete information about the current player at this time
+ playerState_t ps; // complete information about the current player at this time
- int numEntities; // all of the entities that need to be presented
- entityState_t entities[MAX_ENTITIES_IN_SNAPSHOT]; // at the time of this snapshot
+ int numEntities; // all of the entities that need to be presented
+ entityState_t entities[ MAX_ENTITIES_IN_SNAPSHOT ]; // at the time of this snapshot
- int numServerCommands; // text based server commands to execute when this
- int serverCommandSequence; // snapshot becomes current
+ int numServerCommands; // text based server commands to execute when this
+ int serverCommandSequence; // snapshot becomes current
} snapshot_t;
-enum {
+enum
+{
CGAME_EVENT_NONE,
CGAME_EVENT_TEAMMENU,
CGAME_EVENT_SCOREBOARD,
@@ -60,68 +62,69 @@ functions imported from the main executable
==================================================================
*/
-#define CGAME_IMPORT_API_VERSION 4
-
-typedef enum {
- CG_PRINT,
- CG_ERROR,
- CG_MILLISECONDS,
- CG_CVAR_REGISTER,
- CG_CVAR_UPDATE,
- CG_CVAR_SET,
- CG_CVAR_VARIABLESTRINGBUFFER,
- CG_ARGC,
- CG_ARGV,
- CG_ARGS,
- CG_FS_FOPENFILE,
- CG_FS_READ,
- CG_FS_WRITE,
- CG_FS_FCLOSEFILE,
- CG_SENDCONSOLECOMMAND,
- CG_ADDCOMMAND,
- CG_SENDCLIENTCOMMAND,
- CG_UPDATESCREEN,
- CG_CM_LOADMAP,
- CG_CM_NUMINLINEMODELS,
- CG_CM_INLINEMODEL,
- CG_CM_LOADMODEL,
- CG_CM_TEMPBOXMODEL,
- CG_CM_POINTCONTENTS,
- CG_CM_TRANSFORMEDPOINTCONTENTS,
- CG_CM_BOXTRACE,
- CG_CM_TRANSFORMEDBOXTRACE,
- CG_CM_MARKFRAGMENTS,
- CG_S_STARTSOUND,
- CG_S_STARTLOCALSOUND,
- CG_S_CLEARLOOPINGSOUNDS,
- CG_S_ADDLOOPINGSOUND,
- CG_S_UPDATEENTITYPOSITION,
- CG_S_RESPATIALIZE,
- CG_S_REGISTERSOUND,
- CG_S_STARTBACKGROUNDTRACK,
- CG_R_LOADWORLDMAP,
- CG_R_REGISTERMODEL,
- CG_R_REGISTERSKIN,
- CG_R_REGISTERSHADER,
- CG_R_CLEARSCENE,
- CG_R_ADDREFENTITYTOSCENE,
- CG_R_ADDPOLYTOSCENE,
- CG_R_ADDLIGHTTOSCENE,
- CG_R_RENDERSCENE,
- CG_R_SETCOLOR,
- CG_R_DRAWSTRETCHPIC,
- CG_R_MODELBOUNDS,
- CG_R_LERPTAG,
- CG_GETGLCONFIG,
- CG_GETGAMESTATE,
- CG_GETCURRENTSNAPSHOTNUMBER,
- CG_GETSNAPSHOT,
- CG_GETSERVERCOMMAND,
- CG_GETCURRENTCMDNUMBER,
- CG_GETUSERCMD,
- CG_SETUSERCMDVALUE,
- CG_R_REGISTERSHADERNOMIP,
- CG_MEMORY_REMAINING,
+#define CGAME_IMPORT_API_VERSION 4
+
+typedef enum
+{
+ CG_PRINT,
+ CG_ERROR,
+ CG_MILLISECONDS,
+ CG_CVAR_REGISTER,
+ CG_CVAR_UPDATE,
+ CG_CVAR_SET,
+ CG_CVAR_VARIABLESTRINGBUFFER,
+ CG_ARGC,
+ CG_ARGV,
+ CG_ARGS,
+ CG_FS_FOPENFILE,
+ CG_FS_READ,
+ CG_FS_WRITE,
+ CG_FS_FCLOSEFILE,
+ CG_SENDCONSOLECOMMAND,
+ CG_ADDCOMMAND,
+ CG_SENDCLIENTCOMMAND,
+ CG_UPDATESCREEN,
+ CG_CM_LOADMAP,
+ CG_CM_NUMINLINEMODELS,
+ CG_CM_INLINEMODEL,
+ CG_CM_LOADMODEL,
+ CG_CM_TEMPBOXMODEL,
+ CG_CM_POINTCONTENTS,
+ CG_CM_TRANSFORMEDPOINTCONTENTS,
+ CG_CM_BOXTRACE,
+ CG_CM_TRANSFORMEDBOXTRACE,
+ CG_CM_MARKFRAGMENTS,
+ CG_S_STARTSOUND,
+ CG_S_STARTLOCALSOUND,
+ CG_S_CLEARLOOPINGSOUNDS,
+ CG_S_ADDLOOPINGSOUND,
+ CG_S_UPDATEENTITYPOSITION,
+ CG_S_RESPATIALIZE,
+ CG_S_REGISTERSOUND,
+ CG_S_STARTBACKGROUNDTRACK,
+ CG_R_LOADWORLDMAP,
+ CG_R_REGISTERMODEL,
+ CG_R_REGISTERSKIN,
+ CG_R_REGISTERSHADER,
+ CG_R_CLEARSCENE,
+ CG_R_ADDREFENTITYTOSCENE,
+ CG_R_ADDPOLYTOSCENE,
+ CG_R_ADDLIGHTTOSCENE,
+ CG_R_RENDERSCENE,
+ CG_R_SETCOLOR,
+ CG_R_DRAWSTRETCHPIC,
+ CG_R_MODELBOUNDS,
+ CG_R_LERPTAG,
+ CG_GETGLCONFIG,
+ CG_GETGAMESTATE,
+ CG_GETCURRENTSNAPSHOTNUMBER,
+ CG_GETSNAPSHOT,
+ CG_GETSERVERCOMMAND,
+ CG_GETCURRENTCMDNUMBER,
+ CG_GETUSERCMD,
+ CG_SETUSERCMDVALUE,
+ CG_R_REGISTERSHADERNOMIP,
+ CG_MEMORY_REMAINING,
CG_R_REGISTERFONT,
CG_KEY_ISDOWN,
CG_KEY_GETCATCHER,
@@ -154,17 +157,17 @@ typedef enum {
CG_R_ADDPOLYSTOSCENE,
CG_R_INPVS,
- CG_MEMSET = 100,
- CG_MEMCPY,
- CG_STRNCPY,
- CG_SIN,
- CG_COS,
- CG_ATAN2,
- CG_SQRT,
- CG_FLOOR,
- CG_CEIL,
-
- CG_TESTPRINTINT,
+ CG_MEMSET = 100,
+ CG_MEMCPY,
+ CG_STRNCPY,
+ CG_SIN,
+ CG_COS,
+ CG_ATAN2,
+ CG_SQRT,
+ CG_FLOOR,
+ CG_CEIL,
+
+ CG_TESTPRINTINT,
CG_TESTPRINTFLOAT,
CG_ACOS
} cgameImport_t;
@@ -178,45 +181,46 @@ functions exported to the main executable
==================================================================
*/
-typedef enum {
- CG_INIT,
-// void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum )
- // called when the level loads or when the renderer is restarted
- // all media should be registered at this time
- // cgame will display loading status by calling SCR_Update, which
- // will call CG_DrawInformation during the loading process
- // reliableCommandSequence will be 0 on fresh loads, but higher for
- // demos, tourney restarts, or vid_restarts
-
- CG_SHUTDOWN,
-// void (*CG_Shutdown)( void );
- // oportunity to flush and close any open files
-
- CG_CONSOLE_COMMAND,
-// qboolean (*CG_ConsoleCommand)( void );
- // a console command has been issued locally that is not recognized by the
- // main game system.
- // use Cmd_Argc() / Cmd_Argv() to read the command, return qfalse if the
- // command is not known to the game
-
- CG_DRAW_ACTIVE_FRAME,
-// void (*CG_DrawActiveFrame)( int serverTime, stereoFrame_t stereoView, qboolean demoPlayback );
- // Generates and draws a game scene and status information at the given time.
- // If demoPlayback is set, local movement prediction will not be enabled
-
- CG_CROSSHAIR_PLAYER,
-// int (*CG_CrosshairPlayer)( void );
+typedef enum
+{
+ CG_INIT,
+ // void CG_Init( int serverMessageNum, int serverCommandSequence, int clientNum )
+ // called when the level loads or when the renderer is restarted
+ // all media should be registered at this time
+ // cgame will display loading status by calling SCR_Update, which
+ // will call CG_DrawInformation during the loading process
+ // reliableCommandSequence will be 0 on fresh loads, but higher for
+ // demos, tourney restarts, or vid_restarts
+
+ CG_SHUTDOWN,
+ // void (*CG_Shutdown)( void );
+ // oportunity to flush and close any open files
+
+ CG_CONSOLE_COMMAND,
+ // qboolean (*CG_ConsoleCommand)( void );
+ // a console command has been issued locally that is not recognized by the
+ // main game system.
+ // use Cmd_Argc() / Cmd_Argv() to read the command, return qfalse if the
+ // command is not known to the game
+
+ CG_DRAW_ACTIVE_FRAME,
+ // void (*CG_DrawActiveFrame)( int serverTime, stereoFrame_t stereoView, qboolean demoPlayback );
+ // Generates and draws a game scene and status information at the given time.
+ // If demoPlayback is set, local movement prediction will not be enabled
+
+ CG_CROSSHAIR_PLAYER,
+ // int (*CG_CrosshairPlayer)( void );
CG_LAST_ATTACKER,
-// int (*CG_LastAttacker)( void );
+ // int (*CG_LastAttacker)( void );
CG_KEY_EVENT,
-// void (*CG_KeyEvent)( int key, qboolean down );
+ // void (*CG_KeyEvent)( int key, qboolean down );
CG_MOUSE_EVENT,
-// void (*CG_MouseEvent)( int dx, int dy );
+ // void (*CG_MouseEvent)( int dx, int dy );
CG_EVENT_HANDLING
-// void (*CG_EventHandling)(int type);
+ // void (*CG_EventHandling)(int type);
} cgameExport_t;
//----------------------------------------------
diff --git a/src/cgame/cg_servercmds.c b/src/cgame/cg_servercmds.c
index 88df68f2..3af04eda 100644
--- a/src/cgame/cg_servercmds.c
+++ b/src/cgame/cg_servercmds.c
@@ -125,8 +125,6 @@ static void CG_ParseWarmup( void )
if( warmup == 0 && cg.warmup )
{
}
- else if( warmup > 0 && cg.warmup <= 0 )
- trap_S_StartLocalSound( cgs.media.countPrepareSound, CHAN_ANNOUNCER );
cg.warmup = warmup;
}
@@ -475,10 +473,7 @@ static void CG_MapRestart( void )
// play the "fight" sound if this is a restart without warmup
if( cg.warmup == 0 )
- {
- trap_S_StartLocalSound( cgs.media.countFightSound, CHAN_ANNOUNCER );
CG_CenterPrint( "FIGHT!", 120, GIANTCHAR_WIDTH * 2 );
- }
trap_Cvar_Set( "cg_thirdPerson", "0" );
}
diff --git a/src/cgame/cg_weapons.c b/src/cgame/cg_weapons.c
index 91b048e4..e715e544 100644
--- a/src/cgame/cg_weapons.c
+++ b/src/cgame/cg_weapons.c
@@ -333,7 +333,6 @@ void CG_RegisterWeapon( int weaponNum )
MAKERGB( weaponInfo->flashDlightColor, 0.6f, 0.6f, 1.0f );
weaponInfo->flashSound[ 0 ] = trap_S_RegisterSound( "sound/weapons/plasma/hyprbf1a.wav", qfalse );
cgs.media.plasmaExplosionShader = trap_R_RegisterShader( "plasmaExplosion" );
- cgs.media.railRingsShader = trap_R_RegisterShader( "railDisc" );
break;
case WP_LAS_GUN:
@@ -825,6 +824,12 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
cg.weapon2Time = cg.time;
cg.weapon2Firing = ( cg.predictedPlayerState.eFlags & EF_FIRING2 );
}
+
+ if( cg.weapon3Firing != ( cg.predictedPlayerState.eFlags & EF_FIRING3 ) )
+ {
+ cg.weapon3Time = cg.time;
+ cg.weapon3Firing = ( cg.predictedPlayerState.eFlags & EF_FIRING3 );
+ }
}
gun.hModel = weapon->weaponModel;
diff --git a/src/game/bg_pmove.c b/src/game/bg_pmove.c
index cae5470b..b8e3b982 100644
--- a/src/game/bg_pmove.c
+++ b/src/game/bg_pmove.c
@@ -2707,6 +2707,14 @@ void PmoveSingle (pmove_t *pmove)
else
pm->ps->eFlags &= ~EF_FIRING2;
+ // set the firing flag for continuous beam weapons
+ if( !(pm->ps->pm_flags & PMF_RESPAWNED) && pm->ps->pm_type != PM_INTERMISSION &&
+ ( pm->cmd.buttons & BUTTON_USE_HOLDABLE ) &&
+ ( ( ammo > 0 || clips > 0 ) || BG_FindInfinteAmmoForWeapon( pm->ps->weapon ) ) )
+ pm->ps->eFlags |= EF_FIRING3;
+ else
+ pm->ps->eFlags &= ~EF_FIRING3;
+
// clear the respawned flag if attack and use are cleared
if( pm->ps->stats[STAT_HEALTH] > 0 &&
diff --git a/src/game/bg_public.h b/src/game/bg_public.h
index c8341ce1..90e63e07 100644
--- a/src/game/bg_public.h
+++ b/src/game/bg_public.h
@@ -287,13 +287,14 @@ typedef enum
#define EF_NODRAW 0x00000080 // may have an event, but no model (unspawned items)
#define EF_FIRING 0x00000100 // for lightning gun
#define EF_FIRING2 0x00000200 // alt fire
-#define EF_MOVER_STOP 0x00000400 // will push otherwise
-#define EF_TALK 0x00000800 // draw a talk balloon
-#define EF_CONNECTION 0x00001000 // draw a connection trouble sprite
-#define EF_VOTED 0x00002000 // already cast a vote
-#define EF_TEAMVOTED 0x00004000 // already cast a vote
-#define EF_OVERDRAW_OFF 0x00008000 // TA: disable overdraw protection on sprites
-#define EF_REAL_LIGHT 0x00010000 // TA: light sprites according to ambient light
+#define EF_FIRING3 0x00000400 // third fire
+#define EF_MOVER_STOP 0x00000800 // will push otherwise
+#define EF_TALK 0x00001000 // draw a talk balloon
+#define EF_CONNECTION 0x00002000 // draw a connection trouble sprite
+#define EF_VOTED 0x00004000 // already cast a vote
+#define EF_TEAMVOTED 0x00008000 // already cast a vote
+#define EF_OVERDRAW_OFF 0x00010000 // TA: disable overdraw protection on sprites
+#define EF_REAL_LIGHT 0x00020000 // TA: light sprites according to ambient light
typedef enum
{