mirror of
https://github.com/Q3Rally-Team/q3rally.git
synced 2024-11-22 03:51:23 +00:00
Sync CGame with ioquake3
Fix clientNum in engine/code/cgame/cg_players.c Add \n to printf in engine/code/cgame/cg_snapshot.c Misc whitespace and comment syncing to ioq3 in engine/code/cgame/
This commit is contained in:
parent
c55f11d8b9
commit
7f60501f09
18 changed files with 209 additions and 319 deletions
|
@ -738,4 +738,3 @@ void CG_InitConsoleCommands( void ) {
|
|||
trap_AddCommand ("teamtask");
|
||||
trap_AddCommand ("loaddefered"); // spelled wrong, but not changing for demo
|
||||
}
|
||||
|
||||
|
|
|
@ -545,21 +545,18 @@ static void CG_DrawStatusBar( void ) {
|
|||
vec4_t hcolor;
|
||||
vec3_t angles;
|
||||
vec3_t origin;
|
||||
#ifdef MISSIONPACK
|
||||
qhandle_t handle;
|
||||
#endif
|
||||
|
||||
static float colors[4][4] = {
|
||||
// { 0.2, 1.0, 0.2, 1.0 } , { 1.0, 0.2, 0.2, 1.0 }, {0.5, 0.5, 0.5, 1} };
|
||||
{ 1.0f, 0.69f, 0.0f, 1.0f } , // normal
|
||||
{ 1.0f, 0.2f, 0.2f, 1.0f }, // low health
|
||||
{0.5f, 0.5f, 0.5f, 1.0f}, // weapon firing
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f } }; // health > 100
|
||||
{ 1.0f, 0.69f, 0.0f, 1.0f }, // normal
|
||||
{ 1.0f, 0.2f, 0.2f, 1.0f }, // low health
|
||||
{ 0.5f, 0.5f, 0.5f, 1.0f }, // weapon firing
|
||||
{ 1.0f, 1.0f, 1.0f, 1.0f } }; // health > 100
|
||||
|
||||
if ( cg_drawStatus.integer == 0 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// draw the team background
|
||||
CG_DrawTeamBackground( 0, 420, 640, 60, 0.33f, cg.snap->ps.persistant[PERS_TEAM] );
|
||||
|
||||
|
@ -596,20 +593,6 @@ static void CG_DrawStatusBar( void ) {
|
|||
CG_Draw3DModel( 370 + CHAR_WIDTH*3 + TEXT_ICON_SPACE, 432, ICON_SIZE, ICON_SIZE,
|
||||
cgs.media.armorModel, 0, origin, angles );
|
||||
}
|
||||
#ifdef MISSIONPACK
|
||||
if( cgs.gametype == GT_HARVESTER ) {
|
||||
origin[0] = 90;
|
||||
origin[1] = 0;
|
||||
origin[2] = -10;
|
||||
angles[YAW] = ( cg.time & 2047 ) * 360 / 2048.0;
|
||||
if( cg.snap->ps.persistant[PERS_TEAM] == TEAM_BLUE ) {
|
||||
handle = cgs.media.redCubeModel;
|
||||
} else {
|
||||
handle = cgs.media.blueCubeModel;
|
||||
}
|
||||
CG_Draw3DModel( 640 - (TEXT_ICON_SPACE + ICON_SIZE), 416, ICON_SIZE, ICON_SIZE, handle, 0, origin, angles );
|
||||
}
|
||||
#endif
|
||||
//
|
||||
// ammo
|
||||
//
|
||||
|
@ -682,31 +665,7 @@ static void CG_DrawStatusBar( void ) {
|
|||
}
|
||||
|
||||
}
|
||||
#ifdef MISSIONPACK
|
||||
//
|
||||
// cubes
|
||||
//
|
||||
if( cgs.gametype == GT_HARVESTER ) {
|
||||
value = ps->generic1;
|
||||
if( value > 99 ) {
|
||||
value = 99;
|
||||
}
|
||||
trap_R_SetColor( colors[0] );
|
||||
CG_DrawField (640 - (CHAR_WIDTH*2 + TEXT_ICON_SPACE + ICON_SIZE), 432, 2, value);
|
||||
trap_R_SetColor( NULL );
|
||||
// if we didn't draw a 3D icon, draw a 2D icon for armor
|
||||
if ( !cg_draw3dIcons.integer && cg_drawIcons.integer ) {
|
||||
if( cg.snap->ps.persistant[PERS_TEAM] == TEAM_BLUE ) {
|
||||
handle = cgs.media.redCubeIcon;
|
||||
} else {
|
||||
handle = cgs.media.blueCubeIcon;
|
||||
}
|
||||
CG_DrawPic( 640 - (TEXT_ICON_SPACE + ICON_SIZE), 432, ICON_SIZE, ICON_SIZE, handle );
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -1650,9 +1609,9 @@ static float CG_DrawPowerups( float y ) {
|
|||
float size;
|
||||
float f;
|
||||
static float colors[2][4] = {
|
||||
{ 0.2f, 1.0f, 0.2f, 1.0f } ,
|
||||
{ 1.0f, 0.2f, 0.2f, 1.0f }
|
||||
};
|
||||
{ 0.2f, 1.0f, 0.2f, 1.0f } ,
|
||||
{ 1.0f, 0.2f, 0.2f, 1.0f }
|
||||
};
|
||||
|
||||
ps = &cg.snap->ps;
|
||||
|
||||
|
@ -1872,7 +1831,7 @@ static float CG_DrawRallyPowerups( float y ) {
|
|||
|
||||
return y;
|
||||
}
|
||||
#endif
|
||||
#endif // MISSIONPACK
|
||||
// Q3Rally Code END
|
||||
|
||||
|
||||
|
@ -3153,9 +3112,6 @@ static void CG_DrawWarmup( void ) {
|
|||
*/
|
||||
// Q3Rally Code END
|
||||
|
||||
|
||||
|
||||
|
||||
//==================================================================================
|
||||
#ifdef MISSIONPACK
|
||||
/*
|
||||
|
@ -3265,7 +3221,6 @@ static void CG_Draw2D(stereoFrame_t stereoFrame)
|
|||
CG_DrawTeamVote();
|
||||
|
||||
CG_DrawLagometer();
|
||||
|
||||
|
||||
#ifdef MISSIONPACK
|
||||
if (!cg_paused.integer) {
|
||||
|
@ -3358,4 +3313,3 @@ void CG_DrawActive( stereoFrame_t stereoView ) {
|
|||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -458,11 +458,6 @@ void CG_ColorForHealth( vec4_t hcolor ) {
|
|||
}
|
||||
|
||||
|
||||
|
||||
// bk001205 - code below duplicated in q3_ui/ui-atoms.c
|
||||
// bk001205 - FIXME: does this belong in ui_shared.c?
|
||||
// bk001205 - FIXME: HARD_LINKED flags not visible here
|
||||
#ifndef Q3_STATIC // bk001205 - q_shared defines not visible here
|
||||
/*
|
||||
=================
|
||||
UI_DrawProportionalString2
|
||||
|
@ -769,7 +764,7 @@ UI_DrawBannerString
|
|||
static void UI_DrawBannerString2( int x, int y, const char* str, vec4_t color )
|
||||
{
|
||||
const char* s;
|
||||
unsigned char ch; // bk001204 : array subscript
|
||||
unsigned char ch;
|
||||
float ax;
|
||||
float ay;
|
||||
float aw;
|
||||
|
@ -879,7 +874,7 @@ int UI_ProportionalStringWidth( const char* str ) {
|
|||
static void UI_DrawProportionalString2( int x, int y, const char* str, vec4_t color, float sizeScale, qhandle_t charset )
|
||||
{
|
||||
const char* s;
|
||||
unsigned char ch; // bk001204 - unsigned
|
||||
unsigned char ch;
|
||||
float ax;
|
||||
float ay;
|
||||
float aw;
|
||||
|
@ -893,7 +888,7 @@ static void UI_DrawProportionalString2( int x, int y, const char* str, vec4_t co
|
|||
trap_R_SetColor( color );
|
||||
|
||||
ax = x * cgs.screenXScale + cgs.screenXBias;
|
||||
ay = y * cgs.screenXScale;
|
||||
ay = y * cgs.screenYScale;
|
||||
|
||||
s = str;
|
||||
while ( *s )
|
||||
|
@ -994,4 +989,3 @@ void UI_DrawProportionalString( int x, int y, const char* str, int style, vec4_t
|
|||
|
||||
UI_DrawProportionalString2( x, y, str, color, sizeScale, cgs.media.charsetProp );
|
||||
}
|
||||
#endif // Q3STATIC
|
||||
|
|
|
@ -132,7 +132,7 @@ static void CG_EntityEffects( centity_t *cent ) {
|
|||
CG_SetEntitySoundPosition( cent );
|
||||
|
||||
// add loop sound
|
||||
if ( cent->currentState.loopSound) {
|
||||
if ( cent->currentState.loopSound ) {
|
||||
if (cent->currentState.eType != ET_SPEAKER) {
|
||||
trap_S_AddLoopingSound( cent->currentState.number, cent->lerpOrigin, vec3_origin,
|
||||
cgs.gameSounds[ cent->currentState.loopSound ] );
|
||||
|
@ -144,7 +144,7 @@ static void CG_EntityEffects( centity_t *cent ) {
|
|||
else {
|
||||
trap_S_StopLoopingSound(cent->currentState.number);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// constant light glow
|
||||
if(cent->currentState.constantLight)
|
||||
|
@ -529,15 +529,14 @@ static void CG_Missile( centity_t *cent ) {
|
|||
return;
|
||||
}
|
||||
|
||||
if ( cent->currentState.weapon == WP_FLAME_THROWER ) {
|
||||
ent.reType = RT_SPRITE;
|
||||
ent.radius = 32;
|
||||
ent.rotation = 0;
|
||||
ent.customShader = cgs.media.flameBallShader;
|
||||
trap_R_AddRefEntityToScene( &ent );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( cent->currentState.weapon == WP_FLAME_THROWER ) {
|
||||
ent.reType = RT_SPRITE;
|
||||
ent.radius = 32;
|
||||
ent.rotation = 0;
|
||||
ent.customShader = cgs.media.flameBallShader;
|
||||
trap_R_AddRefEntityToScene( &ent );
|
||||
return;
|
||||
}
|
||||
|
||||
// Q3Rally Code Start
|
||||
if (cent->currentState.weapon == RWP_MINE){
|
||||
|
@ -1179,16 +1178,16 @@ void CG_AddCEntity( centity_t *cent ) {
|
|||
break;
|
||||
// Q3Rally Code Start
|
||||
case ET_BREAKGLASS:
|
||||
CG_Mover( cent );
|
||||
break;
|
||||
case ET_BREAKWOOD:
|
||||
CG_Mover( cent );
|
||||
break;
|
||||
case ET_BREAKMETAL:
|
||||
CG_Mover( cent );
|
||||
break;
|
||||
CG_Mover( cent );
|
||||
break;
|
||||
case ET_BREAKWOOD:
|
||||
CG_Mover( cent );
|
||||
break;
|
||||
case ET_BREAKMETAL:
|
||||
CG_Mover( cent );
|
||||
break;
|
||||
// Q3Rally Code END
|
||||
case ET_BEAM:
|
||||
case ET_BEAM:
|
||||
CG_Beam( cent );
|
||||
break;
|
||||
case ET_PORTAL:
|
||||
|
|
|
@ -26,7 +26,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "cg_local.h"
|
||||
|
||||
// for the voice chats
|
||||
#ifdef MISSIONPACK // bk001205
|
||||
#ifdef MISSIONPACK
|
||||
#include "../../ui/menudef.h"
|
||||
#endif
|
||||
//==========================================================================
|
||||
|
@ -247,8 +247,8 @@ static void CG_Obituary( entityState_t *ent ) {
|
|||
message = "should have used a smaller gun";
|
||||
break;
|
||||
case MOD_FLAME_THROWER:
|
||||
message = "was flame grilled by";
|
||||
break;
|
||||
message = "was flame grilled by";
|
||||
break;
|
||||
#ifdef MISSIONPACK
|
||||
case MOD_PROXIMITY_MINE:
|
||||
if( gender == GENDER_FEMALE ) {
|
||||
|
@ -1091,7 +1091,6 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
}
|
||||
break;
|
||||
|
||||
|
||||
#ifdef MISSIONPACK
|
||||
case EV_PROXIMITY_MINE_STICK:
|
||||
DEBUGNAME("EV_PROXIMITY_MINE_STICK");
|
||||
|
@ -1325,7 +1324,6 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
}
|
||||
|
||||
case EV_PAIN:
|
||||
|
||||
// local player sounds are triggered in CG_CheckLocalSounds,
|
||||
// so ignore events on the player
|
||||
DEBUGNAME("EV_PAIN");
|
||||
|
@ -1417,8 +1415,6 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
// Q3Rally Code END
|
||||
break;
|
||||
|
||||
|
||||
|
||||
case EV_STOPLOOPINGSOUND:
|
||||
DEBUGNAME("EV_STOPLOOPINGSOUND");
|
||||
trap_S_StopLoopingSound( es->number );
|
||||
|
@ -1518,6 +1514,7 @@ void CG_EntityEvent( centity_t *cent, vec3_t position ) {
|
|||
CG_Error( "Unknown event: %i", event );
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -822,8 +822,8 @@ typedef struct {
|
|||
qhandle_t charsetPropB;
|
||||
qhandle_t whiteShader;
|
||||
// Q3Rally Code Start
|
||||
qhandle_t flameBallShader;
|
||||
qhandle_t flameExplosionShader;
|
||||
qhandle_t flameBallShader;
|
||||
qhandle_t flameExplosionShader;
|
||||
// Q3Rally Code END
|
||||
|
||||
#ifdef MISSIONPACK
|
||||
|
@ -973,17 +973,17 @@ typedef struct {
|
|||
qhandle_t waterBubbleShader;
|
||||
qhandle_t bloodTrailShader;
|
||||
// Q3Rally Code Start
|
||||
qhandle_t glass01;
|
||||
qhandle_t glass02;
|
||||
qhandle_t glass03;
|
||||
qhandle_t glass01;
|
||||
qhandle_t glass02;
|
||||
qhandle_t glass03;
|
||||
|
||||
qhandle_t wood01;
|
||||
qhandle_t wood02;
|
||||
qhandle_t wood03;
|
||||
qhandle_t wood01;
|
||||
qhandle_t wood02;
|
||||
qhandle_t wood03;
|
||||
|
||||
qhandle_t metal01;
|
||||
qhandle_t metal02;
|
||||
qhandle_t metal03;
|
||||
qhandle_t metal01;
|
||||
qhandle_t metal02;
|
||||
qhandle_t metal03;
|
||||
// Q3Rally Code END
|
||||
|
||||
#ifdef MISSIONPACK
|
||||
|
|
|
@ -419,7 +419,6 @@ static cvarTable_t cvarTable[] = {
|
|||
{ &cg_smoothClients, "cg_smoothClients", "0", CVAR_USERINFO | CVAR_ARCHIVE},
|
||||
{ &cg_cameraMode, "com_cameraMode", "0", CVAR_CHEAT},
|
||||
|
||||
|
||||
{ &pmove_fixed, "pmove_fixed", "0", CVAR_SYSTEMINFO},
|
||||
{ &pmove_msec, "pmove_msec", "8", CVAR_SYSTEMINFO},
|
||||
#ifdef MISSIONPACK
|
||||
|
@ -431,7 +430,7 @@ static cvarTable_t cvarTable[] = {
|
|||
{ &cg_oldRail, "cg_oldRail", "1", CVAR_ARCHIVE},
|
||||
{ &cg_oldRocket, "cg_oldRocket", "1", CVAR_ARCHIVE},
|
||||
{ &cg_oldPlasma, "cg_oldPlasma", "1", CVAR_ARCHIVE},
|
||||
{ &cg_trueLightning, "cg_trueLightning", "0.0", CVAR_ARCHIVE},
|
||||
{ &cg_trueLightning, "cg_trueLightning", "0.0", CVAR_ARCHIVE}
|
||||
// { &cg_pmove_fixed, "cg_pmove_fixed", "0", CVAR_USERINFO | CVAR_ARCHIVE }
|
||||
};
|
||||
|
||||
|
@ -559,9 +558,6 @@ void QDECL CG_Error( const char *msg, ... ) {
|
|||
trap_Error( text );
|
||||
}
|
||||
|
||||
#ifndef CGAME_HARD_LINKED
|
||||
// this is only here so the functions in q_shared.c and bg_*.c can link (FIXME)
|
||||
|
||||
void QDECL Com_Error( int level, const char *error, ... ) {
|
||||
va_list argptr;
|
||||
char text[1024];
|
||||
|
@ -584,8 +580,6 @@ void QDECL Com_Printf( const char *msg, ... ) {
|
|||
trap_Print( text );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
================
|
||||
CG_Argv
|
||||
|
|
|
@ -21,7 +21,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
===========================================================================
|
||||
*/
|
||||
|
||||
#ifndef MISSIONPACK // bk001204
|
||||
#ifndef MISSIONPACK
|
||||
#error This file not be used for classic Q3A.
|
||||
#endif
|
||||
|
||||
|
@ -41,7 +41,7 @@ int drawTeamOverlayModificationCount = -1;
|
|||
//static char teamChat1[256];
|
||||
//static char teamChat2[256];
|
||||
|
||||
void CG_InitTeamChat() {
|
||||
void CG_InitTeamChat(void) {
|
||||
memset(teamChat1, 0, sizeof(teamChat1));
|
||||
memset(teamChat2, 0, sizeof(teamChat2));
|
||||
memset(systemChat, 0, sizeof(systemChat));
|
||||
|
@ -56,7 +56,7 @@ void CG_SetPrintString(int type, const char *p) {
|
|||
}
|
||||
}
|
||||
|
||||
void CG_CheckOrderPending() {
|
||||
void CG_CheckOrderPending(void) {
|
||||
if (cgs.gametype < GT_CTF) {
|
||||
return;
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ void CG_CheckOrderPending() {
|
|||
}
|
||||
}
|
||||
|
||||
static void CG_SetSelectedPlayerName() {
|
||||
static void CG_SetSelectedPlayerName( void ) {
|
||||
if (cg_currentSelectedPlayer.integer >= 0 && cg_currentSelectedPlayer.integer < numSortedTeamPlayers) {
|
||||
clientInfo_t *ci = cgs.clientinfo + sortedTeamPlayers[cg_currentSelectedPlayer.integer];
|
||||
if (ci) {
|
||||
|
@ -132,14 +132,14 @@ static void CG_SetSelectedPlayerName() {
|
|||
trap_Cvar_Set("cg_selectedPlayerName", "Everyone");
|
||||
}
|
||||
}
|
||||
int CG_GetSelectedPlayer() {
|
||||
int CG_GetSelectedPlayer( void ) {
|
||||
if (cg_currentSelectedPlayer.integer < 0 || cg_currentSelectedPlayer.integer >= numSortedTeamPlayers) {
|
||||
cg_currentSelectedPlayer.integer = 0;
|
||||
}
|
||||
return cg_currentSelectedPlayer.integer;
|
||||
}
|
||||
|
||||
void CG_SelectNextPlayer() {
|
||||
void CG_SelectNextPlayer( void ) {
|
||||
CG_CheckOrderPending();
|
||||
if (cg_currentSelectedPlayer.integer >= 0 && cg_currentSelectedPlayer.integer < numSortedTeamPlayers) {
|
||||
cg_currentSelectedPlayer.integer++;
|
||||
|
@ -149,7 +149,7 @@ void CG_SelectNextPlayer() {
|
|||
CG_SetSelectedPlayerName();
|
||||
}
|
||||
|
||||
void CG_SelectPrevPlayer() {
|
||||
void CG_SelectPrevPlayer( void ) {
|
||||
CG_CheckOrderPending();
|
||||
if (cg_currentSelectedPlayer.integer > 0 && cg_currentSelectedPlayer.integer < numSortedTeamPlayers) {
|
||||
cg_currentSelectedPlayer.integer--;
|
||||
|
@ -168,22 +168,21 @@ static void CG_DrawPlayerArmorIcon( rectDef_t *rect, qboolean draw2D ) {
|
|||
return;
|
||||
}
|
||||
|
||||
if ( draw2D || !cg_draw3dIcons.integer && cg_drawIcons.integer ) {
|
||||
if ( draw2D || ( !cg_draw3dIcons.integer && cg_drawIcons.integer) ) {
|
||||
CG_DrawPic( rect->x, rect->y + rect->h/2 + 1, rect->w, rect->h, cgs.media.armorIcon );
|
||||
} else if (cg_draw3dIcons.integer) {
|
||||
VectorClear( angles );
|
||||
origin[0] = 90;
|
||||
origin[1] = 0;
|
||||
origin[2] = -10;
|
||||
angles[YAW] = ( cg.time & 2047 ) * 360 / 2048.0;
|
||||
|
||||
angles[YAW] = ( cg.time & 2047 ) * 360 / 2048.0f;
|
||||
CG_Draw3DModel( rect->x, rect->y, rect->w, rect->h, cgs.media.armorModel, 0, origin, angles );
|
||||
}
|
||||
}
|
||||
|
||||
static void CG_DrawPlayerArmorValue(rectDef_t *rect, float scale, vec4_t color, qhandle_t shader, int textStyle) {
|
||||
char num[16];
|
||||
int value;
|
||||
int value;
|
||||
playerState_t *ps;
|
||||
|
||||
ps = &cg.snap->ps;
|
||||
|
@ -208,7 +207,7 @@ static void CG_DrawPlayerAmmoIcon( rectDef_t *rect, qboolean draw2D ) {
|
|||
|
||||
cent = &cg_entities[cg.snap->ps.clientNum];
|
||||
|
||||
if ( draw2D || !cg_draw3dIcons.integer && cg_drawIcons.integer ) {
|
||||
if ( draw2D || (!cg_draw3dIcons.integer && cg_drawIcons.integer) ) {
|
||||
qhandle_t icon;
|
||||
icon = cg_weapons[ cg.predictedPlayerState.weapon ].ammoIcon;
|
||||
if ( icon ) {
|
||||
|
@ -792,6 +791,10 @@ static void CG_OneFlagStatus(rectDef_t *rect) {
|
|||
|
||||
static void CG_DrawCTFPowerUp(rectDef_t *rect) {
|
||||
int value;
|
||||
|
||||
if (cgs.gametype < GT_CTF) {
|
||||
return;
|
||||
}
|
||||
value = cg.snap->ps.stats[STAT_PERSISTANT_POWERUP];
|
||||
if ( value ) {
|
||||
CG_RegisterItemVisuals( value );
|
||||
|
@ -935,7 +938,7 @@ float CG_GetValue(int ownerDraw) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
qboolean CG_OtherTeamHasFlag() {
|
||||
qboolean CG_OtherTeamHasFlag(void) {
|
||||
if (cgs.gametype == GT_CTF || cgs.gametype == GT_1FCTF) {
|
||||
int team = cg.snap->ps.persistant[PERS_TEAM];
|
||||
if (cgs.gametype == GT_1FCTF) {
|
||||
|
@ -959,7 +962,7 @@ qboolean CG_OtherTeamHasFlag() {
|
|||
return qfalse;
|
||||
}
|
||||
|
||||
qboolean CG_YourTeamHasFlag() {
|
||||
qboolean CG_YourTeamHasFlag(void) {
|
||||
if (cgs.gametype == GT_CTF || cgs.gametype == GT_1FCTF) {
|
||||
int team = cg.snap->ps.persistant[PERS_TEAM];
|
||||
if (cgs.gametype == GT_1FCTF) {
|
||||
|
@ -1061,7 +1064,7 @@ qboolean CG_OwnerDrawVisible(int flags) {
|
|||
}
|
||||
|
||||
if (flags & CG_SHOW_HEALTHOK) {
|
||||
if (cg.snap->ps.stats[STAT_HEALTH] > 25) {
|
||||
if (cg.snap->ps.stats[STAT_HEALTH] >= 25) {
|
||||
return qtrue;
|
||||
}
|
||||
}
|
||||
|
@ -1114,7 +1117,7 @@ static void CG_DrawAreaChat(rectDef_t *rect, float scale, vec4_t color, qhandle_
|
|||
CG_Text_Paint(rect->x, rect->y + rect->h, scale, color, teamChat2, 0, 0, 0);
|
||||
}
|
||||
|
||||
const char *CG_GetKillerText() {
|
||||
const char *CG_GetKillerText(void) {
|
||||
const char *s = "";
|
||||
if ( cg.killerName[0] ) {
|
||||
s = va("Fragged by %s", cg.killerName );
|
||||
|
@ -1150,7 +1153,7 @@ static void CG_Draw2ndPlace(rectDef_t *rect, float scale, vec4_t color, qhandle_
|
|||
}
|
||||
}
|
||||
|
||||
const char *CG_GetGameStatusText() {
|
||||
const char *CG_GetGameStatusText(void) {
|
||||
const char *s = "";
|
||||
if ( cgs.gametype < GT_TEAM) {
|
||||
if (cg.snap->ps.persistant[PERS_TEAM] != TEAM_SPECTATOR ) {
|
||||
|
@ -1197,7 +1200,7 @@ static void CG_DrawGameStatus(rectDef_t *rect, float scale, vec4_t color, qhandl
|
|||
CG_Text_Paint(rect->x, rect->y + rect->h, scale, color, CG_GetGameStatusText(), 0, 0, textStyle);
|
||||
}
|
||||
|
||||
const char *CG_GameTypeString() {
|
||||
const char *CG_GameTypeString(void) {
|
||||
if ( cgs.gametype == GT_FFA ) {
|
||||
return "Free For All";
|
||||
} else if ( cgs.gametype == GT_TEAM ) {
|
||||
|
@ -1222,7 +1225,7 @@ static void CG_Text_Paint_Limit(float *maxX, float x, float y, float scale, vec4
|
|||
vec4_t newColor;
|
||||
glyphInfo_t *glyph;
|
||||
if (text) {
|
||||
const char *s = text;
|
||||
const char *s = text;
|
||||
float max = *maxX;
|
||||
float useScale;
|
||||
fontInfo_t *font = &cgDC.Assets.textFont;
|
||||
|
@ -1749,7 +1752,7 @@ CG_HideTeamMenus
|
|||
==================
|
||||
|
||||
*/
|
||||
void CG_HideTeamMenu() {
|
||||
void CG_HideTeamMenu( void ) {
|
||||
Menus_CloseByName("teamMenu");
|
||||
Menus_CloseByName("getMenu");
|
||||
}
|
||||
|
@ -1760,7 +1763,7 @@ CG_ShowTeamMenus
|
|||
==================
|
||||
|
||||
*/
|
||||
void CG_ShowTeamMenu() {
|
||||
void CG_ShowTeamMenu( void ) {
|
||||
Menus_OpenByName("teamMenu");
|
||||
}
|
||||
|
||||
|
@ -1830,7 +1833,7 @@ int CG_ClientNumFromName(const char *p) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
void CG_ShowResponseHead() {
|
||||
void CG_ShowResponseHead(void) {
|
||||
Menus_OpenByName("voiceMenu");
|
||||
trap_Cvar_Set("cl_conXOffset", "72");
|
||||
cg.voiceTime = cg.time;
|
||||
|
@ -1842,17 +1845,17 @@ void CG_RunMenuScript(char **args) {
|
|||
|
||||
void CG_GetTeamColor(vec4_t *color) {
|
||||
if (cg.snap->ps.persistant[PERS_TEAM] == TEAM_RED) {
|
||||
(*color)[0] = 1;
|
||||
(*color)[3] = .25f;
|
||||
(*color)[1] = (*color)[2] = 0;
|
||||
(*color)[0] = 1.0f;
|
||||
(*color)[3] = 0.25f;
|
||||
(*color)[1] = (*color)[2] = 0.0f;
|
||||
} else if (cg.snap->ps.persistant[PERS_TEAM] == TEAM_BLUE) {
|
||||
(*color)[0] = (*color)[1] = 0;
|
||||
(*color)[2] = 1;
|
||||
(*color)[3] = .25f;
|
||||
(*color)[0] = (*color)[1] = 0.0f;
|
||||
(*color)[2] = 1.0f;
|
||||
(*color)[3] = 0.25f;
|
||||
} else {
|
||||
(*color)[0] = (*color)[2] = 0;
|
||||
(*color)[1] = .17f;
|
||||
(*color)[3] = .25f;
|
||||
(*color)[0] = (*color)[2] = 0.0f;
|
||||
(*color)[1] = 0.17f;
|
||||
(*color)[3] = 0.25f;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ 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 Foobar; if not, write to the Free Software
|
||||
along with Quake III Arena source code; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
|
|
@ -48,6 +48,7 @@ char *cg_customSoundNames[MAX_CUSTOM_SOUNDS] = {
|
|||
"*pain50_1.wav",
|
||||
"*pain75_1.wav",
|
||||
"*pain100_1.wav",
|
||||
"*falling1.wav",
|
||||
"*gasp.wav",
|
||||
"*drown.wav",
|
||||
"*fall1.wav",
|
||||
|
@ -126,6 +127,7 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
|
|||
}
|
||||
if ( len >= sizeof( text ) - 1 ) {
|
||||
CG_Printf( "File %s too long\n", filename );
|
||||
trap_FS_FCloseFile( f );
|
||||
return qfalse;
|
||||
}
|
||||
trap_FS_Read( text, len, f );
|
||||
|
@ -204,6 +206,7 @@ static qboolean CG_ParseAnimationFile( const char *filename, clientInfo_t *ci )
|
|||
}
|
||||
if ( len >= sizeof( text ) - 1 ) {
|
||||
CG_Printf( "File %s too long\n", filename );
|
||||
trap_FS_FCloseFile( f );
|
||||
return qfalse;
|
||||
}
|
||||
trap_FS_Read( text, len, f );
|
||||
|
@ -399,7 +402,7 @@ CG_FileExists
|
|||
static qboolean CG_FileExists(const char *filename) {
|
||||
int len;
|
||||
|
||||
len = trap_FS_FOpenFile( filename, 0, FS_READ );
|
||||
len = trap_FS_FOpenFile( filename, NULL, FS_READ );
|
||||
if (len>0) {
|
||||
return qtrue;
|
||||
}
|
||||
|
@ -934,11 +937,10 @@ Load it now, taking the disk hits.
|
|||
This will usually be deferred to a safe time
|
||||
===================
|
||||
*/
|
||||
static void CG_LoadClientInfo( clientInfo_t *ci ) {
|
||||
static void CG_LoadClientInfo( int clientNum, clientInfo_t *ci ) {
|
||||
const char *dir, *fallback;
|
||||
int i, modelloaded;
|
||||
const char *s;
|
||||
int clientNum;
|
||||
char teamname[MAX_QPATH];
|
||||
|
||||
teamname[0] = 0;
|
||||
|
@ -1047,7 +1049,6 @@ static void CG_LoadClientInfo( clientInfo_t *ci ) {
|
|||
|
||||
// reset any existing players and bodies, because they might be in bad
|
||||
// frames for this new model
|
||||
clientNum = ci - cgs.clientinfo;
|
||||
for ( i = 0 ; i < MAX_GENTITIES ; i++ ) {
|
||||
if ( cg_entities[i].currentState.clientNum == clientNum
|
||||
&& cg_entities[i].currentState.eType == ET_PLAYER ) {
|
||||
|
@ -1148,7 +1149,7 @@ We aren't going to load it now, so grab some other
|
|||
client's info to use until we have some spare time.
|
||||
======================
|
||||
*/
|
||||
static void CG_SetDeferredClientInfo( clientInfo_t *ci ) {
|
||||
static void CG_SetDeferredClientInfo( int clientNum, clientInfo_t *ci ) {
|
||||
int i;
|
||||
clientInfo_t *match;
|
||||
|
||||
|
@ -1172,7 +1173,7 @@ static void CG_SetDeferredClientInfo( clientInfo_t *ci ) {
|
|||
}
|
||||
|
||||
// just load the real info cause it uses the same models and skins
|
||||
CG_LoadClientInfo( ci );
|
||||
CG_LoadClientInfo( clientNum, ci );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1195,7 +1196,7 @@ static void CG_SetDeferredClientInfo( clientInfo_t *ci ) {
|
|||
// an improper team skin. This will cause a hitch for the first
|
||||
// player, when the second enters. Combat shouldn't be going on
|
||||
// yet, so it shouldn't matter
|
||||
CG_LoadClientInfo( ci );
|
||||
CG_LoadClientInfo( clientNum, ci );
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1214,7 +1215,7 @@ static void CG_SetDeferredClientInfo( clientInfo_t *ci ) {
|
|||
// we should never get here...
|
||||
CG_Printf( "CG_SetDeferredClientInfo: no valid clients!\n" );
|
||||
|
||||
CG_LoadClientInfo( ci );
|
||||
CG_LoadClientInfo( clientNum, ci );
|
||||
}
|
||||
|
||||
|
||||
|
@ -1446,17 +1447,16 @@ void CG_NewClientInfo( int clientNum ) {
|
|||
forceDefer = trap_MemoryRemaining() < 4000000;
|
||||
|
||||
// if we are defering loads, just have it pick the first valid
|
||||
if ( forceDefer || ( cg_deferPlayers.integer && !cg_buildScript.integer && !cg.loading ) ) {
|
||||
if ( forceDefer || (cg_deferPlayers.integer && !cg_buildScript.integer && !cg.loading ) ) {
|
||||
// keep whatever they had if it won't violate team skins
|
||||
CG_SetDeferredClientInfo( &newInfo );
|
||||
|
||||
CG_SetDeferredClientInfo( clientNum, &newInfo );
|
||||
// if we are low on memory, leave them with this model
|
||||
if ( forceDefer ) {
|
||||
CG_Printf( "Memory is low. Using deferred model.\n" );
|
||||
newInfo.deferred = qfalse;
|
||||
}
|
||||
} else {
|
||||
CG_LoadClientInfo( &newInfo );
|
||||
CG_LoadClientInfo( clientNum, &newInfo );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1489,7 +1489,7 @@ void CG_LoadDeferredPlayers( void ) {
|
|||
ci->deferred = qfalse;
|
||||
continue;
|
||||
}
|
||||
CG_LoadClientInfo( ci );
|
||||
CG_LoadClientInfo( i, ci );
|
||||
// break;
|
||||
}
|
||||
}
|
||||
|
@ -1850,6 +1850,7 @@ static void CG_PlayerAngles( centity_t *cent, vec3_t legs[3], vec3_t torso[3], v
|
|||
torsoAngles[YAW] = cent->pe.torso.yawAngle;
|
||||
legsAngles[YAW] = cent->pe.legs.yawAngle;
|
||||
|
||||
|
||||
// --------- pitch -------------
|
||||
|
||||
// only show a fraction of the pitch angle in the torso
|
||||
|
@ -1914,6 +1915,7 @@ static void CG_PlayerAngles( centity_t *cent, vec3_t legs[3], vec3_t torso[3], v
|
|||
*/
|
||||
// END
|
||||
|
||||
|
||||
//==========================================================================
|
||||
|
||||
/*
|
||||
|
@ -2202,7 +2204,7 @@ static void CG_PlayerFlag( centity_t *cent, qhandle_t hSkin, refEntity_t *torso
|
|||
}
|
||||
|
||||
|
||||
#ifdef MISSIONPACK // bk001204
|
||||
#ifdef MISSIONPACK
|
||||
/*
|
||||
===============
|
||||
CG_PlayerTokens
|
||||
|
@ -2588,7 +2590,7 @@ static qboolean CG_PlayerShadow( centity_t *cent, float *shadowPlane ) {
|
|||
// fade the shadow out with height
|
||||
alpha = 1.0 - trace.fraction;
|
||||
|
||||
// bk0101022 - hack / FPE - bogus planes?
|
||||
// hack / FPE - bogus planes?
|
||||
//assert( DotProduct( trace.plane.normal, trace.plane.normal ) != 0.0f )
|
||||
|
||||
// add the mark as a temporary, so it goes directly to the renderer
|
||||
|
@ -3486,7 +3488,8 @@ void CG_Player( centity_t *cent ) {
|
|||
CG_PlayerEngineSmoke(cent, &body);
|
||||
// END
|
||||
|
||||
/* Q3Rally Code Start
|
||||
// Q3Rally Code Start
|
||||
#if 0
|
||||
//
|
||||
// add the legs
|
||||
//
|
||||
|
@ -3572,12 +3575,14 @@ void CG_Player( centity_t *cent ) {
|
|||
angles[2] = 0;
|
||||
AnglesToAxis( angles, skull.axis );
|
||||
|
||||
// dir[2] = 0;
|
||||
// VectorInverse(dir);
|
||||
// VectorCopy(dir, skull.axis[1]);
|
||||
// VectorNormalize(skull.axis[1]);
|
||||
// VectorSet(skull.axis[2], 0, 0, 1);
|
||||
// CrossProduct(skull.axis[1], skull.axis[2], skull.axis[0]);
|
||||
/*
|
||||
dir[2] = 0;
|
||||
VectorInverse(dir);
|
||||
VectorCopy(dir, skull.axis[1]);
|
||||
VectorNormalize(skull.axis[1]);
|
||||
VectorSet(skull.axis[2], 0, 0, 1);
|
||||
CrossProduct(skull.axis[1], skull.axis[2], skull.axis[0]);
|
||||
*/
|
||||
|
||||
skull.hModel = cgs.media.kamikazeHeadModel;
|
||||
trap_R_AddRefEntityToScene( &skull );
|
||||
|
@ -3601,11 +3606,13 @@ void CG_Player( centity_t *cent ) {
|
|||
angles[2] = 0;
|
||||
AnglesToAxis( angles, skull.axis );
|
||||
|
||||
// dir[2] = 0;
|
||||
// VectorCopy(dir, skull.axis[1]);
|
||||
// VectorNormalize(skull.axis[1]);
|
||||
// VectorSet(skull.axis[2], 0, 0, 1);
|
||||
// CrossProduct(skull.axis[1], skull.axis[2], skull.axis[0]);
|
||||
/*
|
||||
dir[2] = 0;
|
||||
VectorCopy(dir, skull.axis[1]);
|
||||
VectorNormalize(skull.axis[1]);
|
||||
VectorSet(skull.axis[2], 0, 0, 1);
|
||||
CrossProduct(skull.axis[1], skull.axis[2], skull.axis[0]);
|
||||
*/
|
||||
|
||||
skull.hModel = cgs.media.kamikazeHeadModel;
|
||||
trap_R_AddRefEntityToScene( &skull );
|
||||
|
@ -3729,10 +3736,13 @@ void CG_Player( centity_t *cent ) {
|
|||
trap_R_AddRefEntityToScene( &powerup );
|
||||
}
|
||||
#endif // MISSIONPACK
|
||||
*/
|
||||
#endif // Q3Rally
|
||||
|
||||
// STONELANCE( add head support )
|
||||
/*
|
||||
//
|
||||
// add the head
|
||||
//
|
||||
head.hModel = ci->headModel;
|
||||
if (!head.hModel) {
|
||||
return;
|
||||
|
@ -3997,6 +4007,7 @@ void CG_Player( centity_t *cent ) {
|
|||
// add the gun / barrel / flash
|
||||
//
|
||||
// Q3Rally Code Start
|
||||
// CG_AddPlayerWeapon( &torso, NULL, cent, ci->team );
|
||||
CG_AddPlayerWeapon( &body, NULL, cent, ci->team );
|
||||
// END
|
||||
|
||||
|
|
|
@ -226,7 +226,6 @@ void CG_CheckPlayerstateEvents( playerState_t *ps, playerState_t *ops ) {
|
|||
cent = &cg_entities[ ps->clientNum ];
|
||||
cent->currentState.event = ps->externalEvent;
|
||||
cent->currentState.eventParm = ps->externalEventParm;
|
||||
|
||||
CG_EntityEvent( cent, cent->lerpOrigin );
|
||||
}
|
||||
|
||||
|
@ -515,7 +514,7 @@ void CG_TransitionPlayerState( playerState_t *ps, playerState_t *ops ) {
|
|||
// STONELANCE using damagePitch and Yaw for view
|
||||
/*
|
||||
if ( ps->damageEvent != ops->damageEvent && ps->damageCount ) {
|
||||
CG_DamageFeedback( ps->damageYaw, ps->damagePitch, ps->damageCount );
|
||||
// CG_DamageFeedback( ps->damageYaw, ps->damagePitch, ps->damageCount );
|
||||
CG_DamageFeedback( 0, 0, ps->damageCount );
|
||||
}
|
||||
*/
|
||||
|
|
|
@ -237,4 +237,3 @@ typedef enum {
|
|||
} cgameExport_t;
|
||||
|
||||
//----------------------------------------------
|
||||
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 1999-2005 Id Software, Inc.
|
||||
Copyright (C) 2002-2015 Q3Rally Team (Per Thormann - q3rally@gmail.com)
|
||||
|
||||
This file is part of q3rally source code.
|
||||
|
||||
q3rally source code 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,
|
||||
or (at your option) any later version.
|
||||
|
||||
q3rally source code is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
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 q3rally; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "cg_local.h"
|
||||
|
||||
/*
|
||||
================
|
||||
CG_RankRunFrame
|
||||
================
|
||||
*/
|
||||
|
||||
void CG_RankRunFrame(void)
|
||||
{
|
||||
grank_status_t status;
|
||||
|
||||
if (! cgs.localServer)
|
||||
trap_CL_RankPoll();
|
||||
|
||||
status = trap_CL_RankUserStatus();
|
||||
|
||||
if( cgs.client_status != status )
|
||||
{
|
||||
// GRank status changed
|
||||
|
||||
// inform UI of current status
|
||||
trap_Cvar_Set("client_status", va("%i",(int)(status)));
|
||||
|
||||
// show rankings status dialog if error
|
||||
trap_CL_RankShowStatus((int)status);
|
||||
|
||||
cgs.client_status = status;
|
||||
}
|
||||
return;
|
||||
}
|
|
@ -91,6 +91,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
static qboolean localClient; // true if local client has been displayed
|
||||
|
||||
|
||||
/*
|
||||
=================
|
||||
CG_DrawScoreboard
|
||||
|
@ -692,6 +693,8 @@ void CG_DrawTourneyScoreboard( void ) {
|
|||
y += 64;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
#endif
|
||||
// END
|
||||
|
|
|
@ -263,7 +263,6 @@ void CG_SetConfigValues( void ) {
|
|||
cgs.redflag = s[0] - '0';
|
||||
cgs.blueflag = s[1] - '0';
|
||||
}
|
||||
|
||||
#ifdef MISSIONPACK
|
||||
else if( cgs.gametype == GT_1FCTF ) {
|
||||
s = CG_ConfigString( CS_FLAGSTATUS );
|
||||
|
@ -343,15 +342,13 @@ static void CG_ConfigStringModified( void ) {
|
|||
cgs.scores1 = atoi( str );
|
||||
} else if ( num == CS_SCORES2 ) {
|
||||
cgs.scores2 = atoi( str );
|
||||
}
|
||||
// Q3Rally Code Start
|
||||
else if ( num == CS_SCORES3 ) {
|
||||
} else if ( num == CS_SCORES3 ) {
|
||||
cgs.scores3 = atoi( str );
|
||||
} else if ( num == CS_SCORES4 ) {
|
||||
cgs.scores4 = atoi( str );
|
||||
}
|
||||
// END
|
||||
else if ( num == CS_LEVEL_START_TIME ) {
|
||||
} else if ( num == CS_LEVEL_START_TIME ) {
|
||||
cgs.levelStartTime = atoi( str );
|
||||
} else if ( num == CS_VOTE_TIME ) {
|
||||
cgs.voteTime = atoi( str );
|
||||
|
@ -404,8 +401,6 @@ static void CG_ConfigStringModified( void ) {
|
|||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
else if ( num == CS_SHADERSTATE ) {
|
||||
CG_ShaderStateChanged();
|
||||
}
|
||||
|
@ -1293,4 +1288,3 @@ void CG_ExecuteNewServerCommands( int latestSequence ) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -267,7 +267,7 @@ static snapshot_t *CG_ReadNextSnapshot( void ) {
|
|||
snapshot_t *dest;
|
||||
|
||||
if ( cg.latestSnapshotNum > cgs.processedSnapshotNum + 1000 ) {
|
||||
CG_Printf( "WARNING: CG_ReadNextSnapshot: way out of range, %i > %i",
|
||||
CG_Printf( "WARNING: CG_ReadNextSnapshot: way out of range, %i > %i\n",
|
||||
cg.latestSnapshotNum, cgs.processedSnapshotNum );
|
||||
}
|
||||
|
||||
|
|
|
@ -292,6 +292,7 @@ static void CG_OffsetThirdPersonView( void ) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
VectorCopy( view, cg.refdef.vieworg );
|
||||
|
||||
// select pitch to look at focus point from vieword
|
||||
|
@ -630,7 +631,7 @@ static vec3_t oldAngles; // used for joystick and keyboard control modes
|
|||
// END
|
||||
static int CG_CalcViewValues( void ) {
|
||||
playerState_t *ps;
|
||||
|
||||
|
||||
memset( &cg.refdef, 0, sizeof( cg.refdef ) );
|
||||
|
||||
// strings for in game rendering
|
||||
|
@ -641,7 +642,6 @@ static int CG_CalcViewValues( void ) {
|
|||
CG_CalcVrect();
|
||||
|
||||
ps = &cg.predictedPlayerState;
|
||||
|
||||
/*
|
||||
if (cg.cameraMode) {
|
||||
vec3_t origin, angles;
|
||||
|
|
|
@ -226,13 +226,6 @@ void CG_RailTrail (clientInfo_t *ci, vec3_t start, vec3_t end) {
|
|||
#define SPACING 5
|
||||
|
||||
start[2] -= 4;
|
||||
VectorCopy (start, move);
|
||||
VectorSubtract (end, start, vec);
|
||||
len = VectorNormalize (vec);
|
||||
PerpendicularVector(temp, vec);
|
||||
for (i = 0 ; i < 36; i++) {
|
||||
RotatePointAroundVector(axis[i], vec, temp, i * 10);//banshee 2.4 was 10
|
||||
}
|
||||
|
||||
le = CG_AllocLocalEntity();
|
||||
re = &le->refEntity;
|
||||
|
@ -250,9 +243,9 @@ void CG_RailTrail (clientInfo_t *ci, vec3_t start, vec3_t end) {
|
|||
VectorCopy(end, re->oldorigin);
|
||||
|
||||
re->shaderRGBA[0] = ci->color1[0] * 255;
|
||||
re->shaderRGBA[1] = ci->color1[1] * 255;
|
||||
re->shaderRGBA[2] = ci->color1[2] * 255;
|
||||
re->shaderRGBA[3] = 255;
|
||||
re->shaderRGBA[1] = ci->color1[1] * 255;
|
||||
re->shaderRGBA[2] = ci->color1[2] * 255;
|
||||
re->shaderRGBA[3] = 255;
|
||||
|
||||
le->color[0] = ci->color1[0] * 0.75;
|
||||
le->color[1] = ci->color1[1] * 0.75;
|
||||
|
@ -261,59 +254,72 @@ void CG_RailTrail (clientInfo_t *ci, vec3_t start, vec3_t end) {
|
|||
|
||||
AxisClear( re->axis );
|
||||
|
||||
VectorMA(move, 20, vec, move);
|
||||
VectorScale (vec, SPACING, vec);
|
||||
|
||||
if (cg_oldRail.integer != 0) {
|
||||
if (cg_oldRail.integer)
|
||||
{
|
||||
// nudge down a bit so it isn't exactly in center
|
||||
re->origin[2] -= 8;
|
||||
re->oldorigin[2] -= 8;
|
||||
return;
|
||||
}
|
||||
|
||||
VectorCopy (start, move);
|
||||
VectorSubtract (end, start, vec);
|
||||
len = VectorNormalize (vec);
|
||||
PerpendicularVector(temp, vec);
|
||||
for (i = 0 ; i < 36; i++)
|
||||
{
|
||||
RotatePointAroundVector(axis[i], vec, temp, i * 10);//banshee 2.4 was 10
|
||||
}
|
||||
|
||||
VectorMA(move, 20, vec, move);
|
||||
VectorScale (vec, SPACING, vec);
|
||||
|
||||
skip = -1;
|
||||
|
||||
j = 18;
|
||||
for (i = 0; i < len; i += SPACING) {
|
||||
if (i != skip) {
|
||||
for (i = 0; i < len; i += SPACING)
|
||||
{
|
||||
if (i != skip)
|
||||
{
|
||||
skip = i + SPACING;
|
||||
le = CG_AllocLocalEntity();
|
||||
re = &le->refEntity;
|
||||
le->leFlags = LEF_PUFF_DONT_SCALE;
|
||||
re = &le->refEntity;
|
||||
le->leFlags = LEF_PUFF_DONT_SCALE;
|
||||
le->leType = LE_MOVE_SCALE_FADE;
|
||||
le->startTime = cg.time;
|
||||
le->endTime = cg.time + (i>>1) + 600;
|
||||
le->lifeRate = 1.0 / (le->endTime - le->startTime);
|
||||
le->startTime = cg.time;
|
||||
le->endTime = cg.time + (i>>1) + 600;
|
||||
le->lifeRate = 1.0 / (le->endTime - le->startTime);
|
||||
|
||||
re->shaderTime = cg.time / 1000.0f;
|
||||
re->reType = RT_SPRITE;
|
||||
re->radius = 1.1f;
|
||||
re->shaderTime = cg.time / 1000.0f;
|
||||
re->reType = RT_SPRITE;
|
||||
re->radius = 1.1f;
|
||||
re->customShader = cgs.media.railRingsShader;
|
||||
|
||||
re->shaderRGBA[0] = ci->color2[0] * 255;
|
||||
re->shaderRGBA[1] = ci->color2[1] * 255;
|
||||
re->shaderRGBA[2] = ci->color2[2] * 255;
|
||||
re->shaderRGBA[3] = 255;
|
||||
re->shaderRGBA[0] = ci->color2[0] * 255;
|
||||
re->shaderRGBA[1] = ci->color2[1] * 255;
|
||||
re->shaderRGBA[2] = ci->color2[2] * 255;
|
||||
re->shaderRGBA[3] = 255;
|
||||
|
||||
le->color[0] = ci->color2[0] * 0.75;
|
||||
le->color[1] = ci->color2[1] * 0.75;
|
||||
le->color[2] = ci->color2[2] * 0.75;
|
||||
le->color[3] = 1.0f;
|
||||
le->color[0] = ci->color2[0] * 0.75;
|
||||
le->color[1] = ci->color2[1] * 0.75;
|
||||
le->color[2] = ci->color2[2] * 0.75;
|
||||
le->color[3] = 1.0f;
|
||||
|
||||
le->pos.trType = TR_LINEAR;
|
||||
le->pos.trTime = cg.time;
|
||||
le->pos.trType = TR_LINEAR;
|
||||
le->pos.trTime = cg.time;
|
||||
|
||||
VectorCopy( move, move2);
|
||||
VectorMA(move2, RADIUS , axis[j], move2);
|
||||
VectorCopy(move2, le->pos.trBase);
|
||||
VectorMA(move2, RADIUS , axis[j], move2);
|
||||
VectorCopy(move2, le->pos.trBase);
|
||||
|
||||
le->pos.trDelta[0] = axis[j][0]*6;
|
||||
le->pos.trDelta[1] = axis[j][1]*6;
|
||||
le->pos.trDelta[2] = axis[j][2]*6;
|
||||
le->pos.trDelta[0] = axis[j][0]*6;
|
||||
le->pos.trDelta[1] = axis[j][1]*6;
|
||||
le->pos.trDelta[2] = axis[j][2]*6;
|
||||
}
|
||||
|
||||
VectorAdd (move, vec, move);
|
||||
VectorAdd (move, vec, move);
|
||||
|
||||
j = j + ROTATION < 36 ? j + ROTATION : (j + ROTATION) % 36;
|
||||
j = (j + ROTATION) % 36;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -453,7 +459,6 @@ static void CG_NailTrail( centity_t *ent, const weaponInfo_t *wi ) {
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
==========================
|
||||
CG_PlasmaTrail
|
||||
|
@ -542,8 +547,8 @@ static void CG_PlasmaTrail( centity_t *cent, const weaponInfo_t *wi ) {
|
|||
le->angles.trDelta[0] = 1;
|
||||
le->angles.trDelta[1] = 0.5;
|
||||
le->angles.trDelta[2] = 0;
|
||||
}
|
||||
|
||||
}
|
||||
/*
|
||||
==========================
|
||||
CG_GrappleTrail
|
||||
|
@ -705,13 +710,12 @@ void CG_RegisterWeapon( int weaponNum ) {
|
|||
break;
|
||||
*/
|
||||
|
||||
case WP_FLAME_THROWER:
|
||||
weaponInfo->missileSound = trap_S_RegisterSound( "sound/weapons/plasma/lasfly.wav", qfalse );
|
||||
MAKERGB( weaponInfo->flashDlightColor, 0.6, 0.6, 1 );
|
||||
weaponInfo->flashSound[0] = trap_S_RegisterSound( "sound/weapons/plasma/hyprbf1a.wav", qfalse );
|
||||
cgs.media.flameExplosionShader = trap_R_RegisterShader( "rocketExplosion" );
|
||||
|
||||
break;
|
||||
case WP_FLAME_THROWER:
|
||||
weaponInfo->missileSound = trap_S_RegisterSound( "sound/weapons/plasma/lasfly.wav", qfalse );
|
||||
MAKERGB( weaponInfo->flashDlightColor, 0.6, 0.6, 1 );
|
||||
weaponInfo->flashSound[0] = trap_S_RegisterSound( "sound/weapons/plasma/hyprbf1a.wav", qfalse );
|
||||
cgs.media.flameExplosionShader = trap_R_RegisterShader( "rocketExplosion" );
|
||||
break;
|
||||
// Q3Rally Code END
|
||||
|
||||
#ifdef MISSIONPACK
|
||||
|
@ -997,6 +1001,7 @@ static void CG_CalculateWeaponPosition( vec3_t origin, vec3_t angles ) {
|
|||
*/
|
||||
// END
|
||||
|
||||
|
||||
/*
|
||||
===============
|
||||
CG_LightningBolt
|
||||
|
@ -1009,10 +1014,10 @@ angle)
|
|||
===============
|
||||
*/
|
||||
static void CG_LightningBolt( centity_t *cent, vec3_t origin ) {
|
||||
trace_t trace;
|
||||
refEntity_t beam;
|
||||
vec3_t forward;
|
||||
vec3_t muzzlePoint, endPoint;
|
||||
trace_t trace;
|
||||
refEntity_t beam;
|
||||
vec3_t forward;
|
||||
vec3_t muzzlePoint, endPoint;
|
||||
//int anim;
|
||||
|
||||
// Q3Rally Code Start
|
||||
|
@ -1023,7 +1028,7 @@ static void CG_LightningBolt( centity_t *cent, vec3_t origin ) {
|
|||
//centity_t *traceEnt;
|
||||
// END
|
||||
|
||||
if ( cent->currentState.weapon != WP_LIGHTNING ) {
|
||||
if (cent->currentState.weapon != WP_LIGHTNING) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1190,7 +1195,6 @@ static void CG_LightningBolt( centity_t *cent, vec3_t origin ) {
|
|||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
======================
|
||||
CG_MachinegunSpinAngle
|
||||
|
@ -1272,7 +1276,6 @@ void CG_AddPlayerWeapon( refEntity_t *parent, playerState_t *ps, centity_t *cent
|
|||
weapon_t weaponNum;
|
||||
weaponInfo_t *weapon;
|
||||
centity_t *nonPredictedCent;
|
||||
// int col;
|
||||
|
||||
weaponNum = cent->currentState.weapon;
|
||||
|
||||
|
@ -1446,6 +1449,7 @@ void CG_AddViewWeapon( playerState_t *ps ) {
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
// allow the gun to be completely removed
|
||||
if ( !cg_drawGun.integer ) {
|
||||
vec3_t origin;
|
||||
|
@ -1554,7 +1558,7 @@ void CG_DrawWeaponSelect( void ) {
|
|||
bits = cg.snap->ps.stats[ STAT_WEAPONS ];
|
||||
count = 0;
|
||||
// Q3Rally Code Start
|
||||
// for ( i = 1 ; i < 16 ; i++ ) {
|
||||
// for ( i = 1 ; i < MAX_WEAPONS ; i++ ) {
|
||||
for ( i = 1 ; i < RWP_SMOKE ; i++ ) {
|
||||
// END
|
||||
if ( bits & ( 1 << i ) ) {
|
||||
|
@ -1566,7 +1570,7 @@ void CG_DrawWeaponSelect( void ) {
|
|||
y = 380;
|
||||
|
||||
// Q3Rally Code Start
|
||||
// for ( i = 1 ; i < 16 ; i++ ) {
|
||||
// for ( i = 1 ; i < MAX_WEAPONS ; i++ ) {
|
||||
for ( i = 1 ; i < RWP_SMOKE ; i++ ) {
|
||||
// END
|
||||
if ( !( bits & ( 1 << i ) ) ) {
|
||||
|
@ -1645,9 +1649,9 @@ void CG_NextWeapon_f( void ) {
|
|||
cg.weaponSelectTime = cg.time;
|
||||
original = cg.weaponSelect;
|
||||
|
||||
for ( i = 0 ; i < 16 ; i++ ) {
|
||||
for ( i = 0 ; i < MAX_WEAPONS ; i++ ) {
|
||||
cg.weaponSelect++;
|
||||
if ( cg.weaponSelect == 16 ) {
|
||||
if ( cg.weaponSelect == MAX_WEAPONS ) {
|
||||
cg.weaponSelect = 0;
|
||||
}
|
||||
if ( cg.weaponSelect == WP_GAUNTLET ) {
|
||||
|
@ -1657,7 +1661,7 @@ void CG_NextWeapon_f( void ) {
|
|||
break;
|
||||
}
|
||||
}
|
||||
if ( i == 16 ) {
|
||||
if ( i == MAX_WEAPONS ) {
|
||||
cg.weaponSelect = original;
|
||||
}
|
||||
}
|
||||
|
@ -1681,10 +1685,10 @@ void CG_PrevWeapon_f( void ) {
|
|||
cg.weaponSelectTime = cg.time;
|
||||
original = cg.weaponSelect;
|
||||
|
||||
for ( i = 0 ; i < 16 ; i++ ) {
|
||||
for ( i = 0 ; i < MAX_WEAPONS ; i++ ) {
|
||||
cg.weaponSelect--;
|
||||
if ( cg.weaponSelect == -1 ) {
|
||||
cg.weaponSelect = 15;
|
||||
cg.weaponSelect = MAX_WEAPONS - 1;
|
||||
}
|
||||
if ( cg.weaponSelect == WP_GAUNTLET ) {
|
||||
continue; // never cycle to gauntlet
|
||||
|
@ -1693,7 +1697,7 @@ void CG_PrevWeapon_f( void ) {
|
|||
break;
|
||||
}
|
||||
}
|
||||
if ( i == 16 ) {
|
||||
if ( i == MAX_WEAPONS ) {
|
||||
cg.weaponSelect = original;
|
||||
}
|
||||
}
|
||||
|
@ -1716,7 +1720,7 @@ void CG_Weapon_f( void ) {
|
|||
num = atoi( CG_Argv( 1 ) );
|
||||
|
||||
// Q3Rally Code Start
|
||||
// if ( num < 1 || num > 15 ) {
|
||||
// if ( num < 1 || num > MAX_WEAPONS-1 ) {
|
||||
if ( num < 1 || num >= RWP_SMOKE ) {
|
||||
// END
|
||||
return;
|
||||
|
@ -1743,7 +1747,7 @@ void CG_OutOfAmmoChange( void ) {
|
|||
|
||||
cg.weaponSelectTime = cg.time;
|
||||
|
||||
for ( i = 15 ; i > 0 ; i-- ) {
|
||||
for ( i = MAX_WEAPONS-1 ; i > 0 ; i-- ) {
|
||||
if ( CG_WeaponSelectable( i ) ) {
|
||||
cg.weaponSelect = i;
|
||||
break;
|
||||
|
@ -2020,13 +2024,14 @@ void CG_MissileHitWall( int weapon, int clientNum, vec3_t origin, vec3_t dir, im
|
|||
break;
|
||||
// Q3Rally Code Start
|
||||
case WP_FLAME_THROWER:
|
||||
mod = cgs.media.dishFlashModel;
|
||||
shader = cgs.media.flameExplosionShader;
|
||||
sfx = cgs.media.sfx_plasmaexp;
|
||||
mark = cgs.media.burnMarkShader;
|
||||
radius = 16;
|
||||
break;
|
||||
mod = cgs.media.dishFlashModel;
|
||||
shader = cgs.media.flameExplosionShader;
|
||||
sfx = cgs.media.sfx_plasmaexp;
|
||||
mark = cgs.media.burnMarkShader;
|
||||
radius = 16;
|
||||
break;
|
||||
// Q3Rally Code END
|
||||
|
||||
#ifdef MISSIONPACK
|
||||
case WP_CHAINGUN:
|
||||
mod = cgs.media.bulletFlashModel;
|
||||
|
@ -2153,28 +2158,23 @@ static void CG_ShotgunPellet( vec3_t start, vec3_t end, int skipNum ) {
|
|||
|
||||
sourceContentType = CG_PointContents( start, 0 );
|
||||
destContentType = CG_PointContents( tr.endpos, 0 );
|
||||
|
||||
|
||||
// FIXME: should probably move this cruft into CG_BubbleTrail
|
||||
if ( sourceContentType == destContentType ) {
|
||||
if ( sourceContentType & CONTENTS_WATER ) {
|
||||
|
||||
CG_BubbleTrail( start, tr.endpos, 32 );
|
||||
|
||||
}
|
||||
} else if ( sourceContentType & CONTENTS_WATER ) {
|
||||
trace_t trace;
|
||||
|
||||
trap_CM_BoxTrace( &trace, end, start, NULL, NULL, 0, CONTENTS_WATER );
|
||||
CG_BubbleTrail( start, trace.endpos, 32 );
|
||||
}
|
||||
else if ( destContentType & CONTENTS_WATER ) {
|
||||
} else if ( destContentType & CONTENTS_WATER ) {
|
||||
trace_t trace;
|
||||
|
||||
trap_CM_BoxTrace( &trace, start, end, NULL, NULL, 0, CONTENTS_WATER );
|
||||
CG_BubbleTrail( tr.endpos, trace.endpos, 32 );
|
||||
}
|
||||
|
||||
|
||||
if ( tr.surfaceFlags & SURF_NOIMPACT ) {
|
||||
return;
|
||||
|
@ -2445,5 +2445,3 @@ void CG_Bullet( vec3_t end, int sourceEntityNum, vec3_t normal, qboolean flesh,
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue