Spring cleaning. Prepare for summer! Fixed lots of bugs too:

v_camroll is now working again.
Counter-Strike is finally getting somewhere again.
Counter-Strike has pseudo spray-patterns now! They're all the same.
func_button now can be programmed to use Sound-Shaders.
The menu handles the vid_conautoscale command autonomously. Set r_autoscale
to 0 if you don't like it.
The menu has an updater, requires a not-yet-pushed build of FTE.
Don't use it yet.
Moved a lot of globals into pSeat's structs to fix splitscreen with them.
Made explosion decals be handled client-side!
Added trigger_look, env_sun and light_environment entities.
This commit is contained in:
Marco Cawthorne 2020-04-12 15:50:42 +02:00
parent 6f6a0cf35b
commit 324fadd668
509 changed files with 9772 additions and 6382 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 234 KiB

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -13,7 +13,7 @@ BASEGAME scihunt
-set gameinfo_fallback_dir ""
-set gameinfo_mpentity "info_player_deathmatch"
-set gameinfo_size "12869244"
-set gameinfo_version "1.0"
-set gameinfo_version "1.2"
-set gameinfo_hlversion "1110"
-set gameinfo_nomodels 0
-set gameinfo_gamedll "progs.dat"
@ -25,10 +25,9 @@ BASEGAME scihunt
-set gameinfo_url_dl "http://www.frag-net.com/mods/scihunt.fmf"
-set gameinfo_menutrack "sound/Hondo2/pca.wav"
// download/update packaging information
DOWNLOADSURL http://www.frag-net.com/dl/scihunt_packages
UPDATEURL http://www.frag-net.com/mods/scihunt.fmf
PACKAGE scihunt/pak0.pk3 0xc1cbd5c1 "http://www.frag-net.com/dl/c1cbd5c1/file.pk3"
PACKAGE logos/pakrm_logos.pk3 0xd318299 "http://www.frag-net.com/dl/d318299/file.pk3"
INSTALL "scihunt_essential;valve_essential;free_essential;addons_essential"
// you don't really want to change these
RTCBROKER master.frag-net.com:27950

View File

@ -27,7 +27,7 @@ var float PARTICLE_SMOKEGRENADE;
vector vHUDColor; // Defined in HUD_Draw (HUD.c)
vector vCrossColor; // Defined in HUD_Draw (HUDCrosshair.c)
string sShellModel [ 4 ] = {
string sShellModel [4] = {
"models/pshell.mdl",
"models/rshell.mdl",
"models/rshell_big.mdl",
@ -36,7 +36,7 @@ string sShellModel [ 4 ] = {
var string autocvar_skins_dir = "";
string sViewModels[ CS_WEAPON_COUNT - 1 ] = {
string sViewModels[CS_WEAPON_COUNT - 1] = {
"v_knife.mdl",
"v_usp.mdl",
"v_glock18.mdl",
@ -70,16 +70,16 @@ string sViewModels[ CS_WEAPON_COUNT - 1 ] = {
struct
{
//Viewmodel stuff
entity eViewModel;
entity eMuzzleflash;
float fNumBones;
float fEjectBone;
entity m_eViewModel;
entity m_eMuzzleflash;
float m_iVMBones;
float m_iVMEjectBone;
vector punchangle;
float fLastWeapon;
float fBobTime;
float fBob;
float damage_alpha;
vector damage_pos;
float m_iLastWeapon;
float m_flBobTime;
float m_flBob;
float m_flDamageAlpha;
vector m_vecDamagePos;
/* Camera Bob */
float flCamMove;
@ -88,21 +88,21 @@ struct
float flCamFracSin;
float flCamDelta;
int iZoomed;
float flZoomTime;
int m_iZoomed;
float m_flZoomTime;
//Player fields
entity ePlayer;
vector vPlayerOrigin;
vector vPlayerOriginOld;
vector vPlayerVelocity;
float fPlayerFlags;
vector m_vecPredictedOrigin;
vector m_vecPredictedOriginOld;
vector m_vecPredictedVelocity;
float m_flPredictedFlags;
// Camera Fields
//entity ePlayerEnt;
vector vCameraPos;
vector vCameraAngle;
float fCameraTime;
vector m_vecCameraOrigin;
vector m_vecCameraAngle;
float m_flCameraTime;
// Flashbang'd
float fFlashTime;
@ -110,7 +110,7 @@ struct
//UI fields
float fVGUI_Display; // The VGUI menu currently being drawn
int iShowScores; // This is seperated from the other VGUI stuff so we can check scores while buying and whatnot
int m_iScoresVisible; // This is seperated from the other VGUI stuff so we can check scores while buying and whatnot
// Testing
int iOverview;
@ -127,21 +127,21 @@ struct
// We can only carry one item per slot, so this is hacking around the last one
int iHUDGrenades;
int iHUDGrenadesSelected;
float fHUDWeaponSelectTime;
float fHUDWeaponSelected;
float m_flHUDWeaponSelectTime;
float m_iHUDWeaponSelected;
int iInputAttack2;
int iInputReload;
int iInputUse;
int iInputDuck;
int m_iInputAttack2;
int m_iInputReload;
int m_iInputUse;
int m_iInputDuck;
float fInputSendNext;
} seats[4], *pSeat;
float m_flInputBlockTime;
} g_seats[4], *pSeat;
// Sound Stuff
//.string sSoundSample;
//.float fVolume;
string HUD_GetChatColorHEX( float fTeam );
string HUD_GetChatColorHEX(float fTeam);
// For the player entity
.entity eGunModel;
@ -151,8 +151,8 @@ float fWeaponEventPlayer;
.float health;
.float oldhealth;
void Animation_ShootWeapon( entity ePlayer );
void Animation_ReloadWeapon( entity ePlayer );
void Animation_ShootWeapon(entity ePlayer);
void Animation_ReloadWeapon(entity ePlayer);
/*
====================
@ -161,10 +161,10 @@ HUD_GetChatColor
Returns an RGB color vector for the specified team
====================
*/
vector HUD_GetChatColor( float fTeam ) {
if ( fTeam == TEAM_CT ) {
vector HUD_GetChatColor(float fTeam) {
if (fTeam == TEAM_CT) {
return '0.45 0.60 0.75';
} else if ( fTeam == TEAM_T ) {
} else if (fTeam == TEAM_T) {
return '0.75 0.1875 0.1875';
} else {
return '0.75 0.75 0.75';
@ -178,10 +178,10 @@ HUD_GetChatColor
Returns a HEX color string prefix for the specified team
====================
*/
string HUD_GetChatColorHEX( float fTeam ) {
if ( fTeam == TEAM_CT ) {
string HUD_GetChatColorHEX(float fTeam) {
if (fTeam == TEAM_CT) {
return "^x7AC";
} else if ( fTeam == TEAM_T ) {
} else if (fTeam == TEAM_T) {
return "^xC33";
} else {
return "^xCCC";
@ -195,10 +195,10 @@ HUD_GetChatColor
Returns a HEX color string prefix with teamname
====================
*/
string HUD_GetChatColorHEXTeam( float fTeam ) {
if ( fTeam == TEAM_CT ) {
string HUD_GetChatColorHEXTeam(float fTeam) {
if (fTeam == TEAM_CT) {
return "^x7AC(Counter-Terrorist) ";
} else if ( fTeam == TEAM_T ) {
} else if (fTeam == TEAM_T) {
return "^xC33(Terrorist) ";
} else {
return "^xCCC(Spectator) ";

View File

@ -15,14 +15,14 @@
*/
void
CSQC_ambient_generic( string sSample, float fVolume, float fAttenuation, float fLoop, float lFORate ) {
//print( sprintf( "SOUND: %s, %f, %d\n%d %d %d", sSample, fVolume, fAttenuation, self.origin[0], self.origin[1], self.origin[2] ) );
CSQC_ambient_generic(string sSample, float fVolume, float fAttenuation, float fLoop, float lFORate) {
//print(sprintf("SOUND: %s, %f, %d\n%d %d %d", sSample, fVolume, fAttenuation, self.origin[0], self.origin[1], self.origin[2]));
static void LFOHack (void) {
sound( self, CHAN_VOICE, self.classname, self.movetype, self.style, 0, 0 );
sound(self, CHAN_VOICE, self.classname, self.movetype, self.style, 0, 0);
self.nextthink = self.solid + time;
}
// Hack
if ( lFORate ) {
if (lFORate) {
self.classname = sSample;
self.movetype = fVolume;
self.style = fAttenuation;
@ -32,10 +32,10 @@ CSQC_ambient_generic( string sSample, float fVolume, float fAttenuation, float f
fLoop = FALSE;
}
/*if ( fLoop ) {
sound( self, CHAN_VOICE, sSample, fVolume, fAttenuation, 0, SOUNDFLAG_FORCELOOP );
/*if (fLoop) {
sound(self, CHAN_VOICE, sSample, fVolume, fAttenuation, 0, SOUNDFLAG_FORCELOOP);
} else {*/
sound( self, CHAN_VOICE, sSample, fVolume, fAttenuation, 0, 0 );
sound(self, CHAN_VOICE, sSample, fVolume, fAttenuation, 0, 0);
//}
}
@ -51,12 +51,12 @@ Game_Entity_Update(float id, float new)
}
void
CSQC_Ent_Remove( void ) {
if ( self.eGunModel ) {
remove( self.eGunModel );
CSQC_Ent_Remove(void) {
if (self.eGunModel) {
remove(self.eGunModel);
}
soundupdate( self, CHAN_VOICE, "", -1, ATTN_IDLE, 0, 0, 0 );
remove( self );
soundupdate(self, CHAN_VOICE, "", -1, ATTN_IDLE, 0, 0, 0);
remove(self);
}

View File

@ -23,22 +23,17 @@ Init all the cmds in one place
*/
void CSQC_ConsoleCommand_Init(void)
{
registercommand("dev_testorbituary");
registercommand("minimap");
registercommand("overview_test");
registercommand("buy");
registercommand("motd");
registercommand("chooseteam");
registercommand("drop");
registercommand("nightvision");
registercommand("radio1");
registercommand("radio2");
registercommand("radio3");
registercommand("glock");
registercommand("usp");
registercommand("p228");
@ -61,12 +56,10 @@ void CSQC_ConsoleCommand_Init(void)
registercommand("awp");
registercommand("g3sg1");
registercommand("m249");
registercommand("primammo");
registercommand("buyammo1");
registercommand("secammo");
registercommand("buyammo2");
registercommand("vest");
registercommand("vesthelm");
registercommand("flash");
@ -74,7 +67,6 @@ void CSQC_ConsoleCommand_Init(void)
registercommand("vsgren");
registercommand("defuser");
registercommand("nvg");
registercommand("coverme");
registercommand("takepoint");
registercommand("holdpos");
@ -122,7 +114,7 @@ float Game_ConsoleCommand(void)
VGUI_MessageOfTheDay();
break;
case "buy":
if(getstatf(STAT_BUYZONE) == TRUE) {
if (getstatf(STAT_BUYZONE) == TRUE) {
VGUI_BuyMenu();
}
break;
@ -231,76 +223,76 @@ float Game_ConsoleCommand(void)
sendevent("PlayerBuyEquipment", "f", 6);
break;
case "coverme":
sendevent("RadioMessage", "f", RADIO_CT_COVERME);
sendevent("Radio", "f", RADIO_CT_COVERME);
break;
case "takepoint":
sendevent("RadioMessage", "f", RADIO_CT_POINT);
sendevent("Radio", "f", RADIO_CT_POINT);
break;
case "takepoint":
sendevent("RadioMessage", "f", RADIO_POSITION);
sendevent("Radio", "f", RADIO_POSITION);
break;
case "regroup":
sendevent("RadioMessage", "f", RADIO_REGROUP);
sendevent("Radio", "f", RADIO_REGROUP);
break;
case "followme":
sendevent("RadioMessage", "f", RADIO_FOLLOWME);
sendevent("Radio", "f", RADIO_FOLLOWME);
break;
case "takingfire":
sendevent("RadioMessage", "f", RADIO_FIREASSIS);
sendevent("Radio", "f", RADIO_FIREASSIS);
break;
case "go":
sendevent("RadioMessage", "f", RADIO_GO);
sendevent("Radio", "f", RADIO_GO);
break;
case "fallback":
sendevent("RadioMessage", "f", RADIO_FALLBACK);
sendevent("Radio", "f", RADIO_FALLBACK);
break;
case "sticktog":
sendevent("RadioMessage", "f", RADIO_STICKTOG);
sendevent("Radio", "f", RADIO_STICKTOG);
break;
case "getinpos":
sendevent("RadioMessage", "f", RADIO_COM_GETINPOS);
sendevent("Radio", "f", RADIO_COM_GETINPOS);
break;
case "stormfront":
sendevent("RadioMessage", "f", RADIO_STORMFRONT);
sendevent("Radio", "f", RADIO_STORMFRONT);
break;
case "report":
sendevent("RadioMessage", "f", RADIO_COM_REPORTIN);
sendevent("Radio", "f", RADIO_COM_REPORTIN);
break;
case "roger":
sendevent("RadioMessage", "f", RADIO_ROGER);
sendevent("Radio", "f", RADIO_ROGER);
break;
case "enemyspot":
sendevent("RadioMessage", "f", RADIO_CT_ENEMYS);
sendevent("Radio", "f", RADIO_CT_ENEMYS);
break;
case "needbackup":
sendevent("RadioMessage", "f", RADIO_CT_BACKUP);
sendevent("Radio", "f", RADIO_CT_BACKUP);
break;
case "sectorclear":
sendevent("RadioMessage", "f", RADIO_CLEAR);
sendevent("Radio", "f", RADIO_CLEAR);
break;
case "inposition":
sendevent("RadioMessage", "f", RADIO_CT_INPOS);
sendevent("Radio", "f", RADIO_CT_INPOS);
break;
case "reportingin":
sendevent("RadioMessage", "f", RADIO_CT_REPORTINGIN);
sendevent("Radio", "f", RADIO_CT_REPORTINGIN);
break;
case "getout":
sendevent("RadioMessage", "f", RADIO_GETOUT);
sendevent("Radio", "f", RADIO_GETOUT);
break;
case "negative":
sendevent("RadioMessage", "f", RADIO_NEGATIVE);
sendevent("Radio", "f", RADIO_NEGATIVE);
break;
case "enemydown":
sendevent("RadioMessage", "f", RADIO_ENEMYDOWN);
sendevent("Radio", "f", RADIO_ENEMYDOWN);
break;
case "radio1":
VGUI_RadioCommands();
break;
case "radio2":
VGUI_RadioGroup();
VGUI_RadioGroup();
break;
case "radio3":
VGUI_RadioResponse();
VGUI_RadioResponse();
break;
default:
return FALSE;
@ -320,36 +312,36 @@ void Game_Parse_Event(float fHeader) {
if (fHeader == EV_WEAPON_DRAW) {
fWeaponEventPlayer = readbyte();
for (s = 0; s < numclientseats; s++) //lame loop
if (seats[s].ePlayer.entnum == fWeaponEventPlayer) {
if (g_seats[s].m_ePlayer.entnum == fWeaponEventPlayer) {
setproperty(VF_ACTIVESEAT, (float)s);
pSeat = &seats[s];
pSeat = &g_seats[s];
break;
}
Weapon_Draw(getstatf(STAT_ACTIVEWEAPON));
} else if (fHeader == EV_WEAPON_PRIMARYATTACK) {
fWeaponEventPlayer = readbyte();
for (s = 0; s < numclientseats; s++) //lame loop
if (seats[s].ePlayer.entnum == fWeaponEventPlayer) {
if (g_seats[s].m_ePlayer.entnum == fWeaponEventPlayer) {
setproperty(VF_ACTIVESEAT, (float)s);
pSeat = &seats[s];
pSeat = &g_seats[s];
break;
}
Weapon_PrimaryAttack(getstatf(STAT_ACTIVEWEAPON));
} else if (fHeader == EV_WEAPON_SECONDARYATTACK) {
fWeaponEventPlayer = readbyte();
for (s = 0; s < numclientseats; s++) //lame loop
if (seats[s].ePlayer.entnum == fWeaponEventPlayer) {
if (g_seats[s].m_ePlayer.entnum == fWeaponEventPlayer) {
setproperty(VF_ACTIVESEAT, (float)s);
pSeat = &seats[s];
pSeat = &g_seats[s];
break;
}
Weapon_SecondaryAttack(getstatf(STAT_ACTIVEWEAPON));
} else if (fHeader == EV_WEAPON_RELOAD) {
fWeaponEventPlayer = readbyte();
for (s = 0; s < numclientseats; s++) //lame loop
if (seats[s].ePlayer.entnum == fWeaponEventPlayer) {
if (g_seats[s].m_ePlayer.entnum == fWeaponEventPlayer) {
setproperty(VF_ACTIVESEAT, (float)s);
pSeat = &seats[s];
pSeat = &g_seats[s];
break;
}
Weapon_Reload(getstatf(STAT_ACTIVEWEAPON));

View File

@ -86,8 +86,8 @@ HUD_DrawRedNumber
Draws a normal number
=================
*/
void HUD_DrawNumber(int iNumber, vector vPos, float fAlpha, vector vColor) {
drawsubpic(vPos, [24,25], HUD_NUMFILE_LAYER, [vHUDNumPos[iNumber], 0], [NUMSIZE_X, NUMSIZE_Y], vColor, fAlpha, DRAWFLAG_ADDITIVE);
void HUD_DrawNumber(int iNumber, vector vecPos, float fAlpha, vector vColor) {
drawsubpic(vecPos, [24,25], HUD_NUMFILE_LAYER, [vHUDNumPos[iNumber], 0], [NUMSIZE_X, NUMSIZE_Y], vColor, fAlpha, DRAWFLAG_ADDITIVE);
}
/*
@ -97,16 +97,16 @@ HUD_DrawNums
Draws numerals quickly for health, armor etc.
=================
*/
void HUD_DrawNums(float fNumber, vector vPos, float fAlpha, vector vColor) {
void HUD_DrawNums(float fNumber, vector vecPos, float fAlpha, vector vColor) {
int iNumber = fNumber;
if (iNumber > 0) {
while (iNumber > 0) {
HUD_DrawNumber((float)iNumber % 10, vPos, fAlpha, vColor);
HUD_DrawNumber((float)iNumber % 10, vecPos, fAlpha, vColor);
iNumber = iNumber / 10;
vPos[0] -= 20;
vecPos[0] -= 20;
}
} else {
HUD_DrawNumber(0, vPos, fAlpha, vColor);
HUD_DrawNumber(0, vecPos, fAlpha, vColor);
}
}
@ -485,7 +485,7 @@ void HUD_DrawRadar(void) {
Overview_DrawLayer();
makevectors(view_angles);
setproperty(VF_ORIGIN, [pSeat->vPlayerOrigin[0], pSeat->vPlayerOrigin[1], fZoom] );
setproperty(VF_ORIGIN, [pSeat->m_vecPredictedOrigin[0], pSeat->m_vecPredictedOrigin[1], fZoom]);
setproperty(VF_ANGLES, [Math_Lerp(90, 60, pSeat.fMapLerp), view_angles[1], 0]);
setproperty(VF_DRAWWORLD, 0);
renderscene();

View File

@ -21,7 +21,7 @@ HUD_DrawCrosshair
Draws the cursor every frame, unless spectator
=================
*/
void HUD_DrawCrosshair(void) {
void HUD_DrawCrosshair(void) {
int iCrosshairDistance;
int iLineLength;
@ -39,7 +39,7 @@ void HUD_DrawCrosshair(void) {
fDistance = fDistance * 2;
} else if (getstatf(STAT_FLAGS) & FL_CROUCHING) { // Crouching...
fDistance = fDistance * 0.5;
} else if (vlen(pSeat->ePlayer.velocity) > 120) { // Running, not walking
} else if (vlen(pSeat->m_ePlayer.velocity) > 120) { // Running, not walking
fDistance = fDistance * 1.5;
}

View File

@ -20,14 +20,15 @@
int iOrbituaryScroll;
float fOrbituaryTime;
typedef struct {
typedef struct
{
string sSprite;
vector vOrigin;
vector vSize;
} weaponiconinfo_t;
// It's easier to just look up the info than to create it on the fly...
weaponiconinfo_t wpIconTable[ CS_WEAPON_COUNT ] = {
weaponiconinfo_t wpIconTable[CS_WEAPON_COUNT] = {
{ "", '0 0', '0 0' }, //WEAPON_NONE
{ "sprites/640hud1.spr_0.tga", '0.75 0', '0.1875 0.0625' }, //WEAPON_KNIFE
{ "sprites/640hud1.spr_0.tga", '0.75 0.125', '0.125 0.0625' }, //WEAPON_USP45
@ -58,7 +59,8 @@ weaponiconinfo_t wpIconTable[ CS_WEAPON_COUNT ] = {
{ "", '0 0', '-1 0.0625' } //WEAPON_SMOKEGRENADE
};
typedef struct {
typedef struct
{
string sAttacker;
vector vColor1;
string sVictim;
@ -70,7 +72,7 @@ typedef struct {
float fOffset3;
} orbituaryinfo_t;
orbituaryinfo_t orbBuffer[ ORBITUARY_LINES ];
orbituaryinfo_t orbBuffer[ORBITUARY_LINES];
/*
=================
@ -79,36 +81,36 @@ HUD_DrawOrbituaries
This actually displays the contents of orbBuffer
=================
*/
void HUD_DrawOrbituaries( void ) {
vector vOrbPos = video_mins + [ video_res[0] - 200, 56 ];
void HUD_DrawOrbituaries(void) {
vector vOrbPos = video_mins + [video_res[0] - 200, 56];
drawfont = FONT_CON;
if ( fOrbituaryTime < time && iOrbituaryScroll >= 0 ) {
if (fOrbituaryTime < time && iOrbituaryScroll >= 0) {
// We are cheap, just clear the attacker and we're good.
orbBuffer[ iOrbituaryScroll ].sAttacker = "";
orbBuffer[iOrbituaryScroll].sAttacker = "";
iOrbituaryScroll--;
fOrbituaryTime = time + ORBITUARY_TIME;
}
for ( int i = 0; i < ORBITUARY_LINES; i++ ) {
if ( orbBuffer[ i ].sAttacker == "" ) {
for (int i = 0; i < ORBITUARY_LINES; i++) {
if (orbBuffer[i].sAttacker == "") {
return;
}
// Calculate the position based on the saved offsets
vOrbPos[0] = video_mins[0] + video_res[0] - ( orbBuffer[ i ].fOffset1 + orbBuffer[ i ].fOffset2 + orbBuffer[ i ].fOffset3 ) - 16;
vOrbPos[0] = video_mins[0] + video_res[0] - (orbBuffer[i].fOffset1 + orbBuffer[i].fOffset2 + orbBuffer[i].fOffset3) - 16;
// Draw the attacker's name, shadow first
//drawstring( vOrbPos, orbBuffer[ i ].sAttacker, '12 12', orbBuffer[ i ].vColor1, VGUI_WINDOW_FGALPHA, 0 );
//drawstring(vOrbPos, orbBuffer[i].sAttacker, '12 12', orbBuffer[i].vColor1, VGUI_WINDOW_FGALPHA, 0);
// Draw the weapon icon
if ( orbBuffer[ i ].fHeadShot == TRUE ) {
drawsubpic( vOrbPos + [ orbBuffer[ i ].fOffset1 - 4, -4 ], '36 16', "sprites/640hud1.spr_0.tga", '0 0.9375', '0.140625 0.0625', '1 0.5 0', 1, DRAWFLAG_ADDITIVE );
if (orbBuffer[i].fHeadShot == TRUE) {
drawsubpic(vOrbPos + [orbBuffer[i].fOffset1 - 4, -4], '36 16', "sprites/640hud1.spr_0.tga", '0 0.9375', '0.140625 0.0625', '1 0.5 0', 1, DRAWFLAG_ADDITIVE);
} else {
drawsubpic( vOrbPos + [ orbBuffer[ i ].fOffset1, -4 ], wpIconTable[ orbBuffer[ i ].fWeapon ].vSize * 256, wpIconTable[ orbBuffer[ i ].fWeapon ].sSprite, wpIconTable[ orbBuffer[ i ].fWeapon ].vOrigin, wpIconTable[ orbBuffer[ i ].fWeapon ].vSize, '1 0.5 0', 1, DRAWFLAG_ADDITIVE );
drawsubpic(vOrbPos + [orbBuffer[i].fOffset1, -4], wpIconTable[orbBuffer[i].fWeapon].vSize * 256, wpIconTable[orbBuffer[i].fWeapon].sSprite, wpIconTable[orbBuffer[i].fWeapon].vOrigin, wpIconTable[orbBuffer[i].fWeapon].vSize, '1 0.5 0', 1, DRAWFLAG_ADDITIVE);
}
// Draw the victim's name
//drawstring( vOrbPos + [ orbBuffer[ i ].fOffset2 + orbBuffer[ i ].fOffset1, 0 ], orbBuffer[ i ].sVictim, '12 12', orbBuffer[ i ].vColor2, VGUI_WINDOW_FGALPHA, 0 );
//drawstring(vOrbPos + [orbBuffer[i].fOffset2 + orbBuffer[i].fOffset1, 0], orbBuffer[i].sVictim, '12 12', orbBuffer[i].vColor2, VGUI_WINDOW_FGALPHA, 0);
vOrbPos[1] += 18;
}
}
@ -120,44 +122,44 @@ HUD_UpdateOrbituaries
Update the buffer for orbituaries with infos and whatnot
=================
*/
void HUD_AddOrbituaries( float fAttacker, float fAttackerTeam, float fVictim, float fVictimTeam, float fWeapon, float fHeadshot ) {
void HUD_AddOrbituaries(float fAttacker, float fAttackerTeam, float fVictim, float fVictimTeam, float fWeapon, float fHeadshot) {
if ( iOrbituaryScroll < ( ORBITUARY_LINES - 1 ) ) {
if (iOrbituaryScroll < (ORBITUARY_LINES - 1)) {
// Fill up the buffer
orbBuffer[ iOrbituaryScroll + 1 ].sAttacker = getplayerkeyvalue( fAttacker, "name" );
//orbBuffer[ iOrbituaryScroll + 1 ].vColor1 = HUD_GetChatColor( fAttackerTeam );
orbBuffer[ iOrbituaryScroll + 1 ].sVictim = getplayerkeyvalue( fVictim, "name" );
//orbBuffer[ iOrbituaryScroll + 1 ].vColor2 = HUD_GetChatColor( fVictimTeam );
orbBuffer[ iOrbituaryScroll + 1 ].fWeapon = fWeapon;
orbBuffer[ iOrbituaryScroll + 1 ].fHeadShot = fHeadshot;
orbBuffer[iOrbituaryScroll + 1].sAttacker = getplayerkeyvalue(fAttacker, "name");
//orbBuffer[iOrbituaryScroll + 1].vColor1 = HUD_GetChatColor(fAttackerTeam);
orbBuffer[iOrbituaryScroll + 1].sVictim = getplayerkeyvalue(fVictim, "name");
//orbBuffer[iOrbituaryScroll + 1].vColor2 = HUD_GetChatColor(fVictimTeam);
orbBuffer[iOrbituaryScroll + 1].fWeapon = fWeapon;
orbBuffer[iOrbituaryScroll + 1].fHeadShot = fHeadshot;
orbBuffer[ iOrbituaryScroll + 1 ].fOffset1 = stringwidth( orbBuffer[ iOrbituaryScroll + 1 ].sAttacker, TRUE ) + 8;
orbBuffer[ iOrbituaryScroll + 1 ].fOffset2 = ( wpIconTable[ fWeapon ].vSize[0] * 256 ) + 8;
orbBuffer[ iOrbituaryScroll + 1 ].fOffset3 = stringwidth( orbBuffer[ iOrbituaryScroll + 1 ].sVictim, TRUE ) + 8;
orbBuffer[iOrbituaryScroll + 1].fOffset1 = stringwidth(orbBuffer[iOrbituaryScroll + 1].sAttacker, TRUE) + 8;
orbBuffer[iOrbituaryScroll + 1].fOffset2 = (wpIconTable[fWeapon].vSize[0] * 256) + 8;
orbBuffer[iOrbituaryScroll + 1].fOffset3 = stringwidth(orbBuffer[iOrbituaryScroll + 1].sVictim, TRUE) + 8;
iOrbituaryScroll++;
} else {
for ( int i = 0; i < ( ORBITUARY_LINES - 1 ); i++ ) {
for (int i = 0; i < (ORBITUARY_LINES - 1); i++) {
// Rearrange the order, clear the oldest
orbBuffer[ i ].sAttacker = orbBuffer[ i + 1 ].sAttacker;
orbBuffer[ i ].vColor1 = orbBuffer[ i + 1 ].vColor1;
orbBuffer[ i ].sVictim = orbBuffer[ i + 1 ].sVictim;
orbBuffer[ i ].vColor2 = orbBuffer[ i + 1 ].vColor2;
orbBuffer[ i ].fWeapon = orbBuffer[ i + 1 ].fWeapon;
orbBuffer[ i ].fHeadShot = orbBuffer[ i + 1 ].fHeadShot;
orbBuffer[ i ].fOffset1 = orbBuffer[ i + 1 ].fOffset1;
orbBuffer[ i ].fOffset2 = orbBuffer[ i + 1 ].fOffset2;
orbBuffer[ i ].fOffset3 = orbBuffer[ i + 1 ].fOffset3;
orbBuffer[i].sAttacker = orbBuffer[i + 1].sAttacker;
orbBuffer[i].vColor1 = orbBuffer[i + 1].vColor1;
orbBuffer[i].sVictim = orbBuffer[i + 1].sVictim;
orbBuffer[i].vColor2 = orbBuffer[i + 1].vColor2;
orbBuffer[i].fWeapon = orbBuffer[i + 1].fWeapon;
orbBuffer[i].fHeadShot = orbBuffer[i + 1].fHeadShot;
orbBuffer[i].fOffset1 = orbBuffer[i + 1].fOffset1;
orbBuffer[i].fOffset2 = orbBuffer[i + 1].fOffset2;
orbBuffer[i].fOffset3 = orbBuffer[i + 1].fOffset3;
}
// After rearranging, add the newest to the bottom.
orbBuffer[ ORBITUARY_LINES - 1 ].sAttacker = getplayerkeyvalue( fAttacker, "name" );
orbBuffer[ ORBITUARY_LINES - 1 ].vColor1 = HUD_GetChatColor( fAttackerTeam );
orbBuffer[ ORBITUARY_LINES - 1 ].sVictim = getplayerkeyvalue( fVictim, "name" );
orbBuffer[ ORBITUARY_LINES - 1 ].vColor2 = HUD_GetChatColor( fVictimTeam );
orbBuffer[ ORBITUARY_LINES - 1 ].fWeapon = fWeapon;
orbBuffer[ ORBITUARY_LINES - 1 ].fHeadShot = fHeadshot;
orbBuffer[ ORBITUARY_LINES - 1 ].fOffset1 = stringwidth( orbBuffer[ ORBITUARY_LINES - 1 ].sAttacker, TRUE, '12 12' ) + 8;
orbBuffer[ ORBITUARY_LINES - 1 ].fOffset2 = ( wpIconTable[ fWeapon ].vSize[0] * 256 ) + 8;
orbBuffer[ ORBITUARY_LINES - 1 ].fOffset3 = stringwidth( orbBuffer[ ORBITUARY_LINES - 1 ].sVictim, TRUE, '12 12' ) + 8;
orbBuffer[ORBITUARY_LINES - 1].sAttacker = getplayerkeyvalue(fAttacker, "name");
orbBuffer[ORBITUARY_LINES - 1].vColor1 = HUD_GetChatColor(fAttackerTeam);
orbBuffer[ORBITUARY_LINES - 1].sVictim = getplayerkeyvalue(fVictim, "name");
orbBuffer[ORBITUARY_LINES - 1].vColor2 = HUD_GetChatColor(fVictimTeam);
orbBuffer[ORBITUARY_LINES - 1].fWeapon = fWeapon;
orbBuffer[ORBITUARY_LINES - 1].fHeadShot = fHeadshot;
orbBuffer[ORBITUARY_LINES - 1].fOffset1 = stringwidth(orbBuffer[ORBITUARY_LINES - 1].sAttacker, TRUE, '12 12') + 8;
orbBuffer[ORBITUARY_LINES - 1].fOffset2 = (wpIconTable[fWeapon].vSize[0] * 256) + 8;
orbBuffer[ORBITUARY_LINES - 1].fOffset3 = stringwidth(orbBuffer[ORBITUARY_LINES - 1].sVictim, TRUE, '12 12') + 8;
}
fOrbituaryTime = time + ORBITUARY_TIME;

View File

@ -25,8 +25,8 @@ The scope borders are split up into multiple parts.
We want to fill the screen, so we gotta do some hacking.
=================
*/
void HUD_DrawScope_Pic( vector vPos, vector vSize, string sSprite ) {
drawpic( ( vPos * fSBScale ) + [ fSBOffset, 0 ], sSprite, vSize * fSBScale, '1 1 1', 1.0f );
void HUD_DrawScope_Pic(vector vecPos, vector vSize, string sSprite) {
drawpic((vecPos * fSBScale) + [fSBOffset, 0], sSprite, vSize * fSBScale, '1 1 1', 1.0f);
}
/*
@ -36,30 +36,30 @@ HUD_DrawScope
Tries to draw a scope whenever viewzoom < 1.0f
=================
*/
void HUD_DrawScope( void ) {
void HUD_DrawScope(void) {
static vector vScopePos;
// Draw the scope in the middle, seperately from the border
vScopePos = ( video_res / 2 ) + '-128 -128';
drawpic( vScopePos, "sprites/sniper_scope.spr_0.tga", '256 256', '1 1 1', 1.0f, DRAWFLAG_NORMAL );
vScopePos = (video_res / 2) + '-128 -128';
drawpic(vScopePos, "sprites/sniper_scope.spr_0.tga", '256 256', '1 1 1', 1.0f, DRAWFLAG_NORMAL);
// Border scale to fit the screen
fSBScale = video_res[1] / 480;
fSBOffset = ( video_res[0] / 2 ) - ( ( 640 * fSBScale ) / 2 );
fSBOffset = (video_res[0] / 2) - ((640 * fSBScale) / 2);
// Type 1 Border... more coming soon?
HUD_DrawScope_Pic( '0 0', '192 112', "sprites/top_left.spr_0.tga" );
HUD_DrawScope_Pic( '192 0', '256 112', "sprites/top.spr_0.tga" );
HUD_DrawScope_Pic( '448 0', '192 112', "sprites/top_right.spr_0.tga" );
HUD_DrawScope_Pic( '0 112', '192 256', "sprites/left.spr_0.tga" );
HUD_DrawScope_Pic( '448 112', '192 256', "sprites/right.spr_0.tga" );
HUD_DrawScope_Pic( '0 368', '192 112', "sprites/bottom_left.spr_0.tga" );
HUD_DrawScope_Pic( '192 368', '256 112', "sprites/bottom.spr_0.tga" );
HUD_DrawScope_Pic( '448 368', '192 112', "sprites/bottom_right.spr_0.tga" );
HUD_DrawScope_Pic('0 0', '192 112', "sprites/top_left.spr_0.tga");
HUD_DrawScope_Pic('192 0', '256 112', "sprites/top.spr_0.tga");
HUD_DrawScope_Pic('448 0', '192 112', "sprites/top_right.spr_0.tga");
HUD_DrawScope_Pic('0 112', '192 256', "sprites/left.spr_0.tga");
HUD_DrawScope_Pic('448 112', '192 256', "sprites/right.spr_0.tga");
HUD_DrawScope_Pic('0 368', '192 112', "sprites/bottom_left.spr_0.tga");
HUD_DrawScope_Pic('192 368', '256 112', "sprites/bottom.spr_0.tga");
HUD_DrawScope_Pic('448 368', '192 112', "sprites/bottom_right.spr_0.tga");
// Rect borders left and right
if ( fSBOffset > 0 ) {
drawfill( '0 0', [ fSBOffset, video_res[1] ], '0 0 0', 1.0f );
drawfill( [ ( 640 * fSBScale ) + fSBOffset, 0 ], [ fSBOffset, video_res[1] ], '0 0 0', 1.0f );
if (fSBOffset > 0) {
drawfill('0 0', [fSBOffset, video_res[1]], '0 0 0', 1.0f);
drawfill([(640 * fSBScale) + fSBOffset, 0], [fSBOffset, video_res[1]], '0 0 0', 1.0f);
}
}

View File

@ -14,7 +14,8 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
typedef struct {
typedef struct
{
string sSprite;
vector vOrigin;
} weaponsymbolinfo_t;
@ -50,7 +51,7 @@ weaponsymbolinfo_t wpSymbolTable[CS_WEAPON_COUNT] = {
{ "sprites/640hud3.spr_0.tga", [0,0.52734375] } //WEAPON_SMOKEGRENADE
};
vector vHUDSlotNumPos[5] = {
vector g_vecHUDNums[5] = {
[0.65625,0.28125], // 1 PRIMARY
[0.734375,0.28125], // 2 SECONDARY
[0.8125,0.28125], // 3 MELEE
@ -256,15 +257,15 @@ void HUD_DrawWeaponSelect_Forward(void)
return;
}
if (pSeat->fHUDWeaponSelected == 0) {
if (pSeat->m_iHUDWeaponSelected == 0) {
sound(self, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected = HUD_DrawWeaponSelect_GetWeapon(HUD_DrawWeaponSelect_NextItem(wptTable[getstatf(STAT_ACTIVEWEAPON)].iSlot));
pSeat->m_iHUDWeaponSelected = HUD_DrawWeaponSelect_GetWeapon(HUD_DrawWeaponSelect_NextItem(wptTable[getstatf(STAT_ACTIVEWEAPON)].iSlot));
} else {
sound(self, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected = HUD_DrawWeaponSelect_GetWeapon(HUD_DrawWeaponSelect_NextItem(wptTable[pSeat->fHUDWeaponSelected].iSlot));
pSeat->m_iHUDWeaponSelected = HUD_DrawWeaponSelect_GetWeapon(HUD_DrawWeaponSelect_NextItem(wptTable[pSeat->m_iHUDWeaponSelected].iSlot));
}
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_flHUDWeaponSelectTime = time + 3;
}
/*
@ -280,15 +281,15 @@ void HUD_DrawWeaponSelect_Back(void)
return;
}
if (pSeat->fHUDWeaponSelected == 0) {
if (pSeat->m_iHUDWeaponSelected == 0) {
sound(self, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected = HUD_DrawWeaponSelect_GetWeapon(HUD_DrawWeaponSelect_PreviousItem(wptTable[getstatf(STAT_ACTIVEWEAPON)].iSlot));
pSeat->m_iHUDWeaponSelected = HUD_DrawWeaponSelect_GetWeapon(HUD_DrawWeaponSelect_PreviousItem(wptTable[getstatf(STAT_ACTIVEWEAPON)].iSlot));
} else {
sound(self, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected = HUD_DrawWeaponSelect_GetWeapon(HUD_DrawWeaponSelect_PreviousItem(wptTable[pSeat->fHUDWeaponSelected].iSlot));
pSeat->m_iHUDWeaponSelected = HUD_DrawWeaponSelect_GetWeapon(HUD_DrawWeaponSelect_PreviousItem(wptTable[pSeat->m_iHUDWeaponSelected].iSlot));
}
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_flHUDWeaponSelectTime = time + 3;
}
/*
@ -298,9 +299,9 @@ HUD_DrawWeaponSelect_Num
Draws the numbers 1-4 on the selection display
=================
*/
void HUD_DrawWeaponSelect_Num(vector vPos, float fValue)
void HUD_DrawWeaponSelect_Num(vector vecPos, float fValue)
{
drawsubpic(vPos, [20,20], "sprites/640hud7.spr_0.tga", vHUDSlotNumPos[fValue], [0.078125, 0.078125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
drawsubpic(vecPos, [20,20], "sprites/640hud7.spr_0.tga", g_vecHUDNums[fValue], [0.078125, 0.078125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
}
/*
@ -311,11 +312,11 @@ Drawn every frame through HUD.c
=================
*/
void HUD_DrawWeaponSelect(void)
{
if (pSeat->fHUDWeaponSelectTime < time) {
if (pSeat->fHUDWeaponSelected) {
{
if (pSeat->m_flHUDWeaponSelectTime < time) {
if (pSeat->m_iHUDWeaponSelected) {
sound(self, CHAN_ITEM, "common/wpn_hudoff.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected = 0;
pSeat->m_iHUDWeaponSelected = 0;
}
return;
}
@ -329,7 +330,7 @@ void HUD_DrawWeaponSelect(void)
// Again, grenades are treated seperately
if (i == SLOT_GRENADE) {
int ihasnade = FALSE;
if (wptTable[pSeat->fHUDWeaponSelected].iSlot == SLOT_GRENADE) {
if (wptTable[pSeat->m_iHUDWeaponSelected].iSlot == SLOT_GRENADE) {
if (getstati_punf(STAT_ITEM_HEGRENADE)) {
drawsubpic(vSelectPos + [0,20], [170,45], wpSymbolTable[WEAPON_HEGRENADE].sSprite, wpSymbolTable[WEAPON_HEGRENADE].vOrigin, [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
if (pSeat->iHUDGrenadesSelected == WEAPON_HEGRENADE) {
@ -361,8 +362,8 @@ void HUD_DrawWeaponSelect(void)
vSelectPos[0] += 20;
}
} else {
if (wptTable[pSeat->fHUDWeaponSelected].iSlot == i) {
drawsubpic(vSelectPos + [0,20], [170,45], wpSymbolTable[pSeat->fHUDWeaponSelected].sSprite, wpSymbolTable[pSeat->fHUDWeaponSelected].vOrigin, [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
if (wptTable[pSeat->m_iHUDWeaponSelected].iSlot == i) {
drawsubpic(vSelectPos + [0,20], [170,45], wpSymbolTable[pSeat->m_iHUDWeaponSelected].sSprite, wpSymbolTable[pSeat->m_iHUDWeaponSelected].vOrigin, [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
drawsubpic(vSelectPos + [0,20], [170,45], "sprites/640hud3.spr_0.tga", [0,0.703125], [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
vSelectPos[0] += 170;
} else {
@ -377,7 +378,7 @@ void HUD_SlotSelect(int i)
}
var float fHUDWeaponLast;
var int iHUDWeaponLast;
/*
=================
HUD_DrawWeaponSelect_Trigger
@ -387,11 +388,11 @@ Called by CSQC_Input_Frame when conditions are met
*/
void HUD_DrawWeaponSelect_Trigger(void)
{
fHUDWeaponLast = getstatf(STAT_ACTIVEWEAPON);
sendevent("PlayerSwitchWeapon", "f", pSeat->fHUDWeaponSelected);
iHUDWeaponLast = getstati(STAT_ACTIVEWEAPON);
sendevent("PlayerSwitchWeapon", "i", pSeat->m_iHUDWeaponSelected);
sound(self, CHAN_ITEM, "common/wpn_select.wav", 0.5f, ATTN_NONE);
pSeat->fHUDWeaponSelectTime = 0;
pSeat->fHUDWeaponSelected = 0;
pSeat->m_flHUDWeaponSelectTime = 0;
pSeat->m_iHUDWeaponSelected = 0;
}
/*
@ -403,6 +404,6 @@ Returns the last weapon we've used
*/
void HUD_DrawWeaponSelect_Last(void)
{
sendevent("PlayerSwitchWeapon", "f", fHUDWeaponLast);
fHUDWeaponLast = getstatf(STAT_ACTIVEWEAPON);
sendevent("PlayerSwitchWeapon", "i", iHUDWeaponLast);
iHUDWeaponLast = getstatf(STAT_ACTIVEWEAPON);
}

View File

@ -36,7 +36,7 @@ void Client_Init(float apilevel, string enginename, float engineversion)
precache_model("models/rshell.mdl");
precache_model("models/rshell_big.mdl");
precache_model("models/shotgunshell.mdl");
precache_pic( sprintf( "overviews/%s.bmp", mapname ) );
precache_pic(sprintf("overviews/%s.bmp", mapname));
PARTICLE_SMOKEGRENADE = particleeffectnum("smokegren");

View File

@ -23,21 +23,21 @@ Nightvision_Toggle
Called by the cmd 'nightvision'
=================
*/
void Nightvision_Toggle( void ) {
if( getplayerkeyvalue( player_localnum, "*spec" ) == "1" ) {
void Nightvision_Toggle(void) {
if(getplayerkeyvalue(player_localnum, "*spec") == "1") {
return;
}
if ( !( getstatf( STAT_EQUIPMENT ) & EQUIPMENT_NIGHTVISION ) ) {
if (!(getstatf(STAT_EQUIPMENT) & EQUIPMENT_NIGHTVISION)) {
return;
}
iNightVision = 1 - iNightVision;
if ( iNightVision == TRUE ) {
localsound( "items/nvg_on.wav", CHAN_ITEM, 1 );
if (iNightVision == TRUE) {
localsound("items/nvg_on.wav", CHAN_ITEM, 1);
} else {
localsound( "items/nvg_off.wav", CHAN_ITEM, 1 );
localsound("items/nvg_off.wav", CHAN_ITEM, 1);
}
}
@ -48,14 +48,14 @@ Nightvision_PreDraw
Called before rendering the frame in Draw.c
=================
*/
void Nightvision_PreDraw( void ) {
if( getplayerkeyvalue( player_localnum, "*spec" ) != "0" ) {
void Nightvision_PreDraw(void) {
if(getplayerkeyvalue(player_localnum, "*spec") != "0") {
iNightVision = FALSE;
return;
}
if ( iNightVision == TRUE ) {
dynamiclight_add( pSeat->vPlayerOrigin, 500, '0 0.45 0');
if (iNightVision == TRUE) {
dynamiclight_add(pSeat->m_vecPredictedOrigin, 500, '0 0.45 0');
}
}
@ -66,8 +66,8 @@ Nightvision_PostDraw
Called after rendering the frame in Draw.c
=================
*/
void Nightvision_PostDraw(int x, int y, int w, int h ) {
if ( iNightVision == TRUE ) {
drawfill( [x,y], [w,h], '0 0.5 0', 1, DRAWFLAG_ADDITIVE );
void Nightvision_PostDraw(int x, int y, int w, int h) {
if (iNightVision == TRUE) {
drawfill([x,y], [w,h], '0 0.5 0', 1, DRAWFLAG_ADDITIVE);
}
}

View File

@ -21,7 +21,8 @@ Probably seemed impractical, feel free to make this
parse layers etc. properly though.
*/
typedef struct {
typedef struct
{
float fZoom;
vector vOrigin;
int iRotated;
@ -43,7 +44,7 @@ Overview_Init
Initializes the globals and whatnot
=================
*/
void Overview_Init( void ) {
void Overview_Init(void) {
int *iImageSrc;
int iImageWidth = 0;
int iImageHeight = 0;
@ -54,96 +55,96 @@ void Overview_Init( void ) {
ovMap.vOrigin = '0 0 0';
ovMap.iRotated = FALSE;
filestream fOverview = fopen( sprintf( "overviews/%s.txt", mapname ), FILE_READ );
if ( fOverview != -1 ) {
for ( int i = 0;; i++ ) {
sTemp = fgets( fOverview );
if not ( sTemp ) {
filestream fOverview = fopen(sprintf("overviews/%s.txt", mapname), FILE_READ);
if (fOverview != -1) {
for (int i = 0;; i++) {
sTemp = fgets(fOverview);
if not (sTemp) {
break;
}
tokenize( sTemp );
if ( strtolower( argv( 0 ) ) == "zoom" ) {
ovMap.fZoom = stof( argv( 1 ) );
} else if ( strtolower( argv( 0 ) ) == "origin" ) {
ovMap.vOrigin = [ stof( argv( 1 ) ), stof( argv( 2 ) ), stof( argv( 3 ) ) ];
} else if ( strtolower( argv( 0 ) ) == "rotated" ) {
ovMap.iRotated = (int)stof( argv( 1 ) );
} else if ( strtolower( argv( 0 ) ) == "height" ) {
ovMap.fHeight = stof( argv( 1 ) );
tokenize(sTemp);
if (strtolower(argv(0)) == "zoom") {
ovMap.fZoom = stof(argv(1));
} else if (strtolower(argv(0)) == "origin") {
ovMap.vOrigin = [stof(argv(1)), stof(argv(2)), stof(argv(3))];
} else if (strtolower(argv(0)) == "rotated") {
ovMap.iRotated = (int)stof(argv(1));
} else if (strtolower(argv(0)) == "height") {
ovMap.fHeight = stof(argv(1));
}
}
fclose( fOverview );
fclose(fOverview);
} else {
print( sprintf( "[OVERVIEW] Couldn't load overviews/%s.txt\n", mapname ) );
print(sprintf("[OVERVIEW] Couldn't load overviews/%s.txt\n", mapname));
ovMap.sImagePath = __NULL__;
return;
}
if ( ovMap.iRotated == TRUE ) {
ovMap.vVert1 = ovMap.vOrigin -( ( 4096/ovMap.fZoom ) * '1 0.75 0' );
ovMap.vVert4 = ovMap.vOrigin + ( 4096/ovMap.fZoom ) * '1 0.75 0';
ovMap.vVert2 = [ ovMap.vVert1[0], ovMap.vVert4[1] ] ;
ovMap.vVert3 = [ ovMap.vVert4[0], ovMap.vVert1[1] ] ;
if (ovMap.iRotated == TRUE) {
ovMap.vVert1 = ovMap.vOrigin -((4096/ovMap.fZoom) * '1 0.75 0');
ovMap.vVert4 = ovMap.vOrigin + (4096/ovMap.fZoom) * '1 0.75 0';
ovMap.vVert2 = [ovMap.vVert1[0], ovMap.vVert4[1]] ;
ovMap.vVert3 = [ovMap.vVert4[0], ovMap.vVert1[1]] ;
} else {
ovMap.vVert1 = ovMap.vOrigin -( ( 4096/ovMap.fZoom ) * '0.75 1 0' );
ovMap.vVert4 = ovMap.vOrigin + ( 4096/ovMap.fZoom ) * '0.75 1 0';
ovMap.vVert2 = [ ovMap.vVert1[0], ovMap.vVert4[1] ] ;
ovMap.vVert3 = [ ovMap.vVert4[0], ovMap.vVert1[1] ] ;
ovMap.vVert1 = ovMap.vOrigin -((4096/ovMap.fZoom) * '0.75 1 0');
ovMap.vVert4 = ovMap.vOrigin + (4096/ovMap.fZoom) * '0.75 1 0';
ovMap.vVert2 = [ovMap.vVert1[0], ovMap.vVert4[1]] ;
ovMap.vVert3 = [ovMap.vVert4[0], ovMap.vVert1[1]] ;
}
ovMap.fCameraHeight = fabs( 4096/ovMap.fZoom );
ovMap.fCameraHeight = fabs(4096/ovMap.fZoom);
ovMap.sImagePath = "overview";
shaderforname( ovMap.sImagePath, sprintf("{\n{\nprogram default2d\nmap $rt:%s\n}\n}\n", ovMap.sImagePath ) );
shaderforname(ovMap.sImagePath, sprintf("{\n{\nprogram default2d\nmap $rt:%s\n}\n}\n", ovMap.sImagePath));
// Read the image and get rid of the burning green
iImageSrc = r_readimage( sprintf( "overviews/%s.bmp", mapname ), iImageWidth, iImageHeight );
if ( iImageSrc != __NULL__ ) {
for ( int i = 0; i < ( iImageWidth * iImageHeight ); i++ ) {
if ( iImageSrc[ i ] == 0xff00ff00i ) {
iImageSrc[ i ] = 0x00000000i;
iImageSrc = r_readimage(sprintf("overviews/%s.bmp", mapname), iImageWidth, iImageHeight);
if (iImageSrc != __NULL__) {
for (int i = 0; i < (iImageWidth * iImageHeight); i++) {
if (iImageSrc[i] == 0xff00ff00i) {
iImageSrc[i] = 0x00000000i;
}
}
r_uploadimage( ovMap.sImagePath, iImageWidth, iImageHeight, (void*)iImageSrc );
memfree( iImageSrc );
r_uploadimage(ovMap.sImagePath, iImageWidth, iImageHeight, (void*)iImageSrc);
memfree(iImageSrc);
}
}
void Overview_DrawLayer( void ) {
setproperty( VF_AFOV, 90 );
if ( ovMap.iRotated == TRUE ) {
R_BeginPolygon( ovMap.sImagePath );
R_PolygonVertex( [ ovMap.vVert4[0], ovMap.vVert4[1], ovMap.fHeight ], '1 0', '1 1 1', 1.0f ); // Top Left
R_PolygonVertex( [ ovMap.vVert3[0], ovMap.vVert3[1], ovMap.fHeight ], '1 1', '1 1 1', 1.0f ); // Top Right
R_PolygonVertex( [ ovMap.vVert1[0], ovMap.vVert1[1], ovMap.fHeight ], '0 1', '1 1 1', 1.0f ); // Bottom right
R_PolygonVertex( [ ovMap.vVert2[0], ovMap.vVert2[1], ovMap.fHeight ], '0 0', '1 1 1', 1.0f ); // Bottom left
void Overview_DrawLayer(void) {
setproperty(VF_AFOV, 90);
if (ovMap.iRotated == TRUE) {
R_BeginPolygon(ovMap.sImagePath);
R_PolygonVertex([ovMap.vVert4[0], ovMap.vVert4[1], ovMap.fHeight], '1 0', '1 1 1', 1.0f); // Top Left
R_PolygonVertex([ovMap.vVert3[0], ovMap.vVert3[1], ovMap.fHeight], '1 1', '1 1 1', 1.0f); // Top Right
R_PolygonVertex([ovMap.vVert1[0], ovMap.vVert1[1], ovMap.fHeight], '0 1', '1 1 1', 1.0f); // Bottom right
R_PolygonVertex([ovMap.vVert2[0], ovMap.vVert2[1], ovMap.fHeight], '0 0', '1 1 1', 1.0f); // Bottom left
R_EndPolygon();
} else {
R_BeginPolygon( ovMap.sImagePath );
R_PolygonVertex( [ ovMap.vVert4[0], ovMap.vVert4[1], ovMap.fHeight ], '0 0', '1 1 1', 1.0f ); // Top Left
R_PolygonVertex( [ ovMap.vVert3[0], ovMap.vVert3[1], ovMap.fHeight ], '1 0', '1 1 1', 1.0f ); // Top Right
R_PolygonVertex( [ ovMap.vVert1[0], ovMap.vVert1[1], ovMap.fHeight ], '1 1', '1 1 1', 1.0f ); // Bottom right
R_PolygonVertex( [ ovMap.vVert2[0], ovMap.vVert2[1], ovMap.fHeight ], '0 1', '1 1 1', 1.0f ); // Bottom left
R_BeginPolygon(ovMap.sImagePath);
R_PolygonVertex([ovMap.vVert4[0], ovMap.vVert4[1], ovMap.fHeight], '0 0', '1 1 1', 1.0f); // Top Left
R_PolygonVertex([ovMap.vVert3[0], ovMap.vVert3[1], ovMap.fHeight], '1 0', '1 1 1', 1.0f); // Top Right
R_PolygonVertex([ovMap.vVert1[0], ovMap.vVert1[1], ovMap.fHeight], '1 1', '1 1 1', 1.0f); // Bottom right
R_PolygonVertex([ovMap.vVert2[0], ovMap.vVert2[1], ovMap.fHeight], '0 1', '1 1 1', 1.0f); // Bottom left
R_EndPolygon();
}
for ( entity eFind = world; ( eFind = find( eFind, classname, "player" ) ); ) {
if ( getplayerkeyvalue( eFind.entnum - 1, "*team" ) == "1" ) {
R_BeginPolygon( "sprites/iplayerred.spr_0.tga" );
for (entity eFind = world; (eFind = find(eFind, classname, "player"));) {
if (getplayerkeyvalue(eFind.entnum - 1, "*team") == "1") {
R_BeginPolygon("sprites/iplayerred.spr_0.tga");
} else {
if ( getplayerkeyvalue( eFind.entnum - 1, "*dead" ) == "2" ) {
R_BeginPolygon( "sprites/iplayervip.spr_0.tga" );
if (getplayerkeyvalue(eFind.entnum - 1, "*dead") == "2") {
R_BeginPolygon("sprites/iplayervip.spr_0.tga");
} else {
R_BeginPolygon( "sprites/iplayerblue.spr_0.tga" );
R_BeginPolygon("sprites/iplayerblue.spr_0.tga");
}
}
float psize;
psize = Math_Lerp(64, 16, pSeat.fMapLerp);
R_PolygonVertex( [ eFind.absmax[0] + psize, eFind.absmin[1] - psize, ovMap.fHeight + 16 ], '1 0', '1 1 1', 1.0f ); // Top Right
R_PolygonVertex( [ eFind.absmin[0] - psize, eFind.absmin[1] - psize, ovMap.fHeight + 16 ], '0 0', '1 1 1', 1.0f ); // Top left
R_PolygonVertex( [ eFind.absmin[0] - psize, eFind.absmax[1] + psize, ovMap.fHeight + 16 ], '0 1', '1 1 1', 1.0f ); // Bottom left
R_PolygonVertex( [ eFind.absmax[0] + psize, eFind.absmax[1] + psize, ovMap.fHeight + 16 ], '1 1', '1 1 1', 1.0f ); // Bottom right
R_PolygonVertex([eFind.absmax[0] + psize, eFind.absmin[1] - psize, ovMap.fHeight + 16], '1 0', '1 1 1', 1.0f); // Top Right
R_PolygonVertex([eFind.absmin[0] - psize, eFind.absmin[1] - psize, ovMap.fHeight + 16], '0 0', '1 1 1', 1.0f); // Top left
R_PolygonVertex([eFind.absmin[0] - psize, eFind.absmax[1] + psize, ovMap.fHeight + 16], '0 1', '1 1 1', 1.0f); // Bottom left
R_PolygonVertex([eFind.absmax[0] + psize, eFind.absmax[1] + psize, ovMap.fHeight + 16], '1 1', '1 1 1', 1.0f); // Bottom right
R_EndPolygon();
}
@ -157,15 +158,15 @@ Draw one of two types of overviews.
This is for spectators.
=================
*/
void Overview_Draw( void ) {
if ( ovMap.sImagePath == __NULL__ ) {
void Overview_Draw(void) {
if (ovMap.sImagePath == __NULL__) {
return;
}
drawfill( video_mins, video_res, '0 0 0', 1.0f, 0 );
drawfill(video_mins, video_res, '0 0 0', 1.0f, 0);
Overview_DrawLayer();
makevectors( view_angles );
setproperty( VF_ORIGIN, ovMap.vOrigin + ( v_forward * -ovMap.fCameraHeight ) ) ;
makevectors(view_angles);
setproperty(VF_ORIGIN, ovMap.vOrigin + (v_forward * -ovMap.fCameraHeight)) ;
}

View File

@ -26,18 +26,18 @@ void Player_ReadEntity(float flIsNew)
{
player pl = (player)self;
if ( flIsNew == TRUE ) {
if (flIsNew == TRUE) {
spawnfunc_player();
pl.classname = "player";
pl.solid = SOLID_SLIDEBOX;
pl.drawmask = MASK_ENGINE;
pl.customphysics = Empty;
setsize( pl, VEC_HULL_MIN, VEC_HULL_MAX );
setsize(pl, VEC_HULL_MIN, VEC_HULL_MAX);
}else {
if (pl.entnum == player_localentnum) // FIXME: Splitscreen
{
pSeat = &seats[0]; //FIXME: splitscreen
pSeat = &g_seats[0]; //FIXME: splitscreen
for (int i = pl.sequence+1; i <= servercommandframe; i++) {
if (!getinputstate(i))
break; //erk?... too old?
@ -66,5 +66,5 @@ void Player_ReadEntity(float flIsNew)
pl.viewzoom = readfloat();
pl.jumptime = readfloat();
pl.teleport_time = readfloat();
setorigin( pl, pl.origin );
setorigin(pl, pl.origin);
}

View File

@ -2,6 +2,7 @@
#pragma progs_dat "../../../cstrike/data.pk3dir/csprogs.dat"
#define CSQC
#define CLIENT
#define CSTRIKE
#includelist

View File

@ -24,11 +24,11 @@ void Scores_Init(void)
VGUI_Scores_DrawTeam
====================
*/
vector VGUI_Scores_DrawTeam(vector vPos, float fTeam) {
vector VGUI_Scores_DrawTeam(vector vecPos, float fTeam) {
vector vColor;
// Preserve the old vector so we can draw the amount of players per team later on
vector vNewPos = vPos;
vector vNewPos = vecPos;
int iPlayerCount = 0;
@ -80,19 +80,19 @@ vector VGUI_Scores_DrawTeam(vector vPos, float fTeam) {
// If we've got no spectators, don't draw them.
if ((fTeam != TEAM_SPECTATOR) || (fTeam == TEAM_SPECTATOR && iPlayerCount > 0)) {
// The name/title of the team
drawstring(vPos+'24 0', sScoreTeams[ fTeam ], '12 12', vColor, 1.0f, 0);
drawfill(vPos+'19 24', '493 1', vColor, 1.0f);
drawstring(vecPos+'24 0', sScoreTeams[fTeam], '12 12', vColor, 1.0f, 0);
drawfill(vecPos+'19 24', '493 1', vColor, 1.0f);
// Draw the amount of rounds we've von
if (fTeam == TEAM_CT) {
drawstring_r(vPos+'320 0', sprintf("%i", getstati(STAT_WON_CT)), '12 12', vColor, 1.0f, 0);
drawstring_r(vecPos+'320 0', sprintf("%i", getstati(STAT_WON_CT)), '12 12', vColor, 1.0f, 0);
} else if (fTeam == TEAM_T) {
drawstring_r(vPos+'320 0', sprintf("%i", getstati(STAT_WON_T)), '12 12', vColor, 1.0f, 0);
drawstring_r(vecPos+'320 0', sprintf("%i", getstati(STAT_WON_T)), '12 12', vColor, 1.0f, 0);
}
// Now we know the playercount, so let's calculate the position next to the Teamname String and print it
vector vCountPos = vPos+'24 6';
vCountPos[0] += stringwidth(sScoreTeams[ fTeam ], FALSE, '12 12')+8;
vector vCountPos = vecPos+'24 6';
vCountPos[0] += stringwidth(sScoreTeams[fTeam], FALSE, '12 12')+8;
drawstring(vCountPos, sprintf(_("SCORE_PLAYERS"), iPlayerCount), '12 12', vColor, 1.0f, 0);
}
return vNewPos+'0 24';

View File

@ -22,9 +22,10 @@ static CUIWindow winBuyRifle;
static CUIWindow winBuyMG;
static CUIWindow winBuyEquipment;
typedef struct {
typedef struct
{
string str;
void() ptr;
void(void) ptr;
} btnarr_t;
void VGUI_Back1 (void) { winBuyHandgun.Hide(); winBuyMenu.Show(); }
@ -69,48 +70,48 @@ void VGUI_BuyHandgun(void)
static int initialized;
static CUIButton *btns;
if ( !initialized ) {
if (!initialized) {
vector btnpos = [16,0];
initialized = TRUE;
winBuyHandgun = spawn( CUIWindow );
winBuyHandgun.SetTitle( "Buy Handguns" );
winBuyHandgun.SetIcon( "gfx/vgui/buymenu" );
winBuyHandgun.SetSize( [420,320] );
g_uiDesktop.Add( winBuyHandgun );
winBuyHandgun = spawn(CUIWindow);
winBuyHandgun.SetTitle("Buy Handguns");
winBuyHandgun.SetIcon("gfx/vgui/buymenu");
winBuyHandgun.SetSize([420,320]);
g_uiDesktop.Add(winBuyHandgun);
btns = memalloc(sizeof(btnarr_t) * buy_handguns_t.length);
for (int i = 0; i < buy_handguns_t.length; i++) {
btnpos[1] += 30;
if ( buy_handguns_t[i].ptr == __NULL__ ) {
if (buy_handguns_t[i].ptr == __NULL__) {
continue;
}
btns[i] = spawn( CUIButton );
btns[i].SetPos( btnpos );
winBuyHandgun.Add( btns[i] );
btns[i] = spawn(CUIButton);
btns[i].SetPos(btnpos);
winBuyHandgun.Add(btns[i]);
}
}
if (stof(getplayerkeyvalue(player_localnum, "*team")) == TEAM_T) {
for (int i = 0; i < buy_handguns_t.length; i++) {
if ( buy_handguns_t[i].ptr == __NULL__ ) {
if (buy_handguns_t[i].ptr == __NULL__) {
continue;
}
btns[i].SetTitle( buy_handguns_t[i].str );
btns[i].SetFunc( buy_handguns_t[i].ptr );
btns[i].SetTitle(buy_handguns_t[i].str);
btns[i].SetFunc(buy_handguns_t[i].ptr);
}
} else {
for (int i = 0; i < buy_handguns_ct.length; i++) {
if ( buy_handguns_t[i].ptr == __NULL__ ) {
if (buy_handguns_t[i].ptr == __NULL__) {
continue;
}
btns[i].SetTitle( buy_handguns_ct[i].str );
btns[i].SetFunc( buy_handguns_ct[i].ptr );
btns[i].SetTitle(buy_handguns_ct[i].str);
btns[i].SetFunc(buy_handguns_ct[i].ptr);
}
}
winBuyMenu.Hide();
winBuyHandgun.Show();
winBuyHandgun.SetPos( ( video_res / 2 ) - ( winBuyHandgun.GetSize() / 2 ) );
winBuyHandgun.SetPos((video_res / 2) - (winBuyHandgun.GetSize() / 2));
}
void VGUI_BuyShotgun_1 (void) { sendevent("PlayerBuyWeapon", "f", WEAPON_M3); }
@ -128,32 +129,32 @@ void VGUI_BuyShotgun(void)
static int initialized;
static CUIButton *btns;
if ( !initialized ) {
if (!initialized) {
vector btnpos = [16,0];
initialized = TRUE;
winBuyShotgun = spawn( CUIWindow );
winBuyShotgun.SetTitle( "Buy Shotguns" );
winBuyShotgun.SetIcon( "gfx/vgui/buymenu" );
winBuyShotgun.SetSize( [420,320] );
g_uiDesktop.Add( winBuyShotgun );
winBuyShotgun = spawn(CUIWindow);
winBuyShotgun.SetTitle("Buy Shotguns");
winBuyShotgun.SetIcon("gfx/vgui/buymenu");
winBuyShotgun.SetSize([420,320]);
g_uiDesktop.Add(winBuyShotgun);
btns = memalloc(sizeof(btnarr_t) * buy_shotgun.length);
for (int i = 0; i < buy_shotgun.length; i++) {
btnpos[1] += 30;
if ( buy_shotgun[i].ptr == __NULL__ ) {
if (buy_shotgun[i].ptr == __NULL__) {
continue;
}
btns[i] = spawn( CUIButton );
btns[i].SetTitle( buy_shotgun[i].str );
btns[i].SetPos( btnpos );
btns[i].SetFunc( buy_shotgun[i].ptr );
winBuyShotgun.Add( btns[i] );
btns[i] = spawn(CUIButton);
btns[i].SetTitle(buy_shotgun[i].str);
btns[i].SetPos(btnpos);
btns[i].SetFunc(buy_shotgun[i].ptr);
winBuyShotgun.Add(btns[i]);
}
}
winBuyMenu.Hide();
winBuyShotgun.Show();
winBuyShotgun.SetPos( ( video_res / 2 ) - ( winBuyShotgun.GetSize() / 2 ) );
winBuyShotgun.SetPos((video_res / 2) - (winBuyShotgun.GetSize() / 2));
}
void VGUI_BuySMG_1 (void) { sendevent("PlayerBuyWeapon", "f", WEAPON_MP5); }
@ -185,48 +186,48 @@ void VGUI_BuySMG(void)
static int initialized;
static CUIButton *btns;
if ( !initialized ) {
if (!initialized) {
vector btnpos = [16,0];
initialized = TRUE;
winBuySMG = spawn( CUIWindow );
winBuySMG.SetTitle( "Buy SMGs" );
winBuySMG.SetIcon( "gfx/vgui/buymenu" );
winBuySMG.SetSize( [420,320] );
g_uiDesktop.Add( winBuySMG );
winBuySMG = spawn(CUIWindow);
winBuySMG.SetTitle("Buy SMGs");
winBuySMG.SetIcon("gfx/vgui/buymenu");
winBuySMG.SetSize([420,320]);
g_uiDesktop.Add(winBuySMG);
btns = memalloc(sizeof(btnarr_t) * buy_smg_t.length);
for (int i = 0; i < buy_smg_t.length; i++) {
btnpos[1] += 30;
if ( buy_smg_t[i].ptr == __NULL__ ) {
if (buy_smg_t[i].ptr == __NULL__) {
continue;
}
btns[i] = spawn( CUIButton );
btns[i].SetPos( btnpos );
winBuySMG.Add( btns[i] );
btns[i] = spawn(CUIButton);
btns[i].SetPos(btnpos);
winBuySMG.Add(btns[i]);
}
}
if (stof(getplayerkeyvalue(player_localnum, "*team")) == TEAM_T) {
for (int i = 0; i < buy_smg_t.length; i++) {
if ( buy_smg_t[i].ptr == __NULL__ ) {
if (buy_smg_t[i].ptr == __NULL__) {
continue;
}
btns[i].SetTitle( buy_smg_t[i].str );
btns[i].SetFunc( buy_smg_t[i].ptr );
btns[i].SetTitle(buy_smg_t[i].str);
btns[i].SetFunc(buy_smg_t[i].ptr);
}
} else {
for (int i = 0; i < buy_smg_ct.length; i++) {
if ( buy_smg_ct[i].ptr == __NULL__ ) {
if (buy_smg_ct[i].ptr == __NULL__) {
continue;
}
btns[i].SetTitle( buy_smg_ct[i].str );
btns[i].SetFunc( buy_smg_ct[i].ptr );
btns[i].SetTitle(buy_smg_ct[i].str);
btns[i].SetFunc(buy_smg_ct[i].ptr);
}
}
winBuyMenu.Hide();
winBuySMG.Show();
winBuySMG.SetPos( ( video_res / 2 ) - ( winBuySMG.GetSize() / 2 ) );
winBuySMG.SetPos((video_res / 2) - (winBuySMG.GetSize() / 2));
}
void VGUI_BuyRifle_1 (void) { sendevent("PlayerBuyWeapon", "f", WEAPON_AK47); }
@ -262,49 +263,49 @@ void VGUI_BuyRifle(void)
static int initialized;
static CUIButton *btns;
if ( !initialized ) {
if (!initialized) {
vector btnpos = [16,0];
initialized = TRUE;
winBuyRifle = spawn( CUIWindow );
winBuyRifle.SetTitle( "Buy Rifles" );
winBuyRifle.SetIcon( "gfx/vgui/buymenu" );
winBuyRifle.SetSize( [420,320] );
g_uiDesktop.Add( winBuyRifle );
winBuyRifle = spawn(CUIWindow);
winBuyRifle.SetTitle("Buy Rifles");
winBuyRifle.SetIcon("gfx/vgui/buymenu");
winBuyRifle.SetSize([420,320]);
g_uiDesktop.Add(winBuyRifle);
/* Dangerous if rifle_t and ct were different */
btns = memalloc(sizeof(btnarr_t) * buy_rifle_t.length);
for (int i = 0; i < buy_rifle_t.length; i++) {
btnpos[1] += 30;
if ( buy_rifle_t[i].ptr == __NULL__ ) {
if (buy_rifle_t[i].ptr == __NULL__) {
continue;
}
btns[i] = spawn( CUIButton );
btns[i].SetPos( btnpos );
winBuyRifle.Add( btns[i] );
btns[i] = spawn(CUIButton);
btns[i].SetPos(btnpos);
winBuyRifle.Add(btns[i]);
}
}
if (stof(getplayerkeyvalue(player_localnum, "*team")) == TEAM_T) {
for (int i = 0; i < buy_rifle_t.length; i++) {
if ( buy_rifle_t[i].ptr == __NULL__ ) {
if (buy_rifle_t[i].ptr == __NULL__) {
continue;
}
btns[i].SetTitle( buy_rifle_t[i].str );
btns[i].SetFunc( buy_rifle_t[i].ptr );
btns[i].SetTitle(buy_rifle_t[i].str);
btns[i].SetFunc(buy_rifle_t[i].ptr);
}
} else {
for (int i = 0; i < buy_rifle_ct.length; i++) {
if ( buy_rifle_t[i].ptr == __NULL__ ) {
if (buy_rifle_t[i].ptr == __NULL__) {
continue;
}
btns[i].SetTitle( buy_rifle_ct[i].str );
btns[i].SetFunc( buy_rifle_ct[i].ptr );
btns[i].SetTitle(buy_rifle_ct[i].str);
btns[i].SetFunc(buy_rifle_ct[i].ptr);
}
}
winBuyMenu.Hide();
winBuyRifle.Show();
winBuyRifle.SetPos( ( video_res / 2 ) - ( winBuyRifle.GetSize() / 2 ) );
winBuyRifle.SetPos((video_res / 2) - (winBuyRifle.GetSize() / 2));
}
void VGUI_BuyMG_1 (void) { sendevent("PlayerBuyWeapon", "f", WEAPON_PARA); }
@ -315,33 +316,33 @@ void VGUI_BuyMG(void)
static CUIButton btnPara;
static CUIButton btnBack;
if ( !initialized ) {
if (!initialized) {
initialized = TRUE;
winBuyMG = spawn( CUIWindow );
winBuyMG.SetTitle( "Buy Machineguns" );
winBuyMG.SetIcon( "gfx/vgui/buymenu" );
winBuyMG.SetSize( [420,320] );
g_uiDesktop.Add( winBuyMG );
winBuyMG = spawn(CUIWindow);
winBuyMG.SetTitle("Buy Machineguns");
winBuyMG.SetIcon("gfx/vgui/buymenu");
winBuyMG.SetSize([420,320]);
g_uiDesktop.Add(winBuyMG);
/* Lonely bugger */
btnPara = spawn( CUIButton );
btnPara.SetTitle( "PARA" );
btnPara.SetPos( [16,32] );
btnPara.SetFunc( VGUI_BuyMG_1 );
winBuyMG.Add( btnPara );
btnPara = spawn(CUIButton);
btnPara.SetTitle("PARA");
btnPara.SetPos([16,32]);
btnPara.SetFunc(VGUI_BuyMG_1);
winBuyMG.Add(btnPara);
/* Lonely bugger */
btnBack = spawn( CUIButton );
btnBack.SetTitle( "< Back" );
btnBack.SetPos( [16,60] );
btnBack.SetFunc( VGUI_Back5 );
winBuyMG.Add( btnBack );
btnBack = spawn(CUIButton);
btnBack.SetTitle("< Back");
btnBack.SetPos([16,60]);
btnBack.SetFunc(VGUI_Back5);
winBuyMG.Add(btnBack);
}
winBuyMenu.Hide();
winBuyMG.Show();
winBuyMG.SetPos( ( video_res / 2 ) - ( winBuyMG.GetSize() / 2 ) );
winBuyMG.SetPos((video_res / 2) - (winBuyMG.GetSize() / 2));
}
void VGUI_BuyEquipment_1 (void) { sendevent("PlayerBuyEquipment", "f", 0); }
@ -369,32 +370,32 @@ void VGUI_BuyEquipment(void)
static int initialized;
static CUIButton *btns;
if ( !initialized ) {
if (!initialized) {
vector btnpos = [16,0];
initialized = TRUE;
winBuyEquipment = spawn( CUIWindow );
winBuyEquipment.SetTitle( "Buy Equipment" );
winBuyEquipment.SetIcon( "gfx/vgui/buymenu" );
winBuyEquipment.SetSize( [420,320] );
g_uiDesktop.Add( winBuyEquipment );
winBuyEquipment = spawn(CUIWindow);
winBuyEquipment.SetTitle("Buy Equipment");
winBuyEquipment.SetIcon("gfx/vgui/buymenu");
winBuyEquipment.SetSize([420,320]);
g_uiDesktop.Add(winBuyEquipment);
btns = memalloc(sizeof(btnarr_t) * buy_equipment.length);
for (int i = 0; i < buy_equipment.length; i++) {
btnpos[1] += 30;
if ( buy_equipment[i].ptr == __NULL__ ) {
if (buy_equipment[i].ptr == __NULL__) {
continue;
}
btns[i] = spawn( CUIButton );
btns[i].SetTitle( buy_equipment[i].str );
btns[i].SetPos( btnpos );
btns[i].SetFunc( buy_equipment[i].ptr );
winBuyEquipment.Add( btns[i] );
btns[i] = spawn(CUIButton);
btns[i].SetTitle(buy_equipment[i].str);
btns[i].SetPos(btnpos);
btns[i].SetFunc(buy_equipment[i].ptr);
winBuyEquipment.Add(btns[i]);
}
}
winBuyMenu.Hide();
winBuyEquipment.Show();
winBuyEquipment.SetPos( ( video_res / 2 ) - ( winBuyEquipment.GetSize() / 2 ) );
winBuyEquipment.SetPos((video_res / 2) - (winBuyEquipment.GetSize() / 2));
}
btnarr_t buy_main[] = {
@ -413,26 +414,26 @@ void VGUI_BuyMenu(void)
static int initialized;
static CUIButton *btns;
if ( !initialized ) {
if (!initialized) {
vector btnpos = [16,30];
initialized = TRUE;
winBuyMenu = spawn( CUIWindow );
winBuyMenu.SetTitle( "Buy Menu" );
winBuyMenu.SetIcon( "gfx/vgui/buymenu" );
winBuyMenu.SetSize( [420,320] );
g_uiDesktop.Add( winBuyMenu );
winBuyMenu = spawn(CUIWindow);
winBuyMenu.SetTitle("Buy Menu");
winBuyMenu.SetIcon("gfx/vgui/buymenu");
winBuyMenu.SetSize([420,320]);
g_uiDesktop.Add(winBuyMenu);
btns = memalloc(sizeof(btnarr_t) * buy_main.length);
for (int i = 0; i < buy_main.length; i++) {
btns[i] = spawn( CUIButton );
btns[i].SetTitle( buy_main[i].str );
btns[i].SetPos( btnpos );
btns[i].SetFunc( buy_main[i].ptr );
winBuyMenu.Add( btns[i] );
btns[i] = spawn(CUIButton);
btns[i].SetTitle(buy_main[i].str);
btns[i].SetPos(btnpos);
btns[i].SetFunc(buy_main[i].ptr);
winBuyMenu.Add(btns[i]);
btnpos[1] += 30;
}
}
winBuyMenu.Show();
winBuyMenu.SetPos( ( video_res / 2 ) - ( winBuyMenu.GetSize() / 2 ) );
winBuyMenu.SetPos((video_res / 2) - (winBuyMenu.GetSize() / 2));
}

View File

@ -21,56 +21,56 @@ static CUIWindow winTTeam;
void
T_Skin1(void)
{
sendevent( "GamePlayerSpawn", "f", 1 );
sendevent("GamePlayerSpawn", "f", 1);
winTTeam.Hide();
}
void
T_Skin2(void)
{
sendevent( "GamePlayerSpawn", "f", 2 );
sendevent("GamePlayerSpawn", "f", 2);
winTTeam.Hide();
}
void
T_Skin3(void)
{
sendevent( "GamePlayerSpawn", "f", 3 );
sendevent("GamePlayerSpawn", "f", 3);
winTTeam.Hide();
}
void
T_Skin4(void)
{
sendevent( "GamePlayerSpawn", "f", 4 );
sendevent("GamePlayerSpawn", "f", 4);
winTTeam.Hide();
}
void
CT_Skin1(void)
{
sendevent( "GamePlayerSpawn", "f", 5 );
sendevent("GamePlayerSpawn", "f", 5);
winCTTeam.Hide();
}
void
CT_Skin2(void)
{
sendevent( "GamePlayerSpawn", "f", 6 );
sendevent("GamePlayerSpawn", "f", 6);
winCTTeam.Hide();
}
void
CT_Skin3(void)
{
sendevent( "GamePlayerSpawn", "f", 7 );
sendevent("GamePlayerSpawn", "f", 7);
winCTTeam.Hide();
}
void
CT_Skin4(void)
{
sendevent( "GamePlayerSpawn", "f", 8 );
sendevent("GamePlayerSpawn", "f", 8);
winCTTeam.Hide();
}
void
VGUI_GoSpectator(void)
{
sendevent( "GamePlayerSpawn", "f", 0 );
sendevent("GamePlayerSpawn", "f", 0);
winChooseTeam.Hide();
}
@ -82,42 +82,42 @@ void VGUI_ChooseTeam_CT(void)
static CUIButton btnSkin3;
static CUIButton btnSkin4;
if ( !initialized ) {
if (!initialized) {
initialized = TRUE;
winCTTeam = spawn( CUIWindow );
winCTTeam.SetTitle( "Choose Skin" );
winCTTeam.SetSize( [420,320] );
winCTTeam = spawn(CUIWindow);
winCTTeam.SetTitle("Choose Skin");
winCTTeam.SetSize([420,320]);
btnSkin1 = spawn( CUIButton );
btnSkin1.SetTitle( "Skin 1" );
btnSkin1.SetPos( [8,132] );
btnSkin1.SetFunc( CT_Skin1 );
btnSkin1 = spawn(CUIButton);
btnSkin1.SetTitle("Skin 1");
btnSkin1.SetPos([8,132]);
btnSkin1.SetFunc(CT_Skin1);
btnSkin2 = spawn( CUIButton );
btnSkin2.SetTitle( "Skin 2" );
btnSkin2.SetPos( [8,132+30] );
btnSkin2.SetFunc( CT_Skin2 );
btnSkin2 = spawn(CUIButton);
btnSkin2.SetTitle("Skin 2");
btnSkin2.SetPos([8,132+30]);
btnSkin2.SetFunc(CT_Skin2);
btnSkin3 = spawn( CUIButton );
btnSkin3.SetTitle( "Skin 3" );
btnSkin3.SetPos( [8,132+30+30] );
btnSkin3.SetFunc( CT_Skin3 );
btnSkin3 = spawn(CUIButton);
btnSkin3.SetTitle("Skin 3");
btnSkin3.SetPos([8,132+30+30]);
btnSkin3.SetFunc(CT_Skin3);
btnSkin4 = spawn( CUIButton );
btnSkin4.SetTitle( "Skin 4" );
btnSkin4.SetPos( [8,132+30+30+30] );
btnSkin4.SetFunc( CT_Skin4 );
btnSkin4 = spawn(CUIButton);
btnSkin4.SetTitle("Skin 4");
btnSkin4.SetPos([8,132+30+30+30]);
btnSkin4.SetFunc(CT_Skin4);
g_uiDesktop.Add( winCTTeam );
winCTTeam.Add( btnSkin1 );
winCTTeam.Add( btnSkin2 );
winCTTeam.Add( btnSkin3 );
winCTTeam.Add( btnSkin4 );
g_uiDesktop.Add(winCTTeam);
winCTTeam.Add(btnSkin1);
winCTTeam.Add(btnSkin2);
winCTTeam.Add(btnSkin3);
winCTTeam.Add(btnSkin4);
}
winChooseTeam.Hide();
winCTTeam.Show();
winCTTeam.SetPos( ( video_res / 2 ) - ( winCTTeam.GetSize() / 2 ) );
winCTTeam.SetPos((video_res / 2) - (winCTTeam.GetSize() / 2));
}
void VGUI_ChooseTeam_T(void)
@ -128,42 +128,42 @@ void VGUI_ChooseTeam_T(void)
static CUIButton btnSkin3;
static CUIButton btnSkin4;
if ( !initialized ) {
if (!initialized) {
initialized = TRUE;
winTTeam = spawn( CUIWindow );
winTTeam.SetTitle( "Choose Skin" );
winTTeam.SetSize( [420,320] );
winTTeam = spawn(CUIWindow);
winTTeam.SetTitle("Choose Skin");
winTTeam.SetSize([420,320]);
btnSkin1 = spawn( CUIButton );
btnSkin1.SetTitle( "Skin 1" );
btnSkin1.SetPos( [8,132] );
btnSkin1.SetFunc( T_Skin1 );
btnSkin1 = spawn(CUIButton);
btnSkin1.SetTitle("Skin 1");
btnSkin1.SetPos([8,132]);
btnSkin1.SetFunc(T_Skin1);
btnSkin2 = spawn( CUIButton );
btnSkin2.SetTitle( "Skin 2" );
btnSkin2.SetPos( [8,132+30] );
btnSkin2.SetFunc( T_Skin2 );
btnSkin2 = spawn(CUIButton);
btnSkin2.SetTitle("Skin 2");
btnSkin2.SetPos([8,132+30]);
btnSkin2.SetFunc(T_Skin2);
btnSkin3 = spawn( CUIButton );
btnSkin3.SetTitle( "Skin 3" );
btnSkin3.SetPos( [8,132+30+30] );
btnSkin3.SetFunc( T_Skin3 );
btnSkin3 = spawn(CUIButton);
btnSkin3.SetTitle("Skin 3");
btnSkin3.SetPos([8,132+30+30]);
btnSkin3.SetFunc(T_Skin3);
btnSkin4 = spawn( CUIButton );
btnSkin4.SetTitle( "Skin 4" );
btnSkin4.SetPos( [8,132+30+30+30] );
btnSkin4.SetFunc( T_Skin4 );
btnSkin4 = spawn(CUIButton);
btnSkin4.SetTitle("Skin 4");
btnSkin4.SetPos([8,132+30+30+30]);
btnSkin4.SetFunc(T_Skin4);
g_uiDesktop.Add( winTTeam );
winTTeam.Add( btnSkin1 );
winTTeam.Add( btnSkin2 );
winTTeam.Add( btnSkin3 );
winTTeam.Add( btnSkin4 );
g_uiDesktop.Add(winTTeam);
winTTeam.Add(btnSkin1);
winTTeam.Add(btnSkin2);
winTTeam.Add(btnSkin3);
winTTeam.Add(btnSkin4);
}
winChooseTeam.Hide();
winTTeam.Show();
winTTeam.SetPos( ( video_res / 2 ) - ( winTTeam.GetSize() / 2 ) );
winTTeam.SetPos((video_res / 2) - (winTTeam.GetSize() / 2));
}
void VGUI_ChooseTeam(void)
@ -173,33 +173,33 @@ void VGUI_ChooseTeam(void)
static CUIButton btnGoT;
static CUIButton btnGoSpectator;
if ( !initialized ) {
if (!initialized) {
initialized = TRUE;
winChooseTeam = spawn( CUIWindow );
winChooseTeam.SetTitle( "Choose Team" );
winChooseTeam.SetSize( '420 320' );
winChooseTeam = spawn(CUIWindow);
winChooseTeam.SetTitle("Choose Team");
winChooseTeam.SetSize('420 320');
btnGoCT = spawn( CUIButton );
btnGoCT.SetTitle( "Counter-Terrorists" );
btnGoCT.SetPos( '8 132' );
btnGoCT.SetFunc( VGUI_ChooseTeam_CT );
btnGoCT = spawn(CUIButton);
btnGoCT.SetTitle("Counter-Terrorists");
btnGoCT.SetPos('8 132');
btnGoCT.SetFunc(VGUI_ChooseTeam_CT);
btnGoT = spawn( CUIButton );
btnGoT.SetTitle( "Terrorists" );
btnGoT.SetPos( '8 162' );
btnGoT.SetFunc( VGUI_ChooseTeam_T );
btnGoT = spawn(CUIButton);
btnGoT.SetTitle("Terrorists");
btnGoT.SetPos('8 162');
btnGoT.SetFunc(VGUI_ChooseTeam_T);
btnGoSpectator = spawn( CUIButton );
btnGoSpectator.SetTitle( "Spectator" );
btnGoSpectator.SetPos( '8 192' );
btnGoSpectator.SetFunc( VGUI_GoSpectator );
btnGoSpectator = spawn(CUIButton);
btnGoSpectator.SetTitle("Spectator");
btnGoSpectator.SetPos('8 192');
btnGoSpectator.SetFunc(VGUI_GoSpectator);
g_uiDesktop.Add( winChooseTeam );
winChooseTeam.Add( btnGoCT );
winChooseTeam.Add( btnGoT );
winChooseTeam.Add( btnGoSpectator );
g_uiDesktop.Add(winChooseTeam);
winChooseTeam.Add(btnGoCT);
winChooseTeam.Add(btnGoT);
winChooseTeam.Add(btnGoSpectator);
}
winChooseTeam.Show();
winChooseTeam.SetPos( ( video_res / 2 ) - ( winChooseTeam.GetSize() / 2 ) );
winChooseTeam.SetPos((video_res / 2) - (winChooseTeam.GetSize() / 2));
}

View File

@ -20,22 +20,22 @@ void VGUI_MessageOfTheDay(void)
static CUIWindow winMOTD;
static CUIButton btnOK;
if ( !initialized ) {
if (!initialized) {
initialized = TRUE;
winMOTD = spawn( CUIWindow );
winMOTD.SetTitle( "Message Of The Day" );
winMOTD.SetSize( '420 320' );
winMOTD.SetIcon( "textures/ui/icons/cd" );
winMOTD = spawn(CUIWindow);
winMOTD.SetTitle("Message Of The Day");
winMOTD.SetSize('420 320');
winMOTD.SetIcon("textures/ui/icons/cd");
btnOK = spawn( CUIButton );
btnOK.SetTitle( "Play" );
btnOK.SetPos( '8 132' );
//btnPlay.SetFunc( MusicPlayer_Play );
btnOK = spawn(CUIButton);
btnOK.SetTitle("Play");
btnOK.SetPos('8 132');
//btnPlay.SetFunc(MusicPlayer_Play);
g_uiDesktop.Add( winMOTD );
winMOTD.Add( btnOK );
g_uiDesktop.Add(winMOTD);
winMOTD.Add(btnOK);
}
winMOTD.Show();
winMOTD.SetPos( ( video_res / 2 ) - ( winMOTD.GetSize() / 2 ) );
winMOTD.SetPos((video_res / 2) - (winMOTD.GetSize() / 2));
}

View File

@ -18,17 +18,18 @@ static CUIWindow winRadio1;
static CUIWindow winRadio2;
static CUIWindow winRadio3;
typedef struct {
typedef struct
{
int id;
void() func;
void(void) func;
} radiomsg_t;
void rad_cmd_1(void) { sendevent("RadioMessage", "f", RADIO_CT_COVERME); winRadio1.Hide(); }
void rad_cmd_2(void) { sendevent("RadioMessage", "f", RADIO_CT_POINT); winRadio1.Hide(); }
void rad_cmd_3(void) { sendevent("RadioMessage", "f", RADIO_POSITION); winRadio1.Hide(); }
void rad_cmd_4(void) { sendevent("RadioMessage", "f", RADIO_REGROUP); winRadio1.Hide(); }
void rad_cmd_5(void) { sendevent("RadioMessage", "f", RADIO_FOLLOWME); winRadio1.Hide(); }
void rad_cmd_6(void) { sendevent("RadioMessage", "f", RADIO_FIREASSIS); winRadio1.Hide(); }
void rad_cmd_1(void) { sendevent("Radio", "f", RADIO_CT_COVERME); winRadio1.Hide(); }
void rad_cmd_2(void) { sendevent("Radio", "f", RADIO_CT_POINT); winRadio1.Hide(); }
void rad_cmd_3(void) { sendevent("Radio", "f", RADIO_POSITION); winRadio1.Hide(); }
void rad_cmd_4(void) { sendevent("Radio", "f", RADIO_REGROUP); winRadio1.Hide(); }
void rad_cmd_5(void) { sendevent("Radio", "f", RADIO_FOLLOWME); winRadio1.Hide(); }
void rad_cmd_6(void) { sendevent("Radio", "f", RADIO_FIREASSIS); winRadio1.Hide(); }
radiomsg_t rad_cmds[] = {
{ RADIO_CT_COVERME, rad_cmd_1 },
@ -40,12 +41,12 @@ radiomsg_t rad_cmds[] = {
};
CUIButton *radioCommands;
void rad_group_1(void) { sendevent("RadioMessage", "f", RADIO_GO); winRadio2.Hide(); }
void rad_group_2(void) { sendevent("RadioMessage", "f", RADIO_FALLBACK); winRadio2.Hide(); }
void rad_group_3(void) { sendevent("RadioMessage", "f", RADIO_STICKTOG); winRadio2.Hide(); }
void rad_group_4(void) { sendevent("RadioMessage", "f", RADIO_CT_INPOS); winRadio2.Hide(); }
void rad_group_5(void) { sendevent("RadioMessage", "f", RADIO_STORMFRONT); winRadio2.Hide(); }
void rad_group_6(void) { sendevent("RadioMessage", "f", RADIO_COM_REPORTIN); winRadio2.Hide(); }
void rad_group_1(void) { sendevent("Radio", "f", RADIO_GO); winRadio2.Hide(); }
void rad_group_2(void) { sendevent("Radio", "f", RADIO_FALLBACK); winRadio2.Hide(); }
void rad_group_3(void) { sendevent("Radio", "f", RADIO_STICKTOG); winRadio2.Hide(); }
void rad_group_4(void) { sendevent("Radio", "f", RADIO_CT_INPOS); winRadio2.Hide(); }
void rad_group_5(void) { sendevent("Radio", "f", RADIO_STORMFRONT); winRadio2.Hide(); }
void rad_group_6(void) { sendevent("Radio", "f", RADIO_COM_REPORTIN); winRadio2.Hide(); }
radiomsg_t rad_group[] = {
{ RADIO_GO, rad_group_1 },
@ -57,15 +58,15 @@ radiomsg_t rad_group[] = {
};
CUIButton *radioGroup;
void rad_res_1(void) { sendevent("RadioMessage", "f", RADIO_CT_AFFIRM); winRadio3.Hide(); }
void rad_res_2(void) { sendevent("RadioMessage", "f", RADIO_CT_ENEMYS); winRadio3.Hide(); }
void rad_res_3(void) { sendevent("RadioMessage", "f", RADIO_CT_BACKUP); winRadio3.Hide(); }
void rad_res_4(void) { sendevent("RadioMessage", "f", RADIO_CLEAR); winRadio3.Hide(); }
void rad_res_5(void) { sendevent("RadioMessage", "f", RADIO_CT_INPOS); winRadio3.Hide(); }
void rad_res_6(void) { sendevent("RadioMessage", "f", RADIO_CT_REPORTINGIN); winRadio3.Hide(); }
void rad_res_7(void) { sendevent("RadioMessage", "f", RADIO_BLOW); winRadio3.Hide(); }
void rad_res_8(void) { sendevent("RadioMessage", "f", RADIO_NEGATIVE); winRadio3.Hide(); }
void rad_res_9(void) { sendevent("RadioMessage", "f", RADIO_ENEMYDOWN); winRadio3.Hide(); }
void rad_res_1(void) { sendevent("Radio", "f", RADIO_CT_AFFIRM); winRadio3.Hide(); }
void rad_res_2(void) { sendevent("Radio", "f", RADIO_CT_ENEMYS); winRadio3.Hide(); }
void rad_res_3(void) { sendevent("Radio", "f", RADIO_CT_BACKUP); winRadio3.Hide(); }
void rad_res_4(void) { sendevent("Radio", "f", RADIO_CLEAR); winRadio3.Hide(); }
void rad_res_5(void) { sendevent("Radio", "f", RADIO_CT_INPOS); winRadio3.Hide(); }
void rad_res_6(void) { sendevent("Radio", "f", RADIO_CT_REPORTINGIN); winRadio3.Hide(); }
void rad_res_7(void) { sendevent("Radio", "f", RADIO_BLOW); winRadio3.Hide(); }
void rad_res_8(void) { sendevent("Radio", "f", RADIO_NEGATIVE); winRadio3.Hide(); }
void rad_res_9(void) { sendevent("Radio", "f", RADIO_ENEMYDOWN); winRadio3.Hide(); }
radiomsg_t rad_res[] = {
{ RADIO_CT_AFFIRM, rad_res_1 },

View File

@ -16,18 +16,18 @@
void View_UpdateWeapon(entity vm, entity mflash)
{
int aw = getstati( STAT_ACTIVEWEAPON );
if( aw < CS_WEAPON_COUNT ) {
if ( pSeat->fLastWeapon != aw ) {
pSeat->fLastWeapon = aw;
if ( aw >= 1 ) {
int aw = getstati(STAT_ACTIVEWEAPON);
if(aw < CS_WEAPON_COUNT) {
if (pSeat->m_iLastWeapon != aw) {
pSeat->m_iLastWeapon = aw;
if (aw >= 1) {
string wm;
if (autocvar_skins_dir != "") {
wm = sprintf("skins/%s/%s", autocvar_skins_dir, sViewModels[ aw - 1 ]);
wm = sprintf("skins/%s/%s", autocvar_skins_dir, sViewModels[aw - 1]);
} else {
wm = sprintf("models/%s", sViewModels[ aw - 1 ]);
wm = sprintf("models/%s", sViewModels[aw - 1]);
}
setmodel( vm, wm );
setmodel(vm, wm);
if (getstati_punf(STAT_TEAM) == TEAM_CT) {
setcustomskin(vm, "", "geomset 0 2\n");
@ -35,10 +35,10 @@ void View_UpdateWeapon(entity vm, entity mflash)
setcustomskin(vm, "", "geomset 0 1\n");
}
skel_delete( mflash.skeletonindex );
mflash.skeletonindex = skel_create( vm.modelindex );
pSeat->fNumBones = skel_get_numbones( mflash.skeletonindex ) + 1;
pSeat->fEjectBone = pSeat->fNumBones + 1;
skel_delete(mflash.skeletonindex);
mflash.skeletonindex = skel_create(vm.modelindex);
pSeat->m_iVMBones = skel_get_numbones(mflash.skeletonindex) + 1;
pSeat->m_iVMEjectBone = pSeat->m_iVMBones + 1;
}
}
}

215
src/client/cstrike/cmds.c Normal file
View File

@ -0,0 +1,215 @@
/*
* Copyright (c) 2016-2020 Marco Hladik <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
int
Game_ConsoleCommand(void)
{
switch(argv(0)) {
case "chooseteam":
Textmenu_Call("TEAM_SELECT");
break;
case "buy":
Textmenu_Call("BUY");
break;
case "radio1":
Textmenu_Call("RADIOA");
break;
case "radio2":
Textmenu_Call("RADIOB");
break;
case "radio3":
Textmenu_Call("RADIOC");
break;
case "motd":
/*VGUI_MessageOfTheDay();*/
break;
case "buy":
/*if (getstatf(STAT_BUYZONE) == TRUE) {
VGUI_BuyMenu();
}*/
break;
case "chooseteam":
/*VGUI_ChooseTeam();*/
break;
case "nightvision":
/*Nightvision_Toggle();*/
break;
case "drop":
sendevent("WeaponDrop", "");
break;
case "glock":
sendevent("PlayerBuyWeapon", "f", WEAPON_GLOCK18);
break;
case "usp":
sendevent("PlayerBuyWeapon", "f", WEAPON_USP45);
break;
case "p228":
sendevent("PlayerBuyWeapon", "f", WEAPON_P228);
break;
case "deagle":
sendevent("PlayerBuyWeapon", "f", WEAPON_DEAGLE);
break;
case "fn57":
sendevent("PlayerBuyWeapon", "f", WEAPON_FIVESEVEN);
break;
case "elites":
sendevent("PlayerBuyWeapon", "f", WEAPON_ELITES);
break;
case "m3":
sendevent("PlayerBuyWeapon", "f", WEAPON_M3);
break;
case "xm1014":
sendevent("PlayerBuyWeapon", "f", WEAPON_XM1014);
break;
case "tmp":
sendevent("PlayerBuyWeapon", "f", WEAPON_TMP);
break;
case "mac10":
sendevent("PlayerBuyWeapon", "f", WEAPON_MAC10);
break;
case "mp5":
sendevent("PlayerBuyWeapon", "f", WEAPON_MP5);
break;
case "ump45":
sendevent("PlayerBuyWeapon", "f", WEAPON_UMP45);
break;
case "p90":
sendevent("PlayerBuyWeapon", "f", WEAPON_P90);
break;
case "ak47":
sendevent("PlayerBuyWeapon", "f", WEAPON_AK47);
break;
case "m4a1":
sendevent("PlayerBuyWeapon", "f", WEAPON_M4A1);
break;
case "sg552":
sendevent("PlayerBuyWeapon", "f", WEAPON_SG552);
break;
case "aug":
sendevent("PlayerBuyWeapon", "f", WEAPON_AUG);
break;
case "scout":
sendevent("PlayerBuyWeapon", "f", WEAPON_SCOUT);
break;
case "sg550":
sendevent("PlayerBuyWeapon", "f", WEAPON_SG550);
break;
case "awp":
sendevent("PlayerBuyWeapon", "f", WEAPON_AWP);
break;
case "g3sg1":
sendevent("PlayerBuyWeapon", "f", WEAPON_G3SG1);
break;
case "m249":
sendevent("PlayerBuyWeapon", "f", WEAPON_PARA);
break;
case "buyammo1":
case "primammo":
sendevent("GamePlayerBuyAmmo", "f", 0);
break;
case "buyammo2":
case "secammo":
sendevent("GamePlayerBuyAmmo", "f", 1);
break;
case "vest":
sendevent("PlayerBuyEquipment", "f", 0);
break;
case "vesthelm":
sendevent("PlayerBuyEquipment", "f", 1);
break;
case "flash":
sendevent("PlayerBuyEquipment", "f", 2);
break;
case "hegren":
sendevent("PlayerBuyEquipment", "f", 3);
break;
case "vsgren":
sendevent("PlayerBuyEquipment", "f", 4);
break;
case "defuser":
sendevent("PlayerBuyEquipment", "f", 5);
break;
case "nvg":
sendevent("PlayerBuyEquipment", "f", 6);
break;
case "coverme":
sendevent("Radio", "f", RADIO_CT_COVERME);
break;
case "takepoint":
sendevent("Radio", "f", RADIO_CT_POINT);
break;
case "takepoint":
sendevent("Radio", "f", RADIO_POSITION);
break;
case "regroup":
sendevent("Radio", "f", RADIO_REGROUP);
break;
case "followme":
sendevent("Radio", "f", RADIO_FOLLOWME);
break;
case "takingfire":
sendevent("Radio", "f", RADIO_FIREASSIS);
break;
case "go":
sendevent("Radio", "f", RADIO_GO);
break;
case "fallback":
sendevent("Radio", "f", RADIO_FALLBACK);
break;
case "sticktog":
sendevent("Radio", "f", RADIO_STICKTOG);
break;
case "getinpos":
sendevent("Radio", "f", RADIO_COM_GETINPOS);
break;
case "stormfront":
sendevent("Radio", "f", RADIO_STORMFRONT);
break;
case "report":
sendevent("Radio", "f", RADIO_COM_REPORTIN);
break;
case "roger":
sendevent("Radio", "f", RADIO_ROGER);
break;
case "enemyspot":
sendevent("Radio", "f", RADIO_CT_ENEMYS);
break;
case "needbackup":
sendevent("Radio", "f", RADIO_CT_BACKUP);
break;
case "sectorclear":
sendevent("Radio", "f", RADIO_CLEAR);
break;
case "inposition":
sendevent("Radio", "f", RADIO_CT_INPOS);
break;
case "reportingin":
sendevent("Radio", "f", RADIO_CT_REPORTINGIN);
break;
case "getout":
sendevent("Radio", "f", RADIO_GETOUT);
break;
case "negative":
sendevent("Radio", "f", RADIO_NEGATIVE);
break;
case "enemydown":
sendevent("Radio", "f", RADIO_ENEMYDOWN);
break;
default:
return FALSE;
}
return TRUE;
}

View File

@ -14,6 +14,108 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "hud.h"
var int autocvar_cl_autoweaponswitch = TRUE;
vector g_hud_color;
vector g_hudmins;
vector g_hudres;
struct
{
/* viewmodel stuff */
entity m_eViewModel;
entity m_eMuzzleflash;
int m_iVMBones;
int m_iVMEjectBone;
int m_iLastWeapon;
float m_flBobTime;
float m_flBob;
/* damage overlay */
float m_flDamageAlpha;
vector m_vecDamagePos;
/* +zoomin cmd */
int m_iZoomed;
float m_flZoomTime;
/* player fields */
entity m_ePlayer;
vector m_vecPredictedOrigin;
vector m_vecPredictedOriginOld;
vector m_vecPredictedVelocity;
float m_flPredictedFlags;
/* camera fields */
vector m_vecCameraOrigin;
vector m_vecCameraAngle;
float m_flCameraTime;
/* hud.c */
int m_iHealthOld;
float m_flHealthAlpha;
int m_iArmorOld;
float m_flArmorAlpha;
int m_iAmmo1Old;
float m_flAmmo1Alpha;
int m_iAmmo2Old;
float m_flAmmo2Alpha;
int m_iAmmo3Old;
float m_flAmmo3Alpha;
int m_iPickupWeapon;
float m_flPickupAlpha;
/* This is seperated from the other VGUI stuff so we can check scores
* while buying and whatnot */
int m_iScoresVisible;
int m_iHUDWeaponSelected;
float m_flHUDWeaponSelectTime;
/* centerprint related */
float m_flCenterprintAlpha;
float m_flCenterprintTime;
float m_iCenterprintLines;
string m_strCenterprintBuffer[18];
/* chat related */
float m_flPrintTime;
string m_strPrintBuffer[5];
int m_iPrintLines;
int m_iInputAttack2;
int m_iInputReload;
int m_iInputUse;
int m_iInputDuck;
float m_flInputBlockTime;
/* fading */
float m_flFadeDuration;
float m_flFadeHold;
float m_flFadeMaxAlpha;
float m_flFadeStyle;
float m_flFadeAlpha;
float m_flFadeTime;
vector m_vecFadeColor;
int m_iFadeActive;
entity m_pWeaponFX;
/* cstrike additions */
float m_iMoneyOld;
float m_flMoneyAlpha;
float m_iMoneyDelta;
int m_iTimeUnitsOld;
float m_flTimeAlpha;
vector m_vecMoneyColor;
} g_seats[4], *pSeat;
void HUD_DrawAmmo1(void);
void HUD_DrawAmmo2(void);
void HUD_DrawAmmo3(void);
void HUD_WeaponPickupNotify(int);
void Cstrike_DrawCrosshair(void);
void Cstrike_DrawSimpleCrosshair(void);
void Cstrike_DrawScope(void);
void Textmenu_Call(string);

View File

@ -0,0 +1,49 @@
/*
* Copyright (c) 2016-2020 Marco Hladik <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void
Game_Parse_Event(float fHeader)
{
if (fHeader == EV_CHAT) {
float fSender = readbyte();
float fTeam = readbyte();
string sMessage = readstring();
CSQC_Parse_Print(sprintf("%s: %s", getplayerkeyvalue(fSender, "name"), sMessage), PRINT_CHAT);
} else if (fHeader == EV_CHAT_TEAM) {
float fSender2 = readbyte();
float fTeam2 = readbyte();
string sMessage2 = readstring();
CSQC_Parse_Print(sprintf("[TEAM] %s: %s", getplayerkeyvalue(fSender2, "name"), sMessage2), PRINT_CHAT);
} else if (fHeader == EV_CHAT_VOX) {
Sound_PlayVOX(readstring());
} else if (fHeader == EV_VIEWMODEL) {
View_PlayAnimation(readbyte());
} else if (fHeader == EV_WEAPON_PICKUP) {
int w = readbyte();
if (autocvar_cl_autoweaponswitch == 1) {
sendevent("PlayerSwitchWeapon", "i", w);
}
HUD_WeaponPickupNotify(w);
} else if (fHeader == EV_RADIOMSG) {
Radio_PlayMessage(readbyte());
} else if (fHeader == EV_RADIOMSG2) {
Radio_PlayPlayerMessage(readbyte(), readbyte());
}
}

View File

@ -60,9 +60,9 @@ HUD_DrawSeperator(vector pos)
/* handle single/multiple digits */
void
HUD_DrawNumber(int iNumber, vector vPos, float fAlpha, vector vColor)
HUD_DrawNumber(int iNumber, vector vecPos, float fAlpha, vector vColor)
{
drawsubpic(vPos,
drawsubpic(vecPos,
[20,25],
HUD_NUMS,
[spr_hudnum[iNumber], 0],
@ -74,35 +74,191 @@ HUD_DrawNumber(int iNumber, vector vPos, float fAlpha, vector vColor)
}
void
HUD_DrawNums(float fNumber, vector vPos, float fAlpha, vector vColor)
HUD_DrawNums(float fNumber, vector vecPos, float fAlpha, vector vColor)
{
int i = fNumber;
if (i > 0) {
while (i > 0) {
HUD_DrawNumber((float)i % 10, vPos, fAlpha, vColor);
HUD_DrawNumber((float)i % 10, vecPos, fAlpha, vColor);
i = i / 10;
vPos[0] -= 20;
vecPos[0] -= 20;
}
} else {
HUD_DrawNumber(0, vPos, fAlpha, vColor);
HUD_DrawNumber(0, vecPos, fAlpha, vColor);
}
}
/* timer */
void
HUD_DrawTimer(int spectator)
{
int iMinutes, iSeconds, iTens, iUnits;
vector time_pos;
if (spectator) {
time_pos = g_hudmins + [(g_hudres[0] / 2) - 62, 16];
} else {
time_pos = g_hudmins + [(g_hudres[0] / 2) - 62, g_hudres[1] - 42];
}
if (getstatf(STAT_GAMETIME) == -1) {
return;
}
iMinutes = getstatf(STAT_GAMETIME) / 60;
iSeconds = getstatf(STAT_GAMETIME) - 60 * iMinutes;
iTens = iSeconds / 10;
iUnits = iSeconds - 10 * iTens;
/* Flashing red numbers */
if ((iMinutes == 0) && (iTens <= 1)) {
float fAlpha;
/* 0:00 is fully red */
if ((iTens == 0) && (iUnits == 0)) {
fAlpha = 1;
} else {
fAlpha = fabs(sin(time * 20));
}
HUD_DrawNumber(iMinutes, time_pos + [48,0], fAlpha, [1,0,0]);
HUD_DrawNumber(iTens, time_pos + [75,0], fAlpha, [1,0,0]);
HUD_DrawNumber(iUnits, time_pos + [99,0],fAlpha, [1,0,0]);
HUD_DrawNumber(iMinutes, time_pos + [48,0], 1 - fAlpha, g_hud_color);
HUD_DrawNumber(iTens, time_pos + [75,0], 1 - fAlpha, g_hud_color);
HUD_DrawNumber(iUnits, time_pos + [99,0],1 - fAlpha, g_hud_color);
/* : symbol */
drawsubpic(time_pos + [70,6], [3,3], HUD_NUMS, [0.9375, 0], [0.01171875, 0.01171875], [1,0,0], fAlpha, DRAWFLAG_ADDITIVE);
drawsubpic(time_pos + [70,16], [3,3], HUD_NUMS, [0.9375, 0], [0.01171875, 0.01171875], [1,0,0], fAlpha, DRAWFLAG_ADDITIVE);
drawsubpic(time_pos + [70,6], [3,3], HUD_NUMS, [0.9375, 0], [0.01171875, 0.01171875], g_hud_color, 1 - fAlpha, DRAWFLAG_ADDITIVE);
drawsubpic(time_pos + [70,16], [3,3], HUD_NUMS, [0.9375, 0], [0.01171875, 0.01171875], g_hud_color, 1 - fAlpha, DRAWFLAG_ADDITIVE);
/* clock */
drawsubpic(time_pos, [24,25], HUD_NUMS, [NUMSIZE_X * 6, NUMSIZE_Y * 3], [NUMSIZE_X, NUMSIZE_Y], [1,0,0], fAlpha, DRAWFLAG_ADDITIVE);
drawsubpic(time_pos, [24,25], HUD_NUMS, [NUMSIZE_X * 6, NUMSIZE_Y * 3], [NUMSIZE_X, NUMSIZE_Y], g_hud_color, 1 - fAlpha, DRAWFLAG_ADDITIVE);
} else {
if (iUnits != pSeat->m_iTimeUnitsOld) {
pSeat->m_flTimeAlpha = 1.0;
}
if (pSeat->m_flTimeAlpha >= HUD_ALPHA) {
pSeat->m_flTimeAlpha -= clframetime * 0.5;
} else {
pSeat->m_flTimeAlpha = HUD_ALPHA;
}
HUD_DrawNumber(iMinutes, time_pos + [48,0], pSeat->m_flTimeAlpha, g_hud_color);
HUD_DrawNumber(iTens, time_pos + [75,0], pSeat->m_flTimeAlpha, g_hud_color);
HUD_DrawNumber(iUnits, time_pos + [95,0], pSeat->m_flTimeAlpha, g_hud_color);
drawsubpic(time_pos + [70,6], [3,3], HUD_NUMS, [0.9375, 0], [0.01171875, 0.01171875], g_hud_color, pSeat->m_flTimeAlpha, DRAWFLAG_ADDITIVE);
drawsubpic(time_pos + [70,16], [3,3], HUD_NUMS, [0.9375, 0], [0.01171875, 0.01171875], g_hud_color, pSeat->m_flTimeAlpha, DRAWFLAG_ADDITIVE);
drawsubpic(time_pos, [24,25], HUD_NUMS, [NUMSIZE_X * 6, NUMSIZE_Y * 3], [NUMSIZE_X, NUMSIZE_Y], g_hud_color, pSeat->m_flTimeAlpha, DRAWFLAG_ADDITIVE);
pSeat->m_iTimeUnitsOld = iUnits;
}
}
void
HUD_DrawMoney(void)
{
vector money_pos;
float endalpha;
money_pos = g_hudmins + [g_hudres[0] - 160, g_hudres[1] - 72];
/* if the money differs from last frame, paint it appropriately */
if (getstati(STAT_MONEY) > pSeat->m_iMoneyOld) {
/* effect already in progress from something else, go add on top of it! */
if (pSeat->m_flMoneyAlpha > 0) {
pSeat->m_iMoneyDelta += (pSeat->m_iMoneyOld - getstati(STAT_MONEY));
} else {
pSeat->m_iMoneyDelta = pSeat->m_iMoneyOld - getstati(STAT_MONEY);
}
/* make it green for a short time */
pSeat->m_vecMoneyColor = [0,1,0];
pSeat->m_flMoneyAlpha = 1.0;
} else if (getstati(STAT_MONEY) < pSeat->m_iMoneyOld) {
/* same one as above */
if (pSeat->m_flMoneyAlpha > 0) {
pSeat->m_iMoneyDelta += (pSeat->m_iMoneyOld - getstati(STAT_MONEY));
} else {
pSeat->m_iMoneyDelta = pSeat->m_iMoneyOld - getstati(STAT_MONEY);
}
/* make it red */
pSeat->m_vecMoneyColor = [1,0,0];
pSeat->m_flMoneyAlpha = 1.0;
pSeat->m_iMoneyDelta = pSeat->m_iMoneyOld - getstati(STAT_MONEY);
}
/* maximum alpha is variable. */
endalpha = pSeat->m_flMoneyAlpha * HUD_ALPHA;
/* dollar sign */
drawsubpic(
money_pos,
[18,25],
HUD_NUMS,
[NUMSIZE_X * 8, NUMSIZE_Y * 1],
[NUMSIZE_X * 0.75, NUMSIZE_Y],
g_hud_color,
HUD_ALPHA - endalpha,
DRAWFLAG_ADDITIVE
);
/* if the alpha/color effect is active, draw the money twice in their
* varying alphas/colors */
if (pSeat->m_flMoneyAlpha > 0) {
/* red/green dollar sign */
drawsubpic(money_pos, [18,25], HUD_NUMS, [NUMSIZE_X * 8, NUMSIZE_Y * 1], [NUMSIZE_X * 0.75, NUMSIZE_Y], pSeat->m_vecMoneyColor, endalpha, DRAWFLAG_ADDITIVE);
/* draw the +/- symbols depending on whether
* or not we made or lost money */
if (pSeat->m_iMoneyDelta < 0) {
drawsubpic(money_pos + [0,-32], [18,23], HUD_NUMS, [0.8671875, 0.09765625], [0.0703125, 0.08984375], pSeat->m_vecMoneyColor, endalpha, DRAWFLAG_ADDITIVE);
} else {
drawsubpic(money_pos + [0,-32], [13,23], HUD_NUMS, [0.8203125, 0.09765625], [0.05078125, 0.08984375], pSeat->m_vecMoneyColor, endalpha, DRAWFLAG_ADDITIVE);
}
/* shift the numbers for reverse drawing */
money_pos[0] += (24 * 5);
/* draw the red/green overlay numbers on top of ours */
HUD_DrawNums(getstati(STAT_MONEY), money_pos, endalpha, pSeat->m_vecMoneyColor);
/* draw above how much money we've lost/gotten from all this */
HUD_DrawNums(fabs(pSeat->m_iMoneyDelta), money_pos + [0,-32], endalpha, pSeat->m_vecMoneyColor);
} else {
money_pos[0] += (24 * 5);
}
/* regular number */
HUD_DrawNums(
getstati(STAT_MONEY),
money_pos,
HUD_ALPHA - endalpha,
g_hud_color
);
pSeat->m_iMoneyOld = getstati(STAT_MONEY);
pSeat->m_flMoneyAlpha = max(0, pSeat->m_flMoneyAlpha - (clframetime * 0.5));
}
/* health */
void
HUD_DrawHealth(void)
{
vector pos;
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (pl.health != pSeat->health_old) {
pSeat->health_alpha = 1.0;
if (pl.health != pSeat->m_iHealthOld) {
pSeat->m_flHealthAlpha = 1.0;
}
if (pSeat->health_alpha >= HUD_ALPHA) {
pSeat->health_alpha -= clframetime * 0.5;
if (pSeat->m_flHealthAlpha >= HUD_ALPHA) {
pSeat->m_flHealthAlpha -= clframetime * 0.5;
} else {
pSeat->health_alpha = HUD_ALPHA;
pSeat->m_flHealthAlpha = HUD_ALPHA;
}
pos = g_hudmins + [88, g_hudres[1] - 42];
@ -114,10 +270,10 @@ HUD_DrawHealth(void)
[spr_health[0], spr_health[1]],
[spr_health[2], spr_health[3]],
g_hud_color,
pSeat->health_alpha,
pSeat->m_flHealthAlpha,
DRAWFLAG_ADDITIVE
);
HUD_DrawNums(pl.health, pos, pSeat->health_alpha, g_hud_color);
HUD_DrawNums(pl.health, pos, pSeat->m_flHealthAlpha, g_hud_color);
} else {
drawsubpic(
pos + [-72,1],
@ -126,13 +282,13 @@ HUD_DrawHealth(void)
[spr_health[0], spr_health[1]],
[spr_health[2], spr_health[3]],
[1,0,0],
pSeat->health_alpha,
pSeat->m_flHealthAlpha,
DRAWFLAG_ADDITIVE
);
HUD_DrawNums(pl.health, pos, pSeat->health_alpha, [1,0,0]);
HUD_DrawNums(pl.health, pos, pSeat->m_flHealthAlpha, [1,0,0]);
}
pSeat->health_old = pl.health;
pSeat->m_iHealthOld = pl.health;
}
/* armor/suit charge */
@ -140,18 +296,18 @@ void
HUD_DrawArmor(void)
{
vector pos;
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
pos = g_hudmins + [198, g_hudres[1] - 42];
if (pl.armor != pSeat->armor_old) {
pSeat->armor_alpha = 1.0;
if (pl.armor != pSeat->m_iArmorOld) {
pSeat->m_flArmorAlpha = 1.0;
}
if (pSeat->armor_alpha >= HUD_ALPHA) {
pSeat->armor_alpha -= clframetime * 0.5;
if (pSeat->m_flArmorAlpha >= HUD_ALPHA) {
pSeat->m_flArmorAlpha -= clframetime * 0.5;
} else {
pSeat->armor_alpha = HUD_ALPHA;
pSeat->m_flArmorAlpha = HUD_ALPHA;
}
drawsubpic(
@ -161,7 +317,7 @@ HUD_DrawArmor(void)
[spr_suit2[0], spr_suit2[1]],
[spr_suit2[2], spr_suit2[3]],
g_hud_color,
pSeat->armor_alpha,
pSeat->m_flArmorAlpha,
DRAWFLAG_ADDITIVE
);
@ -174,35 +330,35 @@ HUD_DrawArmor(void)
spr_suit1[1]],
[spr_suit1[2], spr_suit1[3] * (pl.armor / 100)],
g_hud_color,
pSeat->armor_alpha,
pSeat->m_flArmorAlpha,
DRAWFLAG_ADDITIVE
);
}
HUD_DrawNums(pl.armor, pos, pSeat->armor_alpha, g_hud_color);
pSeat->armor_old = pl.armor;
HUD_DrawNums(pl.armor, pos, pSeat->m_flArmorAlpha, g_hud_color);
pSeat->m_iArmorOld = pl.armor;
}
/* magazine/clip ammo */
void
HUD_DrawAmmo1(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
vector pos;
if (pl.a_ammo1 != pSeat->ammo1_old) {
pSeat->ammo1_alpha = 1.0;
pSeat->ammo1_old = pl.a_ammo1;
if (pl.a_ammo1 != pSeat->m_iAmmo1Old) {
pSeat->m_flAmmo1Alpha = 1.0;
pSeat->m_iAmmo1Old = pl.a_ammo1;
}
if (pSeat->ammo1_alpha >= HUD_ALPHA) {
pSeat->ammo1_alpha -= clframetime * 0.5;
if (pSeat->m_flAmmo1Alpha >= HUD_ALPHA) {
pSeat->m_flAmmo1Alpha -= clframetime * 0.5;
} else {
pSeat->ammo1_alpha = HUD_ALPHA;
pSeat->m_flAmmo1Alpha = HUD_ALPHA;
}
pos = g_hudmins + [g_hudres[0] - 152, g_hudres[1] - 42];
HUD_DrawNums(pl.a_ammo1, pos, pSeat->ammo1_alpha, g_hud_color);
HUD_DrawNums(pl.a_ammo1, pos, pSeat->m_flAmmo1Alpha, g_hud_color);
HUD_DrawSeperator(pos + [30,0]);
}
@ -210,44 +366,44 @@ HUD_DrawAmmo1(void)
void
HUD_DrawAmmo2(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
vector pos;
if (pl.a_ammo2 != pSeat->ammo2_old) {
pSeat->ammo2_alpha = 1.0;
pSeat->ammo2_old = pl.a_ammo2;
if (pl.a_ammo2 != pSeat->m_iAmmo2Old) {
pSeat->m_flAmmo2Alpha = 1.0;
pSeat->m_iAmmo2Old = pl.a_ammo2;
}
if (pSeat->ammo2_alpha >= HUD_ALPHA) {
pSeat->ammo2_alpha -= clframetime * 0.5;
if (pSeat->m_flAmmo2Alpha >= HUD_ALPHA) {
pSeat->m_flAmmo2Alpha -= clframetime * 0.5;
} else {
pSeat->ammo2_alpha = HUD_ALPHA;
pSeat->m_flAmmo2Alpha = HUD_ALPHA;
}
pos = g_hudmins + [g_hudres[0] - 72, g_hudres[1] - 42];
HUD_DrawNums(pl.a_ammo2, pos, pSeat->ammo2_alpha, g_hud_color);
HUD_DrawNums(pl.a_ammo2, pos, pSeat->m_flAmmo2Alpha, g_hud_color);
}
/* special ammo */
void
HUD_DrawAmmo3(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
vector pos;
if (pl.a_ammo3 != pSeat->ammo3_old) {
pSeat->ammo3_alpha = 1.0;
pSeat->ammo3_old = pl.a_ammo3;
if (pl.a_ammo3 != pSeat->m_iAmmo3Old) {
pSeat->m_flAmmo3Alpha = 1.0;
pSeat->m_iAmmo3Old = pl.a_ammo3;
}
if (pSeat->ammo3_alpha >= HUD_ALPHA) {
pSeat->ammo3_alpha -= clframetime * 0.5;
if (pSeat->m_flAmmo3Alpha >= HUD_ALPHA) {
pSeat->m_flAmmo3Alpha -= clframetime * 0.5;
} else {
pSeat->ammo3_alpha = HUD_ALPHA;
pSeat->m_flAmmo3Alpha = HUD_ALPHA;
}
pos = g_hudmins + [g_hudres[0] - 72, g_hudres[1] - 74];
HUD_DrawNums(pl.a_ammo3, pos, pSeat->ammo3_alpha, g_hud_color);
HUD_DrawNums(pl.a_ammo3, pos, pSeat->m_flAmmo3Alpha, g_hud_color);
}
/* flashlight/torch indicator */
@ -255,7 +411,7 @@ void
HUD_DrawFlashlight(void)
{
vector pos;
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
pos = g_hudmins + [g_hudres[0] - 48, 16];
/* both on, draw both sprites at full intensity */
@ -333,27 +489,27 @@ HUD_DrawNotify(void)
{
vector pos;
if (pSeat->pickup_alpha <= 0.0f) {
if (pSeat->m_flPickupAlpha <= 0.0f) {
return;
}
pos = g_hudmins + [g_hudres[0] - 192, g_hudres[1] - 128];
Weapons_HUDPic(pSeat->pickup_weapon, 1, pos, pSeat->pickup_alpha);
pSeat->pickup_alpha -= frametime;
Weapons_HUDPic(pSeat->m_iPickupWeapon, 1, pos, pSeat->m_flPickupAlpha);
pSeat->m_flPickupAlpha -= clframetime;
}
void
HUD_WeaponPickupNotify(int w)
{
pSeat->pickup_weapon = w;
pSeat->pickup_alpha = 1.0f;
pSeat->m_iPickupWeapon = w;
pSeat->m_flPickupAlpha = 1.0f;
}
/* main entry */
void
HUD_Draw(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
g_hud_color = autocvar_con_color * (1 / 255);
@ -361,6 +517,11 @@ HUD_Draw(void)
Weapons_DrawCrosshair();
HUD_DrawWeaponSelect();
Textmenu_Draw();
HUD_DrawMoney();
HUD_DrawTimer(0);
if (!(pl.g_items & ITEM_SUIT)) {
return;
}
@ -376,7 +537,10 @@ HUD_Draw(void)
/* specatator main entry */
void
VGUI_DrawSpectatorHUD(void)
HUD_DrawSpectator(void)
{
// FIXME
Textmenu_Draw();
HUD_DrawTimer(1);
}

View File

@ -48,4 +48,16 @@ float spr_flash2[4] = {
24 / 256, // pos u
48 / 256, // size x
32 / 256 // size y
};
};
string
HUD_GetChatColorHEX(float fTeam)
{
if (fTeam == TEAM_CT) {
return "^x7AC";
} else if (fTeam == TEAM_T) {
return "^xC33";
} else {
return "^xCCC";
}
}

View File

@ -14,7 +14,7 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
vector vHUDSlotNumPos[6] =
vector g_vecHUDNums[6] =
{
[168 / 256, 72 / 256],
[188 / 256, 72 / 256],
@ -24,80 +24,86 @@ vector vHUDSlotNumPos[6] =
[208 / 256, 92 / 256]
};
void HUD_DrawWeaponSelect_Forward(void)
void
HUD_DrawWeaponSelect_Forward(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
pSeat->fHUDWeaponSelected = pl.activeweapon;
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
pSeat->m_iHUDWeaponSelected = pl.activeweapon;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected--;
if (pSeat->fHUDWeaponSelected <= 0) {
pSeat->fHUDWeaponSelected = g_weapons.length - 1;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected--;
if (pSeat->m_iHUDWeaponSelected <= 0) {
pSeat->m_iHUDWeaponSelected = g_weapons.length - 1;
}
}
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_flHUDWeaponSelectTime = time + 3;
if not (pl.g_items & g_weapons[pSeat->fHUDWeaponSelected].id) {
if not (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) {
HUD_DrawWeaponSelect_Forward();
}
}
void HUD_DrawWeaponSelect_Back(void)
void
HUD_DrawWeaponSelect_Back(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
pSeat->fHUDWeaponSelected = pl.activeweapon;
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
pSeat->m_iHUDWeaponSelected = pl.activeweapon;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected++;
if (pSeat->fHUDWeaponSelected >= g_weapons.length) {
pSeat->fHUDWeaponSelected = 1;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected++;
if (pSeat->m_iHUDWeaponSelected >= g_weapons.length) {
pSeat->m_iHUDWeaponSelected = 1;
}
}
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_flHUDWeaponSelectTime = time + 3;
if not (pl.g_items & g_weapons[pSeat->fHUDWeaponSelected].id) {
if not (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) {
HUD_DrawWeaponSelect_Back();
}
}
void HUD_DrawWeaponSelect_Trigger(void)
void
HUD_DrawWeaponSelect_Trigger(void)
{
player pl = (player)pSeat->ePlayer;
pl.activeweapon = pSeat->fHUDWeaponSelected;
sendevent("PlayerSwitchWeapon", "f", pSeat->fHUDWeaponSelected);
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_select.wav", 0.5f, ATTN_NONE);
pSeat->fHUDWeaponSelected = pSeat->fHUDWeaponSelectTime = 0;
player pl = (player)pSeat->m_ePlayer;
pl.activeweapon = pSeat->m_iHUDWeaponSelected;
sendevent("PlayerSwitchWeapon", "i", pSeat->m_iHUDWeaponSelected);
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_select.wav", 0.5f, ATTN_NONE);
pSeat->m_iHUDWeaponSelected = pSeat->m_flHUDWeaponSelectTime = 0;
}
void HUD_DrawWeaponSelect_Last(void)
void
HUD_DrawWeaponSelect_Last(void)
{
}
void HUD_DrawWeaponSelect_Num(vector vPos, float fValue)
void
HUD_DrawWeaponSelect_Num(vector vecPos, int val)
{
drawsubpic(vPos, [20,20], "sprites/640hud7.spr_0.tga", vHUDSlotNumPos[fValue], [20/256, 20/256], g_hud_color, 1, DRAWFLAG_ADDITIVE);
drawsubpic(vecPos, [20,20], "sprites/640hud7.spr_0.tga", g_vecHUDNums[val], [20/256, 20/256], g_hud_color, 1, DRAWFLAG_ADDITIVE);
}
int HUD_InSlotPos(int slot, int pos)
int
HUD_InSlotPos(int slot, int pos)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
for (int i = 1; i < g_weapons.length; i++) {
if (g_weapons[i].slot == slot && g_weapons[i].slot_pos == pos) {
if (pl.g_items & g_weapons[i].id) {
@ -110,58 +116,70 @@ int HUD_InSlotPos(int slot, int pos)
return -1;
}
void HUD_SlotSelect(int slot)
void
HUD_SlotSelect(int slot)
{
player pl = (player)pSeat->ePlayer;
int curslot = g_weapons[pSeat->fHUDWeaponSelected].slot;
player pl = (player)pSeat->m_ePlayer;
int curslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot;
int i;
if (g_textmenu != "") {
Textmenu_Input(slot);
return;
}
/* hack to see if we have ANY weapons at all. */
if (!pl.activeweapon) {
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
}
/* weren't in that slot? select the first one then */
if (curslot != slot) {
for (i = 1; i < g_weapons.length; i++) {
if (g_weapons[i].slot == slot && pl.g_items & g_weapons[i].id) {
pSeat->fHUDWeaponSelected = i;
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_iHUDWeaponSelected = i;
pSeat->m_flHUDWeaponSelectTime = time + 3;
break;
}
}
} else {
/* increment our current selected weapon by 1 */
pSeat->fHUDWeaponSelected++;
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_iHUDWeaponSelected++;
pSeat->m_flHUDWeaponSelectTime = time + 3;
/* haven't got it. */
if (!(pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id)) {
HUD_SlotSelect(slot);
}
/* reset when out of bounds or outside slot area */
if (pSeat->fHUDWeaponSelected >= g_weapons.length) {
pSeat->fHUDWeaponSelected = 0;
if (pSeat->m_iHUDWeaponSelected >= g_weapons.length) {
pSeat->m_iHUDWeaponSelected = 0;
HUD_SlotSelect(slot);
} else if (g_weapons[pSeat->fHUDWeaponSelected].slot != slot) {
pSeat->fHUDWeaponSelected = 0;
} else if (g_weapons[pSeat->m_iHUDWeaponSelected].slot != slot) {
pSeat->m_iHUDWeaponSelected = 0;
HUD_SlotSelect(slot);
}
}
}
void HUD_DrawWeaponSelect(void)
void
HUD_DrawWeaponSelect(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
if (pSeat->fHUDWeaponSelected) {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudoff.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected = 0;
if (pSeat->m_flHUDWeaponSelectTime < time) {
if (pSeat->m_iHUDWeaponSelected) {
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudoff.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected = 0;
}
return;
}
@ -169,8 +187,8 @@ void HUD_DrawWeaponSelect(void)
vector vecPos = g_hudmins + [16,16];
int b;
int wantslot = g_weapons[pSeat->fHUDWeaponSelected].slot;
int wantpos = g_weapons[pSeat->fHUDWeaponSelected].slot_pos;
int wantslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot;
int wantpos = g_weapons[pSeat->m_iHUDWeaponSelected].slot_pos;
for (int i = 0; i < 5; i++) {
int slot_selected = 0;
vecPos[1] = g_hudmins[1] + 16;
@ -181,7 +199,7 @@ void HUD_DrawWeaponSelect(void)
slot_selected = TRUE;
if (x == wantpos) {
// Selected Sprite
Weapons_HUDPic(pSeat->fHUDWeaponSelected, 1, vecPos, 1.0f);
Weapons_HUDPic(pSeat->m_iHUDWeaponSelected, 1, vecPos, 1.0f);
drawsubpic(vecPos, [170,45], "sprites/640hud3.spr_0.tga",
[0,180/256], [170/256,45/256], g_hud_color, 1, DRAWFLAG_ADDITIVE);
vecPos[1] += 50;

View File

@ -21,17 +21,83 @@ Client_Init
Comparable to worldspawn in SSQC in that it's mostly used for precaches
=================
*/
void Client_Init(float apilevel, string enginename, float engineversion)
void
Client_Init(float apilevel, string enginename, float engineversion)
{
registercommand("callvote");
registercommand("chooseteam");
registercommand("buy");
registercommand("radio1");
registercommand("radio2");
registercommand("radio3");
registercommand("motd");
registercommand("drop");
registercommand("nightvision");
registercommand("glock");
registercommand("usp");
registercommand("p228");
registercommand("deagle");
registercommand("fn57");
registercommand("elites");
registercommand("m3");
registercommand("xm1014");
registercommand("tmp");
registercommand("mac10");
registercommand("mp5");
registercommand("ump45");
registercommand("p90");
registercommand("ak47");
registercommand("m4a1");
registercommand("sg552");
registercommand("aug");
registercommand("scout");
registercommand("sg550");
registercommand("awp");
registercommand("g3sg1");
registercommand("m249");
registercommand("primammo");
registercommand("buyammo1");
registercommand("secammo");
registercommand("buyammo2");
registercommand("vest");
registercommand("vesthelm");
registercommand("flash");
registercommand("hegren");
registercommand("vsgren");
registercommand("defuser");
registercommand("nvg");
registercommand("coverme");
registercommand("takepoint");
registercommand("holdpos");
registercommand("regroup");
registercommand("followme");
registercommand("takingfire");
registercommand("go");
registercommand("fallback");
registercommand("sticktog");
registercommand("getinpos");
registercommand("stormfront");
registercommand("report");
registercommand("roger");
registercommand("enemyspot");
registercommand("needbackup");
registercommand("sectorclear");
registercommand("inposition");
registercommand("reportingin");
registercommand("getout");
registercommand("negative");
registercommand("enemydown");
}
void Client_InitDone(void)
void
Client_InitDone(void)
{
/* change this to the motd */
//VGUI_ChooseTeam();
Textmenu_Call("TEAM_SELECT");
}
void Game_RendererRestarted(string rstr)
void
Game_RendererRestarted(string rstr)
{
precache_model("sprites/640hud1.spr");
precache_model("sprites/640hud2.spr");

View File

@ -32,7 +32,7 @@ Player_ReadEntity(float new)
//FIXME: splitscreen
if (pl.entnum == player_localentnum) {
//FIXME: splitscreen
pSeat = &seats[0];
pSeat = &g_seats[0];
for (i = pl.sequence+1; i <= servercommandframe; i++) {
if (!getinputstate(i)) {
break; //erk?... too old?

View File

@ -23,7 +23,8 @@ Propagate our pmove state to whatever the current frame before its stomped on
(so any non-networked state updates locally).
=================
*/
void GamePredict_PreFrame(player pl)
void
GamePredict_PreFrame(player pl)
{
pl.net_cs_shotmultiplier = pl.cs_shotmultiplier;
pl.net_cs_shottime = pl.cs_shottime;
@ -38,7 +39,8 @@ Rewind our pmove state back to before we started predicting.
(to give consistent state instead of accumulating errors)
=================
*/
void GamePredict_PostFrame(player pl)
void
GamePredict_PostFrame(player pl)
{
pl.cs_shotmultiplier = pl.net_cs_shotmultiplier;
pl.cs_shottime = pl.net_cs_shottime;

View File

@ -2,17 +2,19 @@
#pragma progs_dat "../../../cstrike/data.pk3dir/csprogs.dat"
#define CSQC
#define CLIENT
#define VALVE
#define CSTRIKE
#includelist
../../shared/fteextensions.qc
../../shared/defs.h
../../shared/cstrike/defs.h
../../shared/math.h
../../shared/materials.h
../../shared/events.h
../../shared/entities.h
../../shared/sound.c
../valve/defs.h
../cstrike/defs.h
../valve/particles.h
../defs.h
@ -20,13 +22,13 @@
../../vgui/include.src
../util.c
../cstrike/init.c
../fade.c
../titles.c
../text.c
../../gs-entbase/client.src
../../gs-entbase/shared.src
../sky.c
../sound.c
@ -41,10 +43,10 @@
../../shared/pmove.c
predict.c
../predict.c
../../shared/decals.c
../../shared/effects.c
../../shared/spraylogo.cpp
../npc.c
../../shared/cstrike/radio.c
../../shared/cstrike/items.h
../../shared/cstrike/weapons_cstrike.c
../../shared/valve/weapon_common.h
@ -81,21 +83,22 @@ predict.c
../cstrike/player.c
entities.c
../entities.c
../fx_lensflare.c
../fx_gunsmoke.c
../valve/cmds.c
../valve/game_event.c
../cstrike/cmds.c
../cstrike/game_event.c
../events.c
../valve/view.c
../view.c
../damage.c
../obituary.c
../chat.c
../textmenu.c
../vgui.cpp
../cstrike/vgui_chooseteam.cpp
../cstrike/textmenu.c
../cstrike/init.c
hud.h
crosshair.c
hud.c
hud_weaponselect.c

View File

@ -0,0 +1,322 @@
/*
* Copyright (c) 2016-2020 Marco Hladik <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void
TEAM_SELECT(int n)
{
switch (n) {
case 1:
Textmenu_Call("TERRORIST_SELECT");
break;
case 2:
Textmenu_Call("CT_SELECT");
break;
case 5:
sendevent("JoinAuto", "");
Textmenu_Call("");
break;
}
}
void
TERRORIST_SELECT(int n)
{
switch (n) {
case 1:
sendevent("JoinT", "f", 1);
Textmenu_Call("");
break;
case 2:
sendevent("JoinT", "f", 2);
Textmenu_Call("");
break;
case 3:
sendevent("JoinT", "f", 3);
Textmenu_Call("");
break;
case 4:
sendevent("JoinT", "f", 4);
Textmenu_Call("");
break;
case 5:
sendevent("JoinT", "f", floor(random(1,5)));
Textmenu_Call("");
break;
}
}
void
CT_SELECT(int n)
{
switch (n) {
case 1:
sendevent("JoinCT", "f", 1);
Textmenu_Call("");
break;
case 2:
sendevent("JoinCT", "f", 2);
Textmenu_Call("");
break;
case 3:
sendevent("JoinCT", "f", 3);
Textmenu_Call("");
break;
case 4:
sendevent("JoinCT", "f", 4);
Textmenu_Call("");
break;
case 5:
sendevent("JoinCT", "f", floor(random(1,5)));
Textmenu_Call("");
break;
}
}
void
BUY(int n)
{
player pl;
pl = (player)pSeat->m_ePlayer;
int inteam = getplayerkeyfloat(pl.entnum-1, "*team");
switch (n) {
case 1:
Textmenu_Call(inteam == TEAM_T ? "T_BUYPISTOL" : "CT_BUYPISTOL");
break;
case 2:
Textmenu_Call("BUYSHOTGUN");
break;
case 3:
Textmenu_Call(inteam == TEAM_T ? "T_BUYSUBMACHINEGUN" : "CT_BUYSUBMACHINEGUN");
break;
case 4:
Textmenu_Call(inteam == TEAM_T ? "T_BUYRIFLE" : "CT_BUYRIFLE");
break;
case 5:
Textmenu_Call(inteam == TEAM_T ? "BUYMACHINEGUN" : "BUYMACHINEGUN");
break;
case 6:
sendevent("AmmoBuyPrimary", "");
Textmenu_Call("");
break;
case 7:
sendevent("AmmoBuySecondary", "");
Textmenu_Call("");
break;
case 8:
Textmenu_Call(inteam == TEAM_T ? "DT_BUYITEM" : "DCT_BUYITEM");
break;
case 0:
Textmenu_Call("");
break;
}
}
/* Equipment */
void
DT_BUYITEM(int n)
{
switch (n) {
default:
Textmenu_Call("");
break;
}
}
void
DCT_BUYITEM(int n)
{
switch (n) {
default:
Textmenu_Call("");
break;
}
}
/* Handguns */
void
T_BUYPISTOL(int n)
{
switch (n) {
default:
Textmenu_Call("");
break;
}
}
void
CT_BUYPISTOL(int n)
{
switch (n) {
default:
Textmenu_Call("");
break;
}
}
/* Shotguns */
void
BUYSHOTGUN(int n)
{
switch (n) {
default:
Textmenu_Call("");
break;
}
}
/* Rifles, Sniper */
void
T_BUYRIFLE(int n)
{
switch (n) {
default:
Textmenu_Call("");
break;
}
}
void
CT_BUYRIFLE(int n)
{
switch (n) {
default:
Textmenu_Call("");
break;
}
}
/* SMGs */
void
T_BUYSUBMACHINEGUN(int n)
{
switch (n) {
default:
Textmenu_Call("");
break;
}
}
void
CT_BUYSUBMACHINEGUN(int n)
{
switch (n) {
default:
Textmenu_Call("");
break;
}
}
/* Big and heavy */
void
BUYMACHINEGUN(int n)
{
switch (n) {
default:
Textmenu_Call("");
break;
}
}
/* Radio */
void
RADIOA(int n)
{
switch (n) {
case 1:
sendevent("Radio", "f", RADIO_CT_COVERME);
break;
case 2:
sendevent("Radio", "f", RADIO_TAKEPOINT);
break;
case 3:
sendevent("Radio", "f", RADIO_POSITION);
break;
case 4:
sendevent("Radio", "f", RADIO_REGROUP);
break;
case 5:
sendevent("Radio", "f", RADIO_FOLLOWME);
break;
case 6:
sendevent("Radio", "f", RADIO_FIREASSIS);
break;
default:
return;
}
Textmenu_Call("");
}
void
RADIOB(int n)
{
switch (n) {
case 1:
sendevent("Radio", "f", RADIO_COM_GO);
break;
case 2:
sendevent("Radio", "f", RADIO_FALLBACK);
break;
case 3:
sendevent("Radio", "f", RADIO_STICKTOG);
break;
case 4:
sendevent("Radio", "f", RADIO_COM_GETINPOS);
break;
case 5:
sendevent("Radio", "f", RADIO_STORMFRONT);
break;
case 6:
sendevent("Radio", "f", RADIO_COM_REPORTIN);
break;
default:
return;
}
Textmenu_Call("");
}
void
RADIOC(int n)
{
switch (n) {
case 1:
sendevent("Radio", "f", RADIO_CT_AFFIRM);
break;
case 2:
sendevent("Radio", "f", RADIO_CT_ENEMYS);
break;
case 3:
sendevent("Radio", "f", RADIO_CT_BACKUP);
break;
case 4:
sendevent("Radio", "f", RADIO_CLEAR);
break;
case 5:
sendevent("Radio", "f", RADIO_CT_INPOS);
break;
case 6:
sendevent("Radio", "f", RADIO_COM_REPORTIN);
break;
case 7:
sendevent("Radio", "f", RADIO_BLOW);
break;
case 8:
sendevent("Radio", "f", RADIO_NEGATIVE);
break;
case 9:
sendevent("Radio", "f", RADIO_ENEMYDOWN);
break;
default:
return;
}
Textmenu_Call("");
}

View File

@ -21,60 +21,61 @@ static CUIWindow winTTeam;
void
T_Skin1(void)
{
sendevent( "GamePlayerSpawn", "f", 1 );
sendevent("GamePlayerSpawn", "f", 1);
winTTeam.Hide();
}
void
T_Skin2(void)
{
sendevent( "GamePlayerSpawn", "f", 2 );
sendevent("GamePlayerSpawn", "f", 2);
winTTeam.Hide();
}
void
T_Skin3(void)
{
sendevent( "GamePlayerSpawn", "f", 3 );
sendevent("GamePlayerSpawn", "f", 3);
winTTeam.Hide();
}
void
T_Skin4(void)
{
sendevent( "GamePlayerSpawn", "f", 4 );
sendevent("GamePlayerSpawn", "f", 4);
winTTeam.Hide();
}
void
CT_Skin1(void)
{
sendevent( "GamePlayerSpawn", "f", 5 );
sendevent("GamePlayerSpawn", "f", 5);
winCTTeam.Hide();
}
void
CT_Skin2(void)
{
sendevent( "GamePlayerSpawn", "f", 6 );
sendevent("GamePlayerSpawn", "f", 6);
winCTTeam.Hide();
}
void
CT_Skin3(void)
{
sendevent( "GamePlayerSpawn", "f", 7 );
sendevent("GamePlayerSpawn", "f", 7);
winCTTeam.Hide();
}
void
CT_Skin4(void)
{
sendevent( "GamePlayerSpawn", "f", 8 );
sendevent("GamePlayerSpawn", "f", 8);
winCTTeam.Hide();
}
void
VGUI_GoSpectator(void)
{
sendevent( "GamePlayerSpawn", "f", 0 );
sendevent("GamePlayerSpawn", "f", 0);
winChooseTeam.Hide();
}
void VGUI_ChooseTeam_CT(void)
void
VGUI_ChooseTeam_CT(void)
{
static int initialized;
static CUIButton btnSkin1;
@ -82,45 +83,46 @@ void VGUI_ChooseTeam_CT(void)
static CUIButton btnSkin3;
static CUIButton btnSkin4;
if ( !initialized ) {
if (!initialized) {
initialized = TRUE;
winCTTeam = spawn( CUIWindow );
winCTTeam.SetTitle( "Choose Skin" );
winCTTeam.SetSize( [420,320] );
winCTTeam = spawn(CUIWindow);
winCTTeam.SetTitle("Choose Skin");
winCTTeam.SetSize([420,320]);
btnSkin1 = spawn( CUIButton );
btnSkin1.SetTitle( "Skin 1" );
btnSkin1.SetPos( [8,132] );
btnSkin1.SetFunc( CT_Skin1 );
btnSkin1 = spawn(CUIButton);
btnSkin1.SetTitle("Skin 1");
btnSkin1.SetPos([8,132]);
btnSkin1.SetFunc(CT_Skin1);
btnSkin2 = spawn( CUIButton );
btnSkin2.SetTitle( "Skin 2" );
btnSkin2.SetPos( [8,132+30] );
btnSkin2.SetFunc( CT_Skin2 );
btnSkin2 = spawn(CUIButton);
btnSkin2.SetTitle("Skin 2");
btnSkin2.SetPos([8,132+30]);
btnSkin2.SetFunc(CT_Skin2);
btnSkin3 = spawn( CUIButton );
btnSkin3.SetTitle( "Skin 3" );
btnSkin3.SetPos( [8,132+30+30] );
btnSkin3.SetFunc( CT_Skin3 );
btnSkin3 = spawn(CUIButton);
btnSkin3.SetTitle("Skin 3");
btnSkin3.SetPos([8,132+30+30]);
btnSkin3.SetFunc(CT_Skin3);
btnSkin4 = spawn( CUIButton );
btnSkin4.SetTitle( "Skin 4" );
btnSkin4.SetPos( [8,132+30+30+30] );
btnSkin4.SetFunc( CT_Skin4 );
btnSkin4 = spawn(CUIButton);
btnSkin4.SetTitle("Skin 4");
btnSkin4.SetPos([8,132+30+30+30]);
btnSkin4.SetFunc(CT_Skin4);
g_uiDesktop.Add( winCTTeam );
winCTTeam.Add( btnSkin1 );
winCTTeam.Add( btnSkin2 );
winCTTeam.Add( btnSkin3 );
winCTTeam.Add( btnSkin4 );
g_uiDesktop.Add(winCTTeam);
winCTTeam.Add(btnSkin1);
winCTTeam.Add(btnSkin2);
winCTTeam.Add(btnSkin3);
winCTTeam.Add(btnSkin4);
}
winChooseTeam.Hide();
winCTTeam.Show();
winCTTeam.SetPos( ( video_res / 2 ) - ( winCTTeam.GetSize() / 2 ) );
winCTTeam.SetPos((video_res / 2) - (winCTTeam.GetSize() / 2));
}
void VGUI_ChooseTeam_T(void)
void
VGUI_ChooseTeam_T(void)
{
static int initialized;
static CUIButton btnSkin1;
@ -128,78 +130,79 @@ void VGUI_ChooseTeam_T(void)
static CUIButton btnSkin3;
static CUIButton btnSkin4;
if ( !initialized ) {
if (!initialized) {
initialized = TRUE;
winTTeam = spawn( CUIWindow );
winTTeam.SetTitle( "Choose Skin" );
winTTeam.SetSize( [420,320] );
winTTeam = spawn(CUIWindow);
winTTeam.SetTitle("Choose Skin");
winTTeam.SetSize([420,320]);
btnSkin1 = spawn( CUIButton );
btnSkin1.SetTitle( "Skin 1" );
btnSkin1.SetPos( [8,132] );
btnSkin1.SetFunc( T_Skin1 );
btnSkin1 = spawn(CUIButton);
btnSkin1.SetTitle("Skin 1");
btnSkin1.SetPos([8,132]);
btnSkin1.SetFunc(T_Skin1);
btnSkin2 = spawn( CUIButton );
btnSkin2.SetTitle( "Skin 2" );
btnSkin2.SetPos( [8,132+30] );
btnSkin2.SetFunc( T_Skin2 );
btnSkin2 = spawn(CUIButton);
btnSkin2.SetTitle("Skin 2");
btnSkin2.SetPos([8,132+30]);
btnSkin2.SetFunc(T_Skin2);
btnSkin3 = spawn( CUIButton );
btnSkin3.SetTitle( "Skin 3" );
btnSkin3.SetPos( [8,132+30+30] );
btnSkin3.SetFunc( T_Skin3 );
btnSkin3 = spawn(CUIButton);
btnSkin3.SetTitle("Skin 3");
btnSkin3.SetPos([8,132+30+30]);
btnSkin3.SetFunc(T_Skin3);
btnSkin4 = spawn( CUIButton );
btnSkin4.SetTitle( "Skin 4" );
btnSkin4.SetPos( [8,132+30+30+30] );
btnSkin4.SetFunc( T_Skin4 );
btnSkin4 = spawn(CUIButton);
btnSkin4.SetTitle("Skin 4");
btnSkin4.SetPos([8,132+30+30+30]);
btnSkin4.SetFunc(T_Skin4);
g_uiDesktop.Add( winTTeam );
winTTeam.Add( btnSkin1 );
winTTeam.Add( btnSkin2 );
winTTeam.Add( btnSkin3 );
winTTeam.Add( btnSkin4 );
g_uiDesktop.Add(winTTeam);
winTTeam.Add(btnSkin1);
winTTeam.Add(btnSkin2);
winTTeam.Add(btnSkin3);
winTTeam.Add(btnSkin4);
}
winChooseTeam.Hide();
winTTeam.Show();
winTTeam.SetPos( ( video_res / 2 ) - ( winTTeam.GetSize() / 2 ) );
winTTeam.SetPos((video_res / 2) - (winTTeam.GetSize() / 2));
}
void VGUI_ChooseTeam(void)
void
VGUI_ChooseTeam(void)
{
static int initialized;
static CUIButton btnGoCT;
static CUIButton btnGoT;
static CUIButton btnGoSpectator;
if ( !initialized ) {
if (!initialized) {
initialized = TRUE;
winChooseTeam = spawn( CUIWindow );
winChooseTeam.SetTitle( "Choose Team" );
winChooseTeam.SetSize( '420 320' );
winChooseTeam = spawn(CUIWindow);
winChooseTeam.SetTitle("Choose Team");
winChooseTeam.SetSize('420 320');
btnGoCT = spawn( CUIButton );
btnGoCT.SetTitle( "Counter-Terrorists" );
btnGoCT.SetPos( '8 132' );
btnGoCT.SetFunc( VGUI_ChooseTeam_CT );
btnGoCT = spawn(CUIButton);
btnGoCT.SetTitle("Counter-Terrorists");
btnGoCT.SetPos('8 132');
btnGoCT.SetFunc(VGUI_ChooseTeam_CT);
btnGoT = spawn( CUIButton );
btnGoT.SetTitle( "Terrorists" );
btnGoT.SetPos( '8 162' );
btnGoT.SetFunc( VGUI_ChooseTeam_T );
btnGoT = spawn(CUIButton);
btnGoT.SetTitle("Terrorists");
btnGoT.SetPos('8 162');
btnGoT.SetFunc(VGUI_ChooseTeam_T);
btnGoSpectator = spawn( CUIButton );
btnGoSpectator.SetTitle( "Spectator" );
btnGoSpectator.SetPos( '8 192' );
btnGoSpectator.SetFunc( VGUI_GoSpectator );
btnGoSpectator = spawn(CUIButton);
btnGoSpectator.SetTitle("Spectator");
btnGoSpectator.SetPos('8 192');
btnGoSpectator.SetFunc(VGUI_GoSpectator);
g_uiDesktop.Add( winChooseTeam );
winChooseTeam.Add( btnGoCT );
winChooseTeam.Add( btnGoT );
winChooseTeam.Add( btnGoSpectator );
g_uiDesktop.Add(winChooseTeam);
winChooseTeam.Add(btnGoCT);
winChooseTeam.Add(btnGoT);
winChooseTeam.Add(btnGoSpectator);
}
winChooseTeam.Show();
winChooseTeam.SetPos( ( video_res / 2 ) - ( winChooseTeam.GetSize() / 2 ) );
winChooseTeam.SetPos((video_res / 2) - (winChooseTeam.GetSize() / 2));
}

View File

@ -22,7 +22,7 @@ Damage_Draw(void)
float fw, fw_alpha;
float rt, rt_alpha;
if (pSeat->damage_alpha <= 0.0) {
if (pSeat->m_flDamageAlpha <= 0.0) {
return;
}
@ -34,12 +34,12 @@ Damage_Draw(void)
* of each direction based on a dotproduct tested against our
* camera direction.
*/
rel_pos = normalize(pSeat->damage_pos - getproperty(VF_ORIGIN));
rel_pos = normalize(pSeat->m_vecDamagePos - getproperty(VF_ORIGIN));
makevectors(getproperty(VF_CL_VIEWANGLES));
fw = dotproduct(rel_pos, v_forward);
rt = dotproduct(rel_pos, v_right);
fw_alpha = fabs(fw) * pSeat->damage_alpha;
fw_alpha = fabs(fw) * pSeat->m_flDamageAlpha;
if (fw > 0.25f) {
drawpic(center + [-64,-102], "sprites/640_pain.spr_0.tga",
[128,48], [1,1,1], fw_alpha, DRAWFLAG_ADDITIVE);
@ -48,7 +48,7 @@ Damage_Draw(void)
[128,48], [1,1,1], fw_alpha, DRAWFLAG_ADDITIVE);
}
rt_alpha = fabs(rt) * pSeat->damage_alpha;
rt_alpha = fabs(rt) * pSeat->m_flDamageAlpha;
if (rt > 0.25f) {
drawpic(center + [70,-64], "sprites/640_pain.spr_1.tga",
[48,128], [1,1,1], rt_alpha, DRAWFLAG_ADDITIVE);
@ -57,7 +57,7 @@ Damage_Draw(void)
[48,128], [1,1,1], rt_alpha, DRAWFLAG_ADDITIVE);
}
pSeat->damage_alpha -= clframetime;
pSeat->m_flDamageAlpha -= clframetime;
}
/*
@ -69,15 +69,15 @@ float
CSQC_Parse_Damage(float save, float take, vector abs_pos)
{
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &seats[s];
pSeat = &g_seats[s];
/* FIXME: while a player shooting you from [0,0,0] is unlikely, it's
* not impossible. we only do this to lazily seperate players from
* entities belonging to world
*/
if (abs_pos) {
pSeat->damage_pos = abs_pos;
pSeat->damage_alpha = 1.0f;
pSeat->m_vecDamagePos = abs_pos;
pSeat->m_flDamageAlpha = 1.0f;
}
//View_AddPunchAngle([take,0,0]);

View File

@ -71,9 +71,6 @@ vector video_mins;
vector video_res;
vector mouse_pos;
/* TODO: Move these into gs-entbase/client/defs.h? */
vector g_vecSunDir;
vector g_vecLensPos;
int g_iWorldInitialized;
/* this actually belongs in builtins.h since its an undocumented global */

View File

@ -21,7 +21,8 @@ CSQC_Ent_Update
Called whenever an entity is sent manually via .SendFlags and so on
=================
*/
void CSQC_Ent_Update(float new)
void
CSQC_Ent_Update(float new)
{
float t;
t = readbyte();

View File

@ -17,10 +17,9 @@
void
CSQC_Init(float apilevel, string enginename, float engineversion)
{
pSeat = &seats[0];
pSeat = &g_seats[0];
registercommand("dev_sentence");
registercommand("fx_lenspos");
registercommand("titles_test");
registercommand("vox_test");
registercommand("+attack2");
@ -31,8 +30,8 @@ CSQC_Init(float apilevel, string enginename, float engineversion)
registercommand("-use");
registercommand("+duck");
registercommand("-duck");
registercommand( "callvote" );
registercommand( "vote" );
registercommand("callvote");
registercommand("vote");
/* Requested by Slacer */
registercommand("+zoomin");
@ -146,14 +145,14 @@ CSQC_UpdateView(float w, float h, float focus)
video_res[0] = w;
video_res[1] = h;
if ( g_iCubeProcess == TRUE ) {
if (g_iCubeProcess == TRUE) {
clearscene();
setproperty( VF_DRAWWORLD, TRUE );
setproperty( VF_DRAWENGINESBAR, FALSE );
setproperty( VF_DRAWCROSSHAIR, FALSE );
setproperty( VF_ENVMAP, "$whiteimage" );
setproperty( VF_ORIGIN, g_vecCubePos );
setproperty( VF_AFOV, 90 );
setproperty(VF_DRAWWORLD, TRUE);
setproperty(VF_DRAWENGINESBAR, FALSE);
setproperty(VF_DRAWCROSSHAIR, FALSE);
setproperty(VF_ENVMAP, "$whiteimage");
setproperty(VF_ORIGIN, g_vecCubePos);
setproperty(VF_AFOV, 90);
renderscene();
return;
}
@ -163,22 +162,22 @@ CSQC_UpdateView(float w, float h, float focus)
setproperty(VF_DRAWCROSSHAIR, 0);
//just in case...
if (numclientseats > seats.length) {
numclientseats = seats.length;
if (numclientseats > g_seats.length) {
numclientseats = g_seats.length;
}
for (s = seats.length; s-- > numclientseats;) {
pSeat = &seats[s];
pSeat->ePlayer = world;
for (s = g_seats.length; s-- > numclientseats;) {
pSeat = &g_seats[s];
pSeat->m_ePlayer = world;
}
for (s = numclientseats; s-- > 0;) {
pSeat = &seats[s];
pSeat = &g_seats[s];
View_CalcViewport(s, w, h);
setproperty(VF_ACTIVESEAT, (float)s);
pSeat->ePlayer = self = findfloat(world, entnum, player_localentnum);
pSeat->m_ePlayer = self = findfloat(world, entnum, player_localentnum);
if (!self) {
continue;
@ -188,9 +187,9 @@ CSQC_UpdateView(float w, float h, float focus)
Predict_PreFrame((player)self);
pSeat->vPlayerOrigin = pl.origin;
pSeat->vPlayerVelocity = pl.velocity;
pSeat->fPlayerFlags = pl.flags;
pSeat->m_vecPredictedOrigin = pl.origin;
pSeat->m_vecPredictedVelocity = pl.velocity;
pSeat->m_flPredictedFlags = pl.flags;
// Don't hide the player entity
if (autocvar_cl_thirdperson == TRUE && pl.health) {
@ -201,15 +200,15 @@ CSQC_UpdateView(float w, float h, float focus)
float oldzoom = pl.viewzoom;
if (pl.viewzoom == 1.0f) {
pl.viewzoom = 1.0 - (0.5 * pSeat->flZoomTime);
pl.viewzoom = 1.0 - (0.5 * pSeat->m_flZoomTime);
/* +zoomin requested by Slacer */
if (pSeat->iZoomed) {
pSeat->flZoomTime += frametime * 15;
if (pSeat->m_iZoomed) {
pSeat->m_flZoomTime += clframetime * 15;
} else {
pSeat->flZoomTime -= frametime * 15;
pSeat->m_flZoomTime -= clframetime * 15;
}
pSeat->flZoomTime = bound(0, pSeat->flZoomTime, 1);
pSeat->m_flZoomTime = bound(0, pSeat->m_flZoomTime, 1);
}
setproperty(VF_AFOV, cvar("fov") * pl.viewzoom);
@ -229,27 +228,27 @@ CSQC_UpdateView(float w, float h, float focus)
View_Stairsmooth();
// When Cameratime is active, draw on the forced coords instead
if (pSeat->fCameraTime > time) {
setproperty(VF_ORIGIN, pSeat->vCameraPos);
setproperty(VF_CL_VIEWANGLES, pSeat->vCameraAngle);
if (pSeat->m_flCameraTime > time) {
setproperty(VF_ORIGIN, pSeat->m_vecCameraOrigin);
setproperty(VF_CL_VIEWANGLES, pSeat->m_vecCameraAngle);
} else {
if (pl.health) {
if (autocvar_cl_thirdperson == TRUE) {
makevectors(view_angles);
vector vStart = [pSeat->vPlayerOrigin[0], pSeat->vPlayerOrigin[1], pSeat->vPlayerOrigin[2] + 16] + (v_right * 4);
vector vStart = [pSeat->m_vecPredictedOrigin[0], pSeat->m_vecPredictedOrigin[1], pSeat->m_vecPredictedOrigin[2] + 16] + (v_right * 4);
vector vEnd = vStart + (v_forward * -48) + [0,0,16] + (v_right * 4);
traceline(vStart, vEnd, FALSE, self);
setproperty(VF_ORIGIN, trace_endpos + (v_forward * 5));
} else {
setproperty(VF_ORIGIN, pSeat->vPlayerOrigin + pl.view_ofs);
setproperty(VF_ORIGIN, pSeat->m_vecPredictedOrigin + pl.view_ofs);
}
} else {
setproperty(VF_ORIGIN, pSeat->vPlayerOrigin);
setproperty(VF_ORIGIN, pSeat->m_vecPredictedOrigin);
}
}
if (pSeat->pWeaponFX) {
CBaseFX p = (CBaseFX)pSeat->pWeaponFX;
if (pSeat->m_pWeaponFX) {
CBaseFX p = (CBaseFX)pSeat->m_pWeaponFX;
p.Draw();
}
@ -285,7 +284,7 @@ CSQC_UpdateView(float w, float h, float focus)
setproperty(VF_ANGLES, view_angles + pl.punchangle);
setproperty(VF_DRAWWORLD, 0);
setproperty(VF_AFOV, autocvar_r_viewmodelfov);
setproperty(VF_ORIGIN, pSeat->vPlayerOrigin + pl.view_ofs);
setproperty(VF_ORIGIN, pSeat->m_vecPredictedOrigin + pl.view_ofs);
View_DrawViewModel();
renderscene();
} else {
@ -293,17 +292,14 @@ CSQC_UpdateView(float w, float h, float focus)
renderscene();
}
FX_LensFlare();
/* Run this on all players */
for (entity b = world; (b = find(b, ::classname, "player"));) {
player pf = (player) b;
for (entity b = world; (b = findfloat(b, ::isCSQC, 1));) {
CBaseEntity pf = (CBaseEntity) b;
pf.postdraw();
}
Fade_Update((int)video_mins[0],(int)video_mins[1], (int)w, (int)h);
#ifdef CSTRIKE
#if 0
Cstrike_PostDraw((int)video_mins[0],(int)video_mins[1], (int)w, (int)h);
#endif
View_PostDraw();
@ -313,23 +309,22 @@ CSQC_UpdateView(float w, float h, float focus)
// The spectator sees things... differently
if (getplayerkeyvalue(player_localnum, "*spec") != "0") {
//VGUI_DrawSpectatorHUD();
HUD_DrawSpectator();
} else {
HUD_Draw();
}
Obituary_Draw();
///HUD_DrawOrbituaries();
Voice_DrawHUD();
Chat_Draw();
Print_Draw();
// Don't even try to draw centerprints and VGUI menus when scores are shown
if (pSeat->iShowScores == TRUE) {
if (pSeat->m_iScoresVisible == TRUE) {
Scores_Draw();
} else {
VGUI_Draw();
CSQC_DrawCenterprint();
Print_DrawCenterprint();
}
}
@ -353,7 +348,7 @@ float
CSQC_InputEvent(float fEventType, float fKey, float fCharacter, float fDeviceID)
{
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &seats[s];
pSeat = &g_seats[s];
switch (fEventType) {
case IE_KEYDOWN:
@ -406,7 +401,7 @@ void
CSQC_Input_Frame(void)
{
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &seats[s];
pSeat = &g_seats[s];
// If we are inside a VGUI, don't let the client do stuff outside
if (g_vguiWidgetCount > 0) {
@ -416,14 +411,14 @@ CSQC_Input_Frame(void)
}
/* The HUD needs more time */
if ((pSeat->fHUDWeaponSelected) && (input_buttons & INPUT_BUTTON0)) {
if ((pSeat->m_iHUDWeaponSelected) && (input_buttons & INPUT_BUTTON0)) {
HUD_DrawWeaponSelect_Trigger();
input_buttons = 0;
pSeat->fInputSendNext = time + 0.2;
pSeat->m_flInputBlockTime = time + 0.2;
}
/* prevent accidental input packets */
if (pSeat->fInputSendNext > time) {
if (pSeat->m_flInputBlockTime > time) {
input_impulse = 0;
input_buttons = 0;
return;
@ -434,19 +429,19 @@ CSQC_Input_Frame(void)
sendevent("Spraylogo", "");
}
if (pSeat->iInputAttack2 == TRUE) {
if (pSeat->m_iInputAttack2 == TRUE) {
input_buttons |= INPUT_BUTTON3;
}
if (pSeat->iInputReload == TRUE) {
if (pSeat->m_iInputReload == TRUE) {
input_buttons |= INPUT_BUTTON4;
}
if (pSeat->iInputUse == TRUE) {
if (pSeat->m_iInputUse == TRUE) {
input_buttons |= INPUT_BUTTON5;
}
if (pSeat->iInputDuck == TRUE) {
if (pSeat->m_iInputDuck == TRUE) {
input_buttons |= INPUT_BUTTON8;
}
}
@ -464,7 +459,7 @@ CSQC_Parse_Event(void)
{
/* always 0, unless it was sent with a MULTICAST_ONE or MULTICAST_ONE_R to p2+ */
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &seats[s];
pSeat = &g_seats[s];
float fHeader = readbyte();
@ -481,7 +476,7 @@ CSQC_Parse_Event(void)
case EV_SPEAK:
string msg;
float pit;
entity t = findfloat( world, entnum, readentitynum() );
entity t = findfloat(world, entnum, readentitynum());
msg = readstring();
pit = readfloat();
sound(t, CHAN_VOICE, msg, 1.0, ATTN_NORM, pit);
@ -542,10 +537,10 @@ CSQC_Parse_Event(void)
Effect_CreateExplosion(vExploPos);
break;
case EV_MODELGIB:
vector vPos;
vPos[0] = readcoord();
vPos[1] = readcoord();
vPos[2] = readcoord();
vector vecPos;
vecPos[0] = readcoord();
vecPos[1] = readcoord();
vecPos[2] = readcoord();
vector vSize;
vSize[0] = readcoord();
@ -554,18 +549,18 @@ CSQC_Parse_Event(void)
float fStyle = readbyte();
int count = readbyte();
Effect_BreakModel(count, vPos, vSize, [0,0,0], fStyle);
Effect_BreakModel(count, vecPos, vSize, [0,0,0], fStyle);
break;
case EV_CAMERATRIGGER:
pSeat->vCameraPos.x = readcoord();
pSeat->vCameraPos.y = readcoord();
pSeat->vCameraPos.z = readcoord();
pSeat->m_vecCameraOrigin.x = readcoord();
pSeat->m_vecCameraOrigin.y = readcoord();
pSeat->m_vecCameraOrigin.z = readcoord();
pSeat->vCameraAngle.x = readcoord();
pSeat->vCameraAngle.y = readcoord();
pSeat->vCameraAngle.z = readcoord();
pSeat->m_vecCameraAngle.x = readcoord();
pSeat->m_vecCameraAngle.y = readcoord();
pSeat->m_vecCameraAngle.z = readcoord();
pSeat->fCameraTime = time + readfloat();
pSeat->m_flCameraTime = time + readfloat();
break;
case EV_IMPACT:
int iType;
@ -600,7 +595,7 @@ CSQC_ConsoleCommand(string sCMD)
{
/* the engine will hide the p1 etc commands... which is fun... */
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &seats[s];
pSeat = &g_seats[s];
tokenize(sCMD);
@ -626,10 +621,10 @@ CSQC_ConsoleCommand(string sCMD)
sendevent("CallVote", "s", substring(sCMD, 9, strlen(sCMD)-9));
break;
case "+zoomin":
pSeat->iZoomed = TRUE;
pSeat->m_iZoomed = TRUE;
break;
case "-zoomin":
pSeat->iZoomed = FALSE;
pSeat->m_iZoomed = FALSE;
break;
case "buildcubemaps":
CMap_Build();
@ -641,28 +636,28 @@ CSQC_ConsoleCommand(string sCMD)
Sound_PlayVOX(sCMD);
break;
case "+attack2":
pSeat->iInputAttack2 = TRUE;
pSeat->m_iInputAttack2 = TRUE;
break;
case "-attack2":
pSeat->iInputAttack2 = FALSE;
pSeat->m_iInputAttack2 = FALSE;
break;
case "+reload":
pSeat->iInputReload = TRUE;
pSeat->m_iInputReload = TRUE;
break;
case "-reload":
pSeat->iInputReload = FALSE;
pSeat->m_iInputReload = FALSE;
break;
case "+use":
pSeat->iInputUse = TRUE;
pSeat->m_iInputUse = TRUE;
break;
case "-use":
pSeat->iInputUse = FALSE;
pSeat->m_iInputUse = FALSE;
break;
case "+duck":
pSeat->iInputDuck = TRUE;
pSeat->m_iInputDuck = TRUE;
break;
case "-duck":
pSeat->iInputDuck = FALSE;
pSeat->m_iInputDuck = FALSE;
break;
case "invnext":
HUD_DrawWeaponSelect_Back();
@ -674,10 +669,10 @@ CSQC_ConsoleCommand(string sCMD)
HUD_DrawWeaponSelect_Last();
break;
case "+showscores":
pSeat->iShowScores = TRUE;
pSeat->m_iScoresVisible = TRUE;
break;
case "-showscores":
pSeat->iShowScores = FALSE;
pSeat->m_iScoresVisible = FALSE;
break;
case "slot1":
HUD_SlotSelect(0);
@ -709,35 +704,35 @@ CSQC_ConsoleCommand(string sCMD)
case "slot10":
HUD_SlotSelect(9);
break;
case "fx_lenspos":
makevectors(getproperty(VF_ANGLES));
g_vecLensPos = vectoangles(v_forward);
break;
default:
return Game_ConsoleCommand();
}
return TRUE;
}
void CSQC_Parse_Print(string sMessage, float fLevel)
void
CSQC_Parse_Print(string sMessage, float fLevel)
{
// This gives messages other than chat an orange tint
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &g_seats[s];
/* This gives messages other than chat an orange tint */
if (fLevel == PRINT_CHAT) {
Chat_Parse(sMessage);
return;
}
if (g_printlines < (4)) {
g_printbuffer[g_printlines + 1] = sMessage;
g_printlines++;
if (pSeat->m_iPrintLines < 4) {
pSeat->m_strPrintBuffer[pSeat->m_iPrintLines + 1] = sMessage;
pSeat->m_iPrintLines++;
} else {
for (int i = 0; i < (4); i++) {
g_printbuffer[i] = g_printbuffer[i + 1];
for (int i = 0; i < 4; i++) {
pSeat->m_strPrintBuffer[i] = pSeat->m_strPrintBuffer[i + 1];
}
g_printbuffer[4] = sMessage;
pSeat->m_strPrintBuffer[4] = sMessage;
}
g_printtime = time + CHAT_TIME;
pSeat->m_flPrintTime = time + CHAT_TIME;
// Log to console
localcmd(sprintf("echo \"%s\"\n", sMessage));
@ -756,14 +751,17 @@ Keep in mind that newlines need to be tokenized
float
CSQC_Parse_CenterPrint(string sMessage)
{
fCenterPrintLines = tokenizebyseparator(sMessage, "\n");
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &g_seats[s];
for (int i = 0; i < (fCenterPrintLines); i++) {
sCenterPrintBuffer[i] = sprintf("^xF80%s", argv(i));
pSeat->m_iCenterprintLines = tokenizebyseparator(sMessage, "\n");
for (int i = 0; i < (pSeat->m_iCenterprintLines); i++) {
pSeat->m_strCenterprintBuffer[i] = sprintf("^xF80%s", argv(i));
}
fCenterPrintAlpha = 1;
fCenterPrintTime = time + 3;
pSeat->m_flCenterprintAlpha = 1;
pSeat->m_flCenterprintTime = time + 3;
return TRUE;
}

View File

@ -21,13 +21,14 @@ View_ShellEject
Spawns a shell tempentity. Looking fancy
====================
*/
void Event_EjectShell(void)
void
Event_EjectShell(void)
{
static void Event_EjectShell_Death(void) {
remove(self);
}
vector vOrigin = pSeat->vPlayerOrigin + [0, 0, getstatf(STAT_VIEWHEIGHT)];
vector vEndPos = gettaginfo(pSeat->eViewModel, pSeat->fEjectBone);
vector vOrigin = pSeat->m_vecPredictedOrigin + [0, 0, getstatf(STAT_VIEWHEIGHT)];
vector vEndPos = gettaginfo(pSeat->m_eViewModel, pSeat->m_iVMEjectBone);
makevectors(view_angles);
vOrigin += (v_forward * vEndPos[0]);
@ -42,7 +43,7 @@ void Event_EjectShell(void)
eShell.movetype = MOVETYPE_BOUNCE;
eShell.drawmask = MASK_ENGINE;
eShell.angles = [view_angles[0], view_angles[1], 0];
eShell.velocity = pSeat->vPlayerVelocity;
eShell.velocity = pSeat->m_vecPredictedVelocity;
eShell.velocity += (v_up * random(70, 120));
eShell.velocity += (v_right * -random(50, 70));
eShell.avelocity = [0,45,900];
@ -58,36 +59,37 @@ Called by the engine whenever a model
tries to play an event.
====================
*/
void Event_ProcessModel(float fTimeStamp, int iCode, string sData)
void
Event_ProcessModel(float fTimeStamp, int iCode, string sData)
{
if (iCode == 5004) {
localsound(sData, CHAN_AUTO, 1.0);
} else if (iCode == 5001) {
pSeat->eMuzzleflash.alpha = 1.0f;
pSeat->eMuzzleflash.scale = 0.25;
pSeat->eMuzzleflash.skin = pSeat->fNumBones;
FX_Gunsmoke(gettaginfo(pSeat->eMuzzleflash, pSeat->eMuzzleflash.skin));
pSeat->m_eMuzzleflash.alpha = 1.0f;
pSeat->m_eMuzzleflash.scale = 0.25;
pSeat->m_eMuzzleflash.skin = pSeat->m_iVMBones;
FX_Gunsmoke(gettaginfo(pSeat->m_eMuzzleflash, pSeat->m_eMuzzleflash.skin));
Event_EjectShell();
} else if(iCode == 5011) {
pSeat->eMuzzleflash.alpha = 1.0f;
pSeat->eMuzzleflash.scale = 0.25;
pSeat->eMuzzleflash.skin = pSeat->fNumBones + 1;
FX_Gunsmoke(gettaginfo(pSeat->eMuzzleflash, pSeat->eMuzzleflash.skin));
//setmodel(pSeat->eMuzzleflash, sprintf("sprites/muzzleflash%s.spr", substring(sData, 1, 1)));
pSeat->m_eMuzzleflash.alpha = 1.0f;
pSeat->m_eMuzzleflash.scale = 0.25;
pSeat->m_eMuzzleflash.skin = pSeat->m_iVMBones + 1;
FX_Gunsmoke(gettaginfo(pSeat->m_eMuzzleflash, pSeat->m_eMuzzleflash.skin));
//setmodel(pSeat->m_eMuzzleflash, sprintf("sprites/muzzleflash%s.spr", substring(sData, 1, 1)));
Event_EjectShell();
} else if (iCode == 5021) {
pSeat->eMuzzleflash.alpha = 1.0f;
pSeat->eMuzzleflash.scale = 0.25;
pSeat->eMuzzleflash.skin = pSeat->fNumBones + 2;
FX_Gunsmoke(gettaginfo(pSeat->eMuzzleflash, pSeat->eMuzzleflash.skin));
//setmodel(pSeat->eMuzzleflash, sprintf("sprites/muzzleflash%s.spr", substring(sData, 1, 1)));
pSeat->m_eMuzzleflash.alpha = 1.0f;
pSeat->m_eMuzzleflash.scale = 0.25;
pSeat->m_eMuzzleflash.skin = pSeat->m_iVMBones + 2;
FX_Gunsmoke(gettaginfo(pSeat->m_eMuzzleflash, pSeat->m_eMuzzleflash.skin));
//setmodel(pSeat->m_eMuzzleflash, sprintf("sprites/muzzleflash%s.spr", substring(sData, 1, 1)));
Event_EjectShell();
} else if (iCode == 5031) {
pSeat->eMuzzleflash.alpha = 1.0f;
pSeat->eMuzzleflash.scale = 0.25;
pSeat->eMuzzleflash.skin = pSeat->fNumBones + 3;
FX_Gunsmoke(gettaginfo(pSeat->eMuzzleflash, pSeat->eMuzzleflash.skin));
//setmodel(pSeat->eMuzzleflash, sprintf("sprites/muzzleflash%s.spr", substring(sData, 1, 1)));
pSeat->m_eMuzzleflash.alpha = 1.0f;
pSeat->m_eMuzzleflash.scale = 0.25;
pSeat->m_eMuzzleflash.skin = pSeat->m_iVMBones + 3;
FX_Gunsmoke(gettaginfo(pSeat->m_eMuzzleflash, pSeat->m_eMuzzleflash.skin));
//setmodel(pSeat->m_eMuzzleflash, sprintf("sprites/muzzleflash%s.spr", substring(sData, 1, 1)));
Event_EjectShell();
}
}

View File

@ -14,16 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* TODO: Move these into the player info struct! */
float g_flFadeDuration;
float g_flFadeHold;
float g_flFadeMaxAlpha;
float g_flFadeStyle;
float g_flFadeAlpha;
float g_flFadeTime;
vector g_vecFadeColor;
int g_iFadeActive;
/*enum
{
DRAWFLAG_NORMAL,
@ -49,64 +39,67 @@ const string mat_fade_modulate =
"}\n" \
"}\n";
void Fade_Init(void)
void
Fade_Init(void)
{
shaderforname("fade_modulate", mat_fade_modulate);
}
void Fade_Update (int x, int y, int w, int h)
void
Fade_Update (int x, int y, int w, int h)
{
if (g_iFadeActive == FALSE) {
if (pSeat->m_iFadeActive == FALSE) {
return;
}
if (g_flFadeStyle & EVF_FADEDROM) {
if (g_flFadeTime > g_flFadeHold) {
g_flFadeAlpha -= (clframetime * (1.0f / g_flFadeDuration)) * g_flFadeMaxAlpha;
if (pSeat->m_flFadeStyle & EVF_FADEDROM) {
if (pSeat->m_flFadeTime > pSeat->m_flFadeHold) {
pSeat->m_flFadeAlpha -= (clframetime * (1.0f / pSeat->m_flFadeDuration)) * pSeat->m_flFadeMaxAlpha;
}
} else {
if (g_flFadeTime < g_flFadeDuration) {
g_flFadeAlpha += (clframetime * (1.0f / g_flFadeDuration)) * g_flFadeMaxAlpha;
if (pSeat->m_flFadeTime < pSeat->m_flFadeDuration) {
pSeat->m_flFadeAlpha += (clframetime * (1.0f / pSeat->m_flFadeDuration)) * pSeat->m_flFadeMaxAlpha;
} else {
g_flFadeAlpha -= (clframetime * (1.0f / g_flFadeHold)) * g_flFadeMaxAlpha;
pSeat->m_flFadeAlpha -= (clframetime * (1.0f / pSeat->m_flFadeHold)) * pSeat->m_flFadeMaxAlpha;
}
}
if (g_flFadeAlpha > 1.0f) {
g_flFadeAlpha = 1.0f;
} else if (g_flFadeAlpha < 0.0f) {
g_flFadeAlpha = 0.0f;
if (pSeat->m_flFadeAlpha > 1.0f) {
pSeat->m_flFadeAlpha = 1.0f;
} else if (pSeat->m_flFadeAlpha < 0.0f) {
pSeat->m_flFadeAlpha = 0.0f;
}
if (g_flFadeAlpha <= 0) {
g_iFadeActive = FALSE;
if (pSeat->m_flFadeAlpha <= 0) {
pSeat->m_iFadeActive = FALSE;
return;
}
if (g_flFadeStyle & EVF_MODULATE) {
drawpic([x, y], "fade_modulate", [w, h], g_vecFadeColor, g_flFadeAlpha, 0);
if (pSeat->m_flFadeStyle & EVF_MODULATE) {
drawpic([x, y], "fade_modulate", [w, h], pSeat->m_vecFadeColor, pSeat->m_flFadeAlpha, 0);
} else {
drawfill([x, y], [w, h], g_vecFadeColor, g_flFadeAlpha, 0);
drawfill([x, y], [w, h], pSeat->m_vecFadeColor, pSeat->m_flFadeAlpha, 0);
}
g_flFadeTime += clframetime;
pSeat->m_flFadeTime += clframetime;
}
void Fade_Parse (void)
void
Fade_Parse (void)
{
g_vecFadeColor[0] = readfloat();
g_vecFadeColor[1] = readfloat();
g_vecFadeColor[2] = readfloat();
g_flFadeMaxAlpha = readfloat();
g_flFadeDuration = readfloat();
g_flFadeHold = readfloat();
g_flFadeStyle = readbyte();
g_flFadeTime = 0.0f;
pSeat->m_vecFadeColor[0] = readfloat();
pSeat->m_vecFadeColor[1] = readfloat();
pSeat->m_vecFadeColor[2] = readfloat();
pSeat->m_flFadeMaxAlpha = readfloat();
pSeat->m_flFadeDuration = readfloat();
pSeat->m_flFadeHold = readfloat();
pSeat->m_flFadeStyle = readbyte();
pSeat->m_flFadeTime = 0.0f;
if (g_flFadeStyle & EVF_FADEDROM) {
g_flFadeAlpha = 1.0f;
if (pSeat->m_flFadeStyle & EVF_FADEDROM) {
pSeat->m_flFadeAlpha = 1.0f;
} else {
g_flFadeAlpha = 0.0f;
pSeat->m_flFadeAlpha = 0.0f;
}
g_iFadeActive = TRUE;
pSeat->m_iFadeActive = TRUE;
}

View File

@ -14,7 +14,8 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void FX_Gunsmoke(vector inworldpos)
void
FX_Gunsmoke(vector inworldpos)
{
}

View File

@ -14,7 +14,7 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
vector vHUDSlotNumPos[8] =
vector g_vecHUDNums[8] =
{
[168 / 255,72 / 128],
[188 / 255,72 / 128],
@ -26,84 +26,90 @@ vector vHUDSlotNumPos[8] =
[208 / 255,92 / 128],
};
void HUD_DrawWeaponSelect_Forward(void)
void
HUD_DrawWeaponSelect_Forward(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
pSeat->fHUDWeaponSelected = pl.activeweapon;
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
pSeat->m_iHUDWeaponSelected = pl.activeweapon;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected--;
if (pSeat->fHUDWeaponSelected <= 0) {
pSeat->fHUDWeaponSelected = g_weapons.length - 1;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected--;
if (pSeat->m_iHUDWeaponSelected <= 0) {
pSeat->m_iHUDWeaponSelected = g_weapons.length - 1;
}
}
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_flHUDWeaponSelectTime = time + 3;
/* compiler bug */
if (pl.g_items & g_weapons[pSeat->fHUDWeaponSelected].id) {
if (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) {
} else {
HUD_DrawWeaponSelect_Forward();
}
}
void HUD_DrawWeaponSelect_Back(void)
void
HUD_DrawWeaponSelect_Back(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
pSeat->fHUDWeaponSelected = pl.activeweapon;
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
pSeat->m_iHUDWeaponSelected = pl.activeweapon;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected++;
if (pSeat->fHUDWeaponSelected >= g_weapons.length) {
pSeat->fHUDWeaponSelected = 1;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected++;
if (pSeat->m_iHUDWeaponSelected >= g_weapons.length) {
pSeat->m_iHUDWeaponSelected = 1;
}
}
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_flHUDWeaponSelectTime = time + 3;
/* compiler bug */
if (pl.g_items & g_weapons[pSeat->fHUDWeaponSelected].id) {
if (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) {
} else {
HUD_DrawWeaponSelect_Back();
}
}
void HUD_DrawWeaponSelect_Trigger(void)
void
HUD_DrawWeaponSelect_Trigger(void)
{
player pl = (player)pSeat->ePlayer;
pl.activeweapon = pSeat->fHUDWeaponSelected;
sendevent("PlayerSwitchWeapon", "f", pSeat->fHUDWeaponSelected);
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_select.wav", 0.5f, ATTN_NONE);
pSeat->fHUDWeaponSelected = pSeat->fHUDWeaponSelectTime = 0;
player pl = (player)pSeat->m_ePlayer;
pl.activeweapon = pSeat->m_iHUDWeaponSelected;
sendevent("PlayerSwitchWeapon", "i", pSeat->m_iHUDWeaponSelected);
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_select.wav", 0.5f, ATTN_NONE);
pSeat->m_iHUDWeaponSelected = pSeat->m_flHUDWeaponSelectTime = 0;
}
void HUD_DrawWeaponSelect_Last(void)
void
HUD_DrawWeaponSelect_Last(void)
{
}
void HUD_DrawWeaponSelect_Num(vector vPos, float fValue)
void
HUD_DrawWeaponSelect_Num(vector vecPos, float fValue)
{
drawsubpic(vPos, [20,20], "sprites/640hud7.spr_0.tga", vHUDSlotNumPos[fValue], [20/255, 20/128], g_hud_color, 1, DRAWFLAG_ADDITIVE);
drawsubpic(vecPos, [20,20], "sprites/640hud7.spr_0.tga", g_vecHUDNums[fValue], [20/255, 20/128], g_hud_color, 1, DRAWFLAG_ADDITIVE);
}
int HUD_InSlotPos(int slot, int pos)
int
HUD_InSlotPos(int slot, int pos)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
for (int i = 1; i < g_weapons.length; i++) {
if (g_weapons[i].slot == slot && g_weapons[i].slot_pos == pos) {
if (pl.g_items & g_weapons[i].id) {
@ -116,10 +122,11 @@ int HUD_InSlotPos(int slot, int pos)
return -1;
}
void HUD_SlotSelect(int slot)
void
HUD_SlotSelect(int slot)
{
player pl = (player)pSeat->ePlayer;
int curslot = g_weapons[pSeat->fHUDWeaponSelected].slot;
player pl = (player)pSeat->m_ePlayer;
int curslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot;
int i;
/* hack to see if we have ANY weapons at all. */
@ -127,47 +134,53 @@ void HUD_SlotSelect(int slot)
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
}
/* weren't in that slot? select the first one then */
if (curslot != slot) {
for (i = 1; i < g_weapons.length; i++) {
if (g_weapons[i].slot == slot && pl.g_items & g_weapons[i].id) {
pSeat->fHUDWeaponSelected = i;
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_iHUDWeaponSelected = i;
pSeat->m_flHUDWeaponSelectTime = time + 3;
break;
}
}
} else {
/* increment our current selected weapon by 1 */
pSeat->fHUDWeaponSelected++;
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_iHUDWeaponSelected++;
pSeat->m_flHUDWeaponSelectTime = time + 3;
/* haven't got it. */
if (!(pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id)) {
HUD_SlotSelect(slot);
}
/* reset when out of bounds or outside slot area */
if (pSeat->fHUDWeaponSelected >= g_weapons.length) {
pSeat->fHUDWeaponSelected = 0;
if (pSeat->m_iHUDWeaponSelected >= g_weapons.length) {
pSeat->m_iHUDWeaponSelected = 0;
HUD_SlotSelect(slot);
} else if (g_weapons[pSeat->fHUDWeaponSelected].slot != slot) {
pSeat->fHUDWeaponSelected = 0;
} else if (g_weapons[pSeat->m_iHUDWeaponSelected].slot != slot) {
pSeat->m_iHUDWeaponSelected = 0;
HUD_SlotSelect(slot);
}
}
}
void HUD_DrawWeaponSelect(void)
void
HUD_DrawWeaponSelect(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
if (pSeat->fHUDWeaponSelected) {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudoff.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected = 0;
if (pSeat->m_flHUDWeaponSelectTime < time) {
if (pSeat->m_iHUDWeaponSelected) {
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudoff.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected = 0;
}
return;
}
@ -175,8 +188,8 @@ void HUD_DrawWeaponSelect(void)
vector vecPos = g_hudmins + [16,16];
int b;
int wantslot = g_weapons[pSeat->fHUDWeaponSelected].slot;
int wantpos = g_weapons[pSeat->fHUDWeaponSelected].slot_pos;
int wantslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot;
int wantpos = g_weapons[pSeat->m_iHUDWeaponSelected].slot_pos;
for (int i = 0; i < 7; i++) {
int slot_selected = 0;
vecPos[1] = g_hudmins[1] + 16;
@ -187,7 +200,7 @@ void HUD_DrawWeaponSelect(void)
slot_selected = TRUE;
if (x == wantpos) {
// Selected Sprite
Weapons_HUDPic(pSeat->fHUDWeaponSelected, 1, vecPos, 1.0f);
Weapons_HUDPic(pSeat->m_iHUDWeaponSelected, 1, vecPos, 1.0f);
drawsubpic(vecPos, [170,45], "sprites/640hud3.spr_0.tga",
[0,180/256], [170/256,45/256],
g_hud_color, 1, DRAWFLAG_ADDITIVE);

View File

@ -24,7 +24,8 @@ Client_Init
Comparable to worldspawn in SSQC in that it's mostly used for precaches
=================
*/
void Client_Init(float apilevel, string enginename, float engineversion)
void
Client_Init(float apilevel, string enginename, float engineversion)
{
precache_model("sprites/640hud1.spr");
precache_model("sprites/640hud2.spr");
@ -45,11 +46,13 @@ void Client_Init(float apilevel, string enginename, float engineversion)
BEAM_TRIPMINE = particleeffectnum("beam_tripmine");
}
void Client_InitDone(void)
void
Client_InitDone(void)
{
}
void Game_RendererRestarted(string rstr)
void
Game_RendererRestarted(string rstr)
{
}

View File

@ -2,6 +2,7 @@
#pragma progs_dat "../../../gearbox/data.pk3dir/csprogs.dat"
#define CSQC
#define CLIENT
#define VALVE
#define GEARBOX
@ -24,6 +25,8 @@
../sentences.c
../../gs-entbase/client.src
../../gs-entbase/shared.src
../sky.c
../sound.c
../music.c
@ -36,9 +39,7 @@
../../shared/pmove.c
../valve/predict.c
../predict.c
../../shared/decals.c
../../shared/effects.c
../../shared/spraylogo.cpp
../npc.c
init.c
../../shared/gearbox/items.h
@ -73,7 +74,6 @@ init.c
../valve/player.c
../valve/entities.c
../entities.c
../fx_lensflare.c
../fx_gunsmoke.c
../valve/cmds.c
../valve/game_event.c
@ -83,6 +83,7 @@ init.c
../damage.c
../obituary.c
../chat.c
../textmenu.c
../vgui.cpp
../valve/hud.c
hud_weaponselect.c

View File

@ -24,7 +24,8 @@ Client_Init
Comparable to worldspawn in SSQC in that it's mostly used for precaches
=================
*/
void Client_Init(float apilevel, string enginename, float engineversion)
void
Client_Init(float apilevel, string enginename, float engineversion)
{
precache_model("sprites/640hud1.spr");
precache_model("sprites/640hud2.spr");
@ -44,11 +45,13 @@ void Client_Init(float apilevel, string enginename, float engineversion)
BEAM_TRIPMINE = particleeffectnum("beam_tripmine");
}
void Client_InitDone(void)
void
Client_InitDone(void)
{
}
void Game_RendererRestarted(string rstr)
void
Game_RendererRestarted(string rstr)
{
}

View File

@ -2,6 +2,7 @@
#pragma progs_dat "../../../hunger/data.pk3dir/csprogs.dat"
#define CSQC
#define CLIENT
#define VALVE
#define HUNGER
@ -24,6 +25,8 @@
../sentences.c
../../gs-entbase/client.src
../../gs-entbase/shared.src
../sky.c
../sound.c
../music.c
@ -36,9 +39,7 @@
../../shared/pmove.c
../valve/predict.c
../predict.c
../../shared/decals.c
../../shared/effects.c
../../shared/spraylogo.cpp
../npc.c
init.c
../../shared/hunger/items.h
@ -73,7 +74,6 @@ init.c
../valve/player.c
../valve/entities.c
../entities.c
../fx_lensflare.c
../fx_gunsmoke.c
../valve/cmds.c
../valve/game_event.c
@ -83,6 +83,7 @@ init.c
../damage.c
../obituary.c
../chat.c
../textmenu.c
../vgui.cpp
../valve/hud.c
../valve/hud_weaponselect.c

View File

@ -17,7 +17,8 @@
#define OBITUARY_LINES 4
#define OBITUARY_TIME 5
typedef struct {
typedef struct
{
string attacker;
string victim;

View File

@ -23,7 +23,8 @@
//.float basesubblendfrac; // legs part.
.float subblend2frac; // Up/Down
void player::gun_offset(void)
void
player::gun_offset(void)
{
vector v1, v2;
/* Set it to something consistent */
@ -50,7 +51,8 @@ void player::gun_offset(void)
string Weapons_GetPlayermodel(int);
void player::draw(void)
void
player::draw(void)
{
if (!this.p_model) {
this.p_model = spawn();
@ -111,7 +113,8 @@ void player::draw(void)
var float autocvar_standheight = 0;
var float autocvar_crouchheight = 0;
float player::predraw(void)
float
player::predraw(void)
{
/* Handle the flashlights... */
if (flags & FL_FLASHLIGHT) {
@ -141,6 +144,7 @@ float player::predraw(void)
/* Run animations regardless of rendering the player */
draw();
gun_offset();
effects &= ~EF_NOSHADOW;
if (autocvar_cl_thirdperson == TRUE || this.entnum != player_localentnum) {
Voice_Draw3D(this);
@ -153,6 +157,7 @@ float player::predraw(void)
return PREDRAW_NEXT;
}
void player::postdraw(void)
void
player::postdraw(void)
{
}

View File

@ -24,7 +24,8 @@ Client_Init
Comparable to worldspawn in SSQC in that it's mostly used for precaches
=================
*/
void Client_Init(float apilevel, string enginename, float engineversion)
void
Client_Init(float apilevel, string enginename, float engineversion)
{
precache_model("sprites/640hud1.spr");
precache_model("sprites/640hud2.spr");
@ -39,11 +40,13 @@ void Client_Init(float apilevel, string enginename, float engineversion)
BEAM_TRIPMINE = particleeffectnum("beam_tripmine");
}
void Client_InitDone(void)
void
Client_InitDone(void)
{
}
void Game_RendererRestarted(string rstr)
void
Game_RendererRestarted(string rstr)
{
}

View File

@ -2,6 +2,7 @@
#pragma progs_dat "../../../poke646/data.pk3dir/csprogs.dat"
#define CSQC
#define CLIENT
#define VALVE
#define POKE646
@ -24,6 +25,7 @@
../sentences.c
../../gs-entbase/client.src
../../gs-entbase/shared.src
../sky.c
../sound.c
@ -37,9 +39,7 @@
../../shared/pmove.c
../valve/predict.c
../predict.c
../../shared/decals.c
../../shared/effects.c
../../shared/spraylogo.cpp
../npc.c
init.c
../../shared/poke646/items.h
@ -58,7 +58,6 @@ init.c
../valve/player.c
entities.c
../entities.c
../fx_lensflare.c
../fx_gunsmoke.c
../valve/cmds.c
../valve/game_event.c
@ -68,6 +67,7 @@ entities.c
../damage.c
../obituary.c
../chat.c
../textmenu.c
../vgui.cpp
../valve/hud.h
../valve/hud.c

View File

@ -23,7 +23,8 @@ Propagate our pmove state to whatever the current frame before its stomped on
(so any non-networked state updates locally).
=================
*/
void Predict_PreFrame(player pl)
void
Predict_PreFrame(player pl)
{
pl.net_origin = pl.origin;
pl.net_velocity = pl.velocity;
@ -46,8 +47,8 @@ void Predict_PreFrame(player pl)
//we want to predict an exact copy of the data in the new packet
/*for (; self.pmove_frame <= servercommandframe; self.pmove_frame++) {
float flSuccess = getinputstate(self.pmove_frame);*/
for ( int i = pl.sequence + 1; i <= clientcommandframe; i++ ) {
float flSuccess = getinputstate( i );
for (int i = pl.sequence + 1; i <= clientcommandframe; i++) {
float flSuccess = getinputstate(i);
if (flSuccess == FALSE) {
continue;
}
@ -74,7 +75,8 @@ Rewind our pmove state back to before we started predicting.
(to give consistent state instead of accumulating errors)
=================
*/
void Predict_PostFrame(player pl)
void
Predict_PostFrame(player pl)
{
pl.origin = pl.net_origin;
pl.velocity = pl.net_velocity;

View File

@ -14,60 +14,51 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
float g_printtime;
string g_printbuffer[5];
var int g_printlines = -1;
void
Print_Draw(void)
{
vector pos = video_mins + [16, 16];
vector pos = g_hudmins + [16, 16];
if (g_printlines < 0) {
if (pSeat->m_iPrintLines < 0) {
return;
}
if (g_printtime < time) {
g_printbuffer[g_printlines] = __NULL__;
g_printlines--;
g_printtime = time + 5;
if (pSeat->m_flPrintTime < time) {
pSeat->m_strPrintBuffer[pSeat->m_iPrintLines] = __NULL__;
pSeat->m_iPrintLines--;
pSeat->m_flPrintTime = time + 5;
}
for (int i = 0; i < 5; i++) {
drawstring(pos, g_printbuffer[i], [12,12], [1,1,1], 1.0f, 0);
drawstring(pos, pSeat->m_strPrintBuffer[i], [12,12], [1,1,1], 1.0f, 0);
pos[1] += 14;
}
}
float fCenterPrintAlpha;
float fCenterPrintTime;
float fCenterPrintLines;
string sCenterPrintBuffer[18];
void
CSQC_DrawCenterprint(void)
Print_DrawCenterprint(void)
{
if (fCenterPrintAlpha <= 0) {
vector vecPos;
if (pSeat->m_flCenterprintAlpha <= 0) {
return;
}
vector vCenterPrintPos;
if (fCenterPrintTime > time) {
fCenterPrintAlpha = 1;
if (pSeat->m_flCenterprintTime > time) {
pSeat->m_flCenterprintAlpha = 1;
} else {
fCenterPrintAlpha -= frametime;
pSeat->m_flCenterprintAlpha -= clframetime;
if (fCenterPrintAlpha < 0) {
fCenterPrintAlpha = 0;
if (pSeat->m_flCenterprintAlpha < 0) {
pSeat->m_flCenterprintAlpha = 0;
}
}
vCenterPrintPos[1] = video_mins[1] + (video_res[1] / 2) - (fCenterPrintLines - 4) - 69;
vecPos[1] = g_hudmins[1] + (g_hudres[1] / 2) - (pSeat->m_iCenterprintLines - 4) - 69;
for (int i = 0; i < (fCenterPrintLines); i++) {
vCenterPrintPos[0] = video_mins[0] + (video_res[0] / 2) - (stringwidth(sCenterPrintBuffer[i], TRUE, '12 12') / 2);
drawstring(vCenterPrintPos, sCenterPrintBuffer[i], '12 12', '1 1 1', fCenterPrintAlpha, 0);
vCenterPrintPos[1] += 8;
for (int i = 0; i < (pSeat->m_iCenterprintLines); i++) {
vecPos[0] = g_hudmins[0] + (g_hudres[0] / 2) - (stringwidth(pSeat->m_strCenterprintBuffer[i], TRUE, '12 12') / 2);
drawstring(vecPos, pSeat->m_strCenterprintBuffer[i], '12 12', '1 1 1', pSeat->m_flCenterprintAlpha, 0);
vecPos[1] += 8;
}
}

View File

@ -43,7 +43,7 @@ void CBaseDecor::SpawnKey(string strField, string strKey)
/* Let's begin */
class decore_asteroid:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/asteroid.mdl";
CBaseDecor::Initialized();
};
@ -51,7 +51,7 @@ class decore_asteroid:CBaseDecor
class decore_baboon:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/baboon.mdl";
CBaseDecor::Initialized();
};
@ -59,7 +59,7 @@ class decore_baboon:CBaseDecor
class decore_bodygib:CBaseDecor
{
void() decore_bodygib = {
void(void) decore_bodygib = {
model = "models/bodygib.mdl";
CBaseDecor::Initialized();
};
@ -67,7 +67,7 @@ class decore_bodygib:CBaseDecor
class decore_butterflyflock:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/butterfly.mdl";
CBaseDecor::Initialized();
};
@ -75,7 +75,7 @@ class decore_butterflyflock:CBaseDecor
class decore_explodable:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/EXPLODABLE!!!!";
CBaseDecor::Initialized();
};
@ -83,7 +83,7 @@ class decore_explodable:CBaseDecor
class decore_foot:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/FOOT!!!!";
CBaseDecor::Initialized();
};
@ -91,7 +91,7 @@ class decore_foot:CBaseDecor
class decore_goldskull:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/goldskull.mdl";
CBaseDecor::Initialized();
};
@ -99,7 +99,7 @@ class decore_goldskull:CBaseDecor
class decore_hatgib:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/hatgib.mdl";
CBaseDecor::Initialized();
};
@ -107,7 +107,7 @@ class decore_hatgib:CBaseDecor
class decore_nest:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/ornest.mdl";
CBaseDecor::Initialized();
};
@ -115,7 +115,7 @@ class decore_nest:CBaseDecor
class decore_pteradon:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/pteradon2.mdl";
CBaseDecor::Initialized();
};
@ -123,7 +123,7 @@ class decore_pteradon:CBaseDecor
class decore_torch:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
precache_model("sprites/torch.spr");
model = "models/torch.mdl";
CBaseDecor::Initialized();
@ -143,7 +143,7 @@ class decore_torch:CBaseDecor
class decore_spacedebris:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
CBaseDecor::Initialized();
};
@ -161,7 +161,7 @@ class decore_spacedebris:CBaseDecor
class decore_swampplants:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/swampstuff.mdl";
CBaseDecor::Initialized();
};
@ -169,7 +169,7 @@ class decore_swampplants:CBaseDecor
class decore_mushroom:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/mushroom.mdl";
CBaseDecor::Initialized();
};
@ -177,7 +177,7 @@ class decore_mushroom:CBaseDecor
class decore_mushroom2:CBaseDecor
{
virtual void() Initialized = {
virtual void(void) Initialized = {
model = "models/mushroom2.mdl";
CBaseDecor::Initialized();
};

View File

@ -56,9 +56,9 @@ HUD_DrawNumber
Draws a normal number
=================
*/
void HUD_DrawNumber(int iNumber, vector vPos, float fAlpha, vector vColor)
void HUD_DrawNumber(int iNumber, vector vecPos, float fAlpha, vector vColor)
{
drawsubpic(vPos, [18,32], GM_NUMS, [spr_hudnum[iNumber], 0],
drawsubpic(vecPos, [18,32], GM_NUMS, [spr_hudnum[iNumber], 0],
[NUMSIZE_X, NUMSIZE_Y], vColor, fAlpha, DRAWFLAG_ADDITIVE);
}
@ -75,17 +75,17 @@ HUD_DrawNums
Draws numerals quickly for health, armor etc.
=================
*/
void HUD_DrawNums(float fNumber, vector vPos, float fAlpha, vector vColor)
void HUD_DrawNums(float fNumber, vector vecPos, float fAlpha, vector vColor)
{
int iNumber = fNumber;
if (iNumber > 0) {
while (iNumber > 0) {
HUD_DrawNumber((float)iNumber % 10, vPos, fAlpha, vColor);
HUD_DrawNumber((float)iNumber % 10, vecPos, fAlpha, vColor);
iNumber = iNumber / 10;
vPos[0] -= 20;
vecPos[0] -= 20;
}
} else {
HUD_DrawNumber(0, vPos, fAlpha, vColor);
HUD_DrawNumber(0, vecPos, fAlpha, vColor);
}
}
@ -102,7 +102,7 @@ void HUD_DrawHealth(void)
vector hcol;
player pl;
pl = (player)pSeat->ePlayer;
pl = (player)pSeat->m_ePlayer;
/* Shift digits by 128 units for the larger HUD */
if (g_hudres[0] <= 640) {
@ -171,27 +171,27 @@ void HUD_DrawHealth(void)
void HUD_DrawAmmo1(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
vector pos;
static int old_ammo1;
static float ammo1_alpha;
static float m_flAmmo1Alpha;
if (pl.a_ammo1 != old_ammo1) {
ammo1_alpha = 1.0;
m_flAmmo1Alpha = 1.0;
old_ammo1 = pl.a_ammo1;
}
if (ammo1_alpha >= HUD_ALPHA) {
ammo1_alpha -= frametime * 0.5;
if (m_flAmmo1Alpha >= HUD_ALPHA) {
m_flAmmo1Alpha -= clframetime * 0.5;
} else {
ammo1_alpha = HUD_ALPHA;
m_flAmmo1Alpha = HUD_ALPHA;
}
pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42];
/* Magazine/Clip */
if (pl.a_ammo1 != -1) {
HUD_DrawNums(pl.a_ammo1, pos + [-80,0], ammo1_alpha, g_hud_color);
HUD_DrawNums(pl.a_ammo1, pos + [-80,0], m_flAmmo1Alpha, g_hud_color);
}
HUD_DrawSeperator(pos + [-50,0]);
@ -199,53 +199,53 @@ void HUD_DrawAmmo1(void)
void HUD_DrawAmmo2(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
vector pos;
static int old_ammo2;
static float ammo2_alpha;
static float m_flAmmo2Alpha;
if (pl.a_ammo2 != old_ammo2) {
ammo2_alpha = 1.0;
m_flAmmo2Alpha = 1.0;
old_ammo2 = pl.a_ammo2;
}
if (ammo2_alpha >= HUD_ALPHA) {
ammo2_alpha -= frametime * 0.5;
if (m_flAmmo2Alpha >= HUD_ALPHA) {
m_flAmmo2Alpha -= clframetime * 0.5;
} else {
ammo2_alpha = HUD_ALPHA;
m_flAmmo2Alpha = HUD_ALPHA;
}
pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42];
/* Leftover Ammo */
HUD_DrawNums(pl.a_ammo2, pos, ammo2_alpha, g_hud_color);
HUD_DrawNums(pl.a_ammo2, pos, m_flAmmo2Alpha, g_hud_color);
}
void HUD_DrawAmmo3(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
vector pos;
static int old_ammo3;
static float ammo3_alpha;
static float m_flAmmo3Alpha;
if (pl.a_ammo3 != old_ammo3) {
ammo3_alpha = 1.0;
m_flAmmo3Alpha = 1.0;
old_ammo3 = pl.a_ammo3;
}
if (ammo3_alpha >= HUD_ALPHA) {
ammo3_alpha -= frametime * 0.5;
if (m_flAmmo3Alpha >= HUD_ALPHA) {
m_flAmmo3Alpha -= clframetime * 0.5;
} else {
ammo3_alpha = HUD_ALPHA;
m_flAmmo3Alpha = HUD_ALPHA;
}
pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42];
/* Special */
if (pl.a_ammo3) {
HUD_DrawNums(pl.a_ammo3, pos + [0, -32], ammo3_alpha, g_hud_color);
HUD_DrawNums(pl.a_ammo3, pos + [0, -32], m_flAmmo3Alpha, g_hud_color);
}
}
@ -265,7 +265,7 @@ void HUD_Draw(void)
HUD_DrawWeaponSelect();
}
void VGUI_DrawSpectatorHUD(void)
void HUD_DrawSpectator(void)
{
// FIXME
}

View File

@ -14,7 +14,7 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
vector vHUDSlotNumPos[6] =
vector g_vecHUDNums[6] =
{
[168 / 256, 72 / 128],
[188 / 256, 72 / 128],
@ -26,7 +26,7 @@ vector vHUDSlotNumPos[6] =
void HUD_DrawWeaponSelect_Forward(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
@ -36,27 +36,27 @@ void HUD_DrawWeaponSelect_Forward(void)
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
pSeat->fHUDWeaponSelected = pl.activeweapon;
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
pSeat->m_iHUDWeaponSelected = pl.activeweapon;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected--;
if (pSeat->fHUDWeaponSelected <= 0) {
pSeat->fHUDWeaponSelected = g_weapons.length - 1;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected--;
if (pSeat->m_iHUDWeaponSelected <= 0) {
pSeat->m_iHUDWeaponSelected = g_weapons.length - 1;
}
}
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_flHUDWeaponSelectTime = time + 3;
if not (pl.g_items & g_weapons[pSeat->fHUDWeaponSelected].id) {
if not (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) {
HUD_DrawWeaponSelect_Forward();
}
}
void HUD_DrawWeaponSelect_Back(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
@ -66,31 +66,31 @@ void HUD_DrawWeaponSelect_Back(void)
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
pSeat->fHUDWeaponSelected = pl.activeweapon;
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
pSeat->m_iHUDWeaponSelected = pl.activeweapon;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected++;
if (pSeat->fHUDWeaponSelected >= g_weapons.length) {
pSeat->fHUDWeaponSelected = 1;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected++;
if (pSeat->m_iHUDWeaponSelected >= g_weapons.length) {
pSeat->m_iHUDWeaponSelected = 1;
}
}
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_flHUDWeaponSelectTime = time + 3;
if not (pl.g_items & g_weapons[pSeat->fHUDWeaponSelected].id) {
if not (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) {
HUD_DrawWeaponSelect_Back();
}
}
void HUD_DrawWeaponSelect_Trigger(void)
{
player pl = (player)pSeat->ePlayer;
pl.activeweapon = pSeat->fHUDWeaponSelected;
sendevent("PlayerSwitchWeapon", "f", pSeat->fHUDWeaponSelected);
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_select.wav", 0.5f, ATTN_NONE);
pSeat->fHUDWeaponSelected = pSeat->fHUDWeaponSelectTime = 0;
player pl = (player)pSeat->m_ePlayer;
pl.activeweapon = pSeat->m_iHUDWeaponSelected;
sendevent("PlayerSwitchWeapon", "i", pSeat->m_iHUDWeaponSelected);
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_select.wav", 0.5f, ATTN_NONE);
pSeat->m_iHUDWeaponSelected = pSeat->m_flHUDWeaponSelectTime = 0;
}
void HUD_DrawWeaponSelect_Last(void)
@ -98,14 +98,14 @@ void HUD_DrawWeaponSelect_Last(void)
}
void HUD_DrawWeaponSelect_Num(vector vPos, float fValue)
void HUD_DrawWeaponSelect_Num(vector vecPos, float fValue)
{
drawsubpic(vPos, [20,20], "sprites/640hud7.spr_0.tga", vHUDSlotNumPos[fValue], [20/256, 20/128], g_hud_color, 1, DRAWFLAG_ADDITIVE);
drawsubpic(vecPos, [20,20], "sprites/640hud7.spr_0.tga", g_vecHUDNums[fValue], [20/256, 20/128], g_hud_color, 1, DRAWFLAG_ADDITIVE);
}
int HUD_InSlotPos(int slot, int pos)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
for (int i = 1; i < g_weapons.length; i++) {
if (g_weapons[i].slot == slot && g_weapons[i].slot_pos == pos) {
if (pl.g_items & g_weapons[i].id) {
@ -120,8 +120,8 @@ int HUD_InSlotPos(int slot, int pos)
void HUD_SlotSelect(int slot)
{
player pl = (player)pSeat->ePlayer;
int curslot = g_weapons[pSeat->fHUDWeaponSelected].slot;
player pl = (player)pSeat->m_ePlayer;
int curslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot;
int i;
/* hack to see if we have ANY weapons at all. */
@ -129,32 +129,37 @@ void HUD_SlotSelect(int slot)
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
}
/* weren't in that slot? select the first one then */
if (curslot != slot) {
for (i = 1; i < g_weapons.length; i++) {
if (g_weapons[i].slot == slot && pl.g_items & g_weapons[i].id) {
pSeat->fHUDWeaponSelected = i;
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_iHUDWeaponSelected = i;
pSeat->m_flHUDWeaponSelectTime = time + 3;
break;
}
}
} else {
/* increment our current selected weapon by 1 */
pSeat->fHUDWeaponSelected++;
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_iHUDWeaponSelected++;
pSeat->m_flHUDWeaponSelectTime = time + 3;
/* haven't got it. */
if (!(pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id)) {
HUD_SlotSelect(slot);
}
/* reset when out of bounds or outside slot area */
if (pSeat->fHUDWeaponSelected >= g_weapons.length) {
pSeat->fHUDWeaponSelected = 0;
if (pSeat->m_iHUDWeaponSelected >= g_weapons.length) {
pSeat->m_iHUDWeaponSelected = 0;
HUD_SlotSelect(slot);
} else if (g_weapons[pSeat->fHUDWeaponSelected].slot != slot) {
pSeat->fHUDWeaponSelected = 0;
} else if (g_weapons[pSeat->m_iHUDWeaponSelected].slot != slot) {
pSeat->m_iHUDWeaponSelected = 0;
HUD_SlotSelect(slot);
}
}
@ -162,14 +167,14 @@ void HUD_SlotSelect(int slot)
void HUD_DrawWeaponSelect(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
if (pSeat->fHUDWeaponSelected) {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudoff.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected = 0;
if (pSeat->m_flHUDWeaponSelectTime < time) {
if (pSeat->m_iHUDWeaponSelected) {
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudoff.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected = 0;
}
return;
}
@ -177,8 +182,8 @@ void HUD_DrawWeaponSelect(void)
vector vecPos = g_hudmins + [16,16];
int b;
int wantslot = g_weapons[pSeat->fHUDWeaponSelected].slot;
int wantpos = g_weapons[pSeat->fHUDWeaponSelected].slot_pos;
int wantslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot;
int wantpos = g_weapons[pSeat->m_iHUDWeaponSelected].slot_pos;
for (int i = 0; i < 5; i++) {
int slot_selected = 0;
vecPos[1] = g_hudmins[1] + 16;
@ -189,7 +194,7 @@ void HUD_DrawWeaponSelect(void)
slot_selected = TRUE;
if (x == wantpos) {
// Selected Sprite
Weapons_HUDPic(pSeat->fHUDWeaponSelected, 1, vecPos, 1.0f);
Weapons_HUDPic(pSeat->m_iHUDWeaponSelected, 1, vecPos, 1.0f);
drawsubpic(vecPos, [170,45], "sprites/640hud3.spr_0.tga",
[0,180/256], [170/256,45/256], g_hud_color, 1, DRAWFLAG_ADDITIVE);
vecPos[1] += 50;

View File

@ -2,6 +2,7 @@
#pragma progs_dat "../../../rewolf/data.pk3dir/csprogs.dat"
#define CSQC
#define CLIENT
#define VALVE
#define REWOLF
@ -28,6 +29,7 @@ init.c
../sentences.c
../../gs-entbase/client.src
../../gs-entbase/shared.src
decore.cpp
@ -44,9 +46,7 @@ decore.cpp
../../shared/pmove.c
../valve/predict.c
../predict.c
../../shared/decals.c
../../shared/effects.c
../../shared/spraylogo.cpp
../npc.c
../../shared/rewolf/items.h
@ -67,7 +67,6 @@ decore.cpp
../valve/player.c
entities.c
../entities.c
../fx_lensflare.c
../fx_gunsmoke.c
../valve/cmds.c
@ -78,6 +77,7 @@ entities.c
../damage.c
../obituary.c
../chat.c
../textmenu.c
../vgui.cpp
hud.c

View File

@ -2,6 +2,7 @@
#pragma progs_dat "../../../scihunt/data.pk3dir/csprogs.dat"
#define CSQC
#define CLIENT
#define VALVE
#includelist
@ -26,6 +27,7 @@
../sentences.c
../../gs-entbase/client.src
../../gs-entbase/shared.src
../sky.c
../music.c
@ -40,9 +42,7 @@
../../shared/pmove.c
../valve/predict.c
../predict.c
../../shared/decals.c
../../shared/effects.c
../../shared/spraylogo.cpp
../npc.c
init.c
@ -72,7 +72,6 @@ init.c
../valve/player.c
../valve/entities.c
../entities.c
../fx_lensflare.c
../fx_gunsmoke.c
../valve/cmds.c
@ -83,6 +82,7 @@ init.c
../damage.c
../obituary.c
../chat.c
../textmenu.c
../vgui.cpp
../valve/hud.c

View File

@ -14,7 +14,8 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void Sky_Update(void)
void
Sky_Update(void)
{
if (serverkeyfloat("*bspversion") != 30) {
return;

View File

@ -25,7 +25,8 @@ class CCSAmbientSound {
string m_strSample;
};
void Sound_ParseLoopingEntity(entity sndent, float isNew)
void
Sound_ParseLoopingEntity(entity sndent, float isNew)
{
float flFlags;
CCSAmbientSound new = (CCSAmbientSound)sndent;
@ -40,7 +41,7 @@ void Sound_ParseLoopingEntity(entity sndent, float isNew)
new.origin[0] = readcoord();
new.origin[1] = readcoord();
new.origin[2] = readcoord();
setorigin( new, new.origin );
setorigin(new, new.origin);
new.m_flVolume = readfloat();
new.m_flAttn = readbyte();
new.m_flPitch = readfloat();
@ -54,7 +55,8 @@ void Sound_ParseLoopingEntity(entity sndent, float isNew)
sound_t *g_voxque;
void Sound_PlayVOX(string msg)
void
Sound_PlayVOX(string msg)
{
if (g_voxcount) {
return;
@ -70,7 +72,8 @@ void Sound_PlayVOX(string msg)
g_voxtime = time;
}
void Sound_ProcessWordQue(void)
void
Sound_ProcessWordQue(void)
{
if (cltime < 2 || !g_voxcount) {
return;
@ -90,7 +93,8 @@ void Sound_ProcessWordQue(void)
}
}
void Sound_InitVOX(void)
void
Sound_InitVOX(void)
{
precache_sound("vox/accelerating.wav");
precache_sound("vox/accelerator.wav");

View File

@ -31,7 +31,8 @@ typedef struct
gametext_t g_textchannels[5];
/* for effect 2 */
int GameText_CharCount(float fadein, float timer, string msg)
int
GameText_CharCount(float fadein, float timer, string msg)
{
float len = (timer / fadein);
@ -141,7 +142,7 @@ void
GameText_Parse(void)
{
int chan = readbyte();
g_textchannels[chan].m_strMessage = readstring();
g_textchannels[chan].m_strMessage = Titles_ParseFunString(readstring());
g_textchannels[chan].m_flPosX = readfloat();
g_textchannels[chan].m_flPosY = readfloat();
g_textchannels[chan].m_iEffect = readbyte();
@ -170,7 +171,7 @@ GameMessage_Setup(string message)
}
if (findid < 0) {
g_textchannels[0].m_strMessage = message;
g_textchannels[0].m_strMessage = Titles_ParseFunString(message);
g_textchannels[0].m_flTime = 0.0f;
g_textchannels[0].m_flPosX = -1;
g_textchannels[0].m_flPosY = 0.75f;

63
src/client/textmenu.c Normal file
View File

@ -0,0 +1,63 @@
/*
* Copyright (c) 2016-2020 Marco Hladik <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/* Old style Counter-Strike/TFC menus */
var string g_textmenu = "";
var float g_textmenucheck = 0.0f;
void
Textmenu_Call(string menu)
{
g_textmenu = menu;
g_textchannels[0].m_flTime = 0.0f;
g_textmenucheck = 0.0f;
}
void
Textmenu_Draw(void)
{
if (g_textmenucheck > cltime) {
return;
}
if (g_textmenu) {
GameMessage_Setup(g_textmenu);
g_textchannels[0].m_flTime = 0.0f;
g_textchannels[0].m_flPosX = 0.1;
g_textchannels[0].m_flPosY = -1;
g_textchannels[0].m_flFadeIn =
g_textchannels[0].m_flFadeOut = 0.0f;
g_textchannels[0].m_flHoldTime = 0.5;
g_textchannels[0].m_vecColor1 = [1,1,1];
g_textchannels[0].m_vecColor2 = [0,0,0];
g_textchannels[0].m_iEffect = 0;
g_textmenucheck = cltime + 0.5;
}
}
void
Textmenu_Input(int nr)
{
void(int) vFunc = externvalue(-1, g_textmenu);
if (vFunc) {
vFunc(nr+1);
return;
}
print(sprintf("Warning! %s not implemented!\n", g_textmenu));
}

View File

@ -24,7 +24,8 @@ Client_Init
Comparable to worldspawn in SSQC in that it's mostly used for precaches
=================
*/
void Client_Init(float apilevel, string enginename, float engineversion)
void
Client_Init(float apilevel, string enginename, float engineversion)
{
precache_model("sprites/640hud1.spr");
precache_model("sprites/640hud2.spr");
@ -49,12 +50,14 @@ void Client_Init(float apilevel, string enginename, float engineversion)
BEAM_TRIPMINE = particleeffectnum("beam_tripmine");
}
void Client_InitDone(void)
void
Client_InitDone(void)
{
VGUI_ChooseTeam();
}
void Game_RendererRestarted(string rstr)
void
Game_RendererRestarted(string rstr)
{
}

View File

@ -2,6 +2,7 @@
#pragma progs_dat "../../../tfc/data.pk3dir/csprogs.dat"
#define CSQC
#define CLIENT
#define VALVE
#includelist
@ -29,6 +30,7 @@ init.c
../sentences.c
../../gs-entbase/client.src
../../gs-entbase/shared.src
../sky.c
../music.c
@ -43,9 +45,7 @@ init.c
../../shared/pmove.c
../valve/predict.c
../predict.c
../../shared/decals.c
../../shared/effects.c
../../shared/spraylogo.cpp
../npc.c
../../shared/tfc/items.h
@ -77,7 +77,6 @@ init.c
../valve/player.c
entities.c
../entities.c
../fx_lensflare.c
../fx_gunsmoke.c
../valve/cmds.c
@ -88,6 +87,7 @@ entities.c
../damage.c
../obituary.c
../chat.c
../textmenu.c
../valve/hud.c
../valve/hud_weaponselect.c

View File

@ -18,17 +18,20 @@ static CUIWindow winChooseTeam;
static CUIWindow winCTTeam;
static CUIWindow winTTeam;
typedef struct {
typedef struct
{
string str;
void() ptr;
void(void) ptr;
} btnarr_t;
void VGUI_TeamJoin(float i)
void
VGUI_TeamJoin(float i)
{
sendevent("TeamJoin", "f", i);
}
void VGUI_TeamBack(void)
void
VGUI_TeamBack(void)
{
}
@ -108,104 +111,107 @@ VGUI_GoSpectator(void)
winChooseTeam.Hide();
}
void VGUI_ChooseTeam_Red(void)
void
VGUI_ChooseTeam_Red(void)
{
static int initialized;
static CUIButton *btns;
if ( !initialized ) {
if (!initialized) {
vector btnpos = [16,0];
initialized = TRUE;
winCTTeam = spawn( CUIWindow );
winCTTeam.SetTitle( "Choose Skin" );
winCTTeam.SetSize( [420,320] );
g_uiDesktop.Add( winCTTeam );
winCTTeam = spawn(CUIWindow);
winCTTeam.SetTitle("Choose Skin");
winCTTeam.SetSize([420,320]);
g_uiDesktop.Add(winCTTeam);
btns = memalloc(sizeof(btnarr_t) * red_team.length);
for (int i = 0; i < red_team.length; i++) {
btnpos[1] += 30;
if ( red_team[i].ptr == __NULL__ ) {
if (red_team[i].ptr == __NULL__) {
continue;
}
btns[i] = spawn( CUIButton );
btns[i].SetTitle( red_team[i].str );
btns[i].SetPos( btnpos );
btns[i].SetFunc( red_team[i].ptr );
winCTTeam.Add( btns[i] );
btns[i] = spawn(CUIButton);
btns[i].SetTitle(red_team[i].str);
btns[i].SetPos(btnpos);
btns[i].SetFunc(red_team[i].ptr);
winCTTeam.Add(btns[i]);
}
}
winChooseTeam.Hide();
winCTTeam.Show();
winCTTeam.SetPos( ( video_res / 2 ) - ( winCTTeam.GetSize() / 2 ) );
winCTTeam.SetPos((video_res / 2) - (winCTTeam.GetSize() / 2));
}
void VGUI_ChooseTeam_Blue(void)
void
VGUI_ChooseTeam_Blue(void)
{
static int initialized;
static CUIButton *btns;
if ( !initialized ) {
if (!initialized) {
vector btnpos = [16,0];
initialized = TRUE;
winTTeam = spawn( CUIWindow );
winTTeam.SetTitle( "Choose Skin" );
winTTeam.SetSize( [420,320] );
g_uiDesktop.Add( winTTeam );
winTTeam = spawn(CUIWindow);
winTTeam.SetTitle("Choose Skin");
winTTeam.SetSize([420,320]);
g_uiDesktop.Add(winTTeam);
btns = memalloc(sizeof(btnarr_t) * blue_team.length);
for (int i = 0; i < blue_team.length; i++) {
btnpos[1] += 30;
if ( blue_team[i].ptr == __NULL__ ) {
if (blue_team[i].ptr == __NULL__) {
continue;
}
btns[i] = spawn( CUIButton );
btns[i].SetTitle( blue_team[i].str );
btns[i].SetPos( btnpos );
btns[i].SetFunc( blue_team[i].ptr );
winTTeam.Add( btns[i] );
btns[i] = spawn(CUIButton);
btns[i].SetTitle(blue_team[i].str);
btns[i].SetPos(btnpos);
btns[i].SetFunc(blue_team[i].ptr);
winTTeam.Add(btns[i]);
}
}
winChooseTeam.Hide();
winTTeam.Show();
winTTeam.SetPos( ( video_res / 2 ) - ( winTTeam.GetSize() / 2 ) );
winTTeam.SetPos((video_res / 2) - (winTTeam.GetSize() / 2));
}
void VGUI_ChooseTeam(void)
void
VGUI_ChooseTeam(void)
{
static int initialized;
static CUIButton btnGoRed;
static CUIButton btnGoBlue;
static CUIButton btnGoSpectator;
if ( !initialized ) {
if (!initialized) {
initialized = TRUE;
winChooseTeam = spawn( CUIWindow );
winChooseTeam.SetTitle( "Choose Team" );
winChooseTeam.SetSize( '420 320' );
winChooseTeam = spawn(CUIWindow);
winChooseTeam.SetTitle("Choose Team");
winChooseTeam.SetSize('420 320');
btnGoRed = spawn( CUIButton );
btnGoRed.SetTitle( "Red Team" );
btnGoRed.SetPos( '8 132' );
btnGoRed.SetFunc( VGUI_ChooseTeam_Red );
btnGoRed = spawn(CUIButton);
btnGoRed.SetTitle("Red Team");
btnGoRed.SetPos('8 132');
btnGoRed.SetFunc(VGUI_ChooseTeam_Red);
btnGoBlue = spawn( CUIButton );
btnGoBlue.SetTitle( "Blue Team" );
btnGoBlue.SetPos( '8 162' );
btnGoBlue.SetFunc( VGUI_ChooseTeam_Blue );
btnGoBlue = spawn(CUIButton);
btnGoBlue.SetTitle("Blue Team");
btnGoBlue.SetPos('8 162');
btnGoBlue.SetFunc(VGUI_ChooseTeam_Blue);
btnGoSpectator = spawn( CUIButton );
btnGoSpectator.SetTitle( "Spectator" );
btnGoSpectator.SetPos( '8 192' );
btnGoSpectator.SetFunc( VGUI_GoSpectator );
btnGoSpectator = spawn(CUIButton);
btnGoSpectator.SetTitle("Spectator");
btnGoSpectator.SetPos('8 192');
btnGoSpectator.SetFunc(VGUI_GoSpectator);
g_uiDesktop.Add( winChooseTeam );
winChooseTeam.Add( btnGoRed );
winChooseTeam.Add( btnGoBlue );
winChooseTeam.Add( btnGoSpectator );
g_uiDesktop.Add(winChooseTeam);
winChooseTeam.Add(btnGoRed);
winChooseTeam.Add(btnGoBlue);
winChooseTeam.Add(btnGoSpectator);
}
winChooseTeam.Show();
winChooseTeam.SetPos( ( video_res / 2 ) - ( winChooseTeam.GetSize() / 2 ) );
winChooseTeam.SetPos((video_res / 2) - (winChooseTeam.GetSize() / 2));
}

View File

@ -38,6 +38,25 @@ typedef struct titles_s
titles_t *g_titles;
int g_titles_count;
string
Titles_ParseFunString(string temp)
{
/* empty lines are newlines. */
if (!temp) {
return "\n";
}
temp = strreplace("\\y", "^3", temp);
temp = strreplace("\\r", "^1", temp);
temp = strreplace("\\g", "^2", temp);
temp = strreplace("\\b", "^4", temp);
temp = strreplace("\\w", "^7", temp);
temp = strreplace("\\d", "^8", temp);
temp = strreplace("\\R", " ", temp);
temp = strreplace("/n", "\n", temp);
return temp;
}
void
Titles_Init(void)
{
@ -98,7 +117,7 @@ Titles_Init(void)
}
}
/*print(sprintf("[^1TITLES^7] Found %i titles\n", g_titles_count));*/
dprint(sprintf("^2Titles_Init^7: found %i titles\n", g_titles_count));
g_titles = memalloc(sizeof(titles_t) * g_titles_count);
fseek(fs_titles, 0);
@ -180,6 +199,7 @@ Titles_Init(void)
default:
if (braced == TRUE) {
/* append string entry after another */
temp = Titles_ParseFunString(temp);
t_message = sprintf("%s%s\n", t_message, temp);
} else {
/* name/identifer of our message */

View File

@ -14,7 +14,8 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
float Game_ConsoleCommand(void)
int
Game_ConsoleCommand(void)
{
switch(argv(0)) {
default:

View File

@ -23,63 +23,83 @@ vector g_hudres;
struct
{
/* viewmodel stuff */
entity eViewModel;
entity eMuzzleflash;
float fNumBones;
float fEjectBone;
float fLastWeapon;
float fBobTime;
float fBob;
float damage_alpha;
vector damage_pos;
entity m_eViewModel;
entity m_eMuzzleflash;
int m_iVMBones;
int m_iVMEjectBone;
int m_iLastWeapon;
float m_flBobTime;
float m_flBob;
int iZoomed;
float flZoomTime;
/* damage overlay */
float m_flDamageAlpha;
vector m_vecDamagePos;
/* +zoomin cmd */
int m_iZoomed;
float m_flZoomTime;
/* player fields */
entity ePlayer;
vector vPlayerOrigin;
vector vPlayerOriginOld;
vector vPlayerVelocity;
float fPlayerFlags;
entity m_ePlayer;
vector m_vecPredictedOrigin;
vector m_vecPredictedOriginOld;
vector m_vecPredictedVelocity;
float m_flPredictedFlags;
/* camera fields */
vector vCameraPos;
vector vCameraAngle;
float fCameraTime;
/* punchangle */
vector punchangle;
vector net_punchangle;
vector m_vecCameraOrigin;
vector m_vecCameraAngle;
float m_flCameraTime;
/* hud.c */
float health_old;
float health_alpha;
float armor_old;
float armor_alpha;
float ammo1_old;
float ammo1_alpha;
float ammo2_old;
float ammo2_alpha;
float ammo3_old;
float ammo3_alpha;
int pickup_weapon;
float pickup_alpha;
int m_iHealthOld;
float m_flHealthAlpha;
int m_iArmorOld;
float m_flArmorAlpha;
int m_iAmmo1Old;
float m_flAmmo1Alpha;
int m_iAmmo2Old;
float m_flAmmo2Alpha;
int m_iAmmo3Old;
float m_flAmmo3Alpha;
int m_iPickupWeapon;
float m_flPickupAlpha;
/* This is seperated from the other VGUI stuff so we can check scores
* while buying and whatnot */
int iShowScores;
float fHUDWeaponSelected;
float fHUDWeaponSelectTime;
int m_iScoresVisible;
int m_iHUDWeaponSelected;
float m_flHUDWeaponSelectTime;
int iInputAttack2;
int iInputReload;
int iInputUse;
int iInputDuck;
/* centerprint related */
float m_flCenterprintAlpha;
float m_flCenterprintTime;
float m_iCenterprintLines;
string m_strCenterprintBuffer[18];
float fInputSendNext;
entity pWeaponFX;
} seats[4], *pSeat;
/* chat related */
float m_flPrintTime;
string m_strPrintBuffer[5];
int m_iPrintLines;
int m_iInputAttack2;
int m_iInputReload;
int m_iInputUse;
int m_iInputDuck;
float m_flInputBlockTime;
/* fading */
float m_flFadeDuration;
float m_flFadeHold;
float m_flFadeMaxAlpha;
float m_flFadeStyle;
float m_flFadeAlpha;
float m_flFadeTime;
vector m_vecFadeColor;
int m_iFadeActive;
entity m_pWeaponFX;
} g_seats[4], *pSeat;
void HUD_DrawAmmo1(void);
void HUD_DrawAmmo2(void);

View File

@ -14,29 +14,30 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void Game_Parse_Event(float fHeader)
void
Game_Parse_Event(float fHeader)
{
if (fHeader == EV_CHAT) {
float fSender = readbyte();
float fTeam = readbyte();
string sMessage = readstring();
CSQC_Parse_Print(sprintf("%s: %s", getplayerkeyvalue(fSender, "name"), sMessage), PRINT_CHAT);
} else if (fHeader == EV_CHAT_TEAM) {
float fSender2 = readbyte();
float fTeam2 = readbyte();
string sMessage2 = readstring();
CSQC_Parse_Print(sprintf("[TEAM] %s: %s", getplayerkeyvalue(fSender2, "name"), sMessage2), PRINT_CHAT);
} else if (fHeader == EV_CHAT_VOX) {
Sound_PlayVOX(readstring());
} else if (fHeader == EV_VIEWMODEL) {
View_PlayAnimation(readbyte());
} else if (fHeader == EV_WEAPON_PICKUP) {
float w = readbyte();
int w = readbyte();
if (autocvar_cl_autoweaponswitch == 1) {
sendevent("PlayerSwitchWeapon", "f", w);
sendevent("PlayerSwitchWeapon", "i", w);
}
HUD_WeaponPickupNotify(w);

View File

@ -96,9 +96,9 @@ HUD_DrawSeperator(vector pos)
/* handle single/multiple digits */
void
HUD_DrawNumber(int iNumber, vector vPos, float fAlpha, vector vColor)
HUD_DrawNumber(int iNumber, vector vecPos, float fAlpha, vector vColor)
{
drawsubpic(vPos,
drawsubpic(vecPos,
[24,24],
HUD_NUMS,
[spr_hudnum[iNumber], 0],
@ -110,17 +110,17 @@ HUD_DrawNumber(int iNumber, vector vPos, float fAlpha, vector vColor)
}
void
HUD_DrawNums(float fNumber, vector vPos, float fAlpha, vector vColor)
HUD_DrawNums(float fNumber, vector vecPos, float fAlpha, vector vColor)
{
int i = fNumber;
if (i > 0) {
while (i > 0) {
HUD_DrawNumber((float)i % 10, vPos, fAlpha, vColor);
HUD_DrawNumber((float)i % 10, vecPos, fAlpha, vColor);
i = i / 10;
vPos[0] -= 20;
vecPos[0] -= 20;
}
} else {
HUD_DrawNumber(0, vPos, fAlpha, vColor);
HUD_DrawNumber(0, vecPos, fAlpha, vColor);
}
}
@ -129,16 +129,16 @@ void
HUD_DrawHealth(void)
{
vector pos;
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (pl.health != pSeat->health_old) {
pSeat->health_alpha = 1.0;
if (pl.health != pSeat->m_iHealthOld) {
pSeat->m_flHealthAlpha = 1.0;
}
if (pSeat->health_alpha >= HUD_ALPHA) {
pSeat->health_alpha -= clframetime * 0.5;
if (pSeat->m_flHealthAlpha >= HUD_ALPHA) {
pSeat->m_flHealthAlpha -= clframetime * 0.5;
} else {
pSeat->health_alpha = HUD_ALPHA;
pSeat->m_flHealthAlpha = HUD_ALPHA;
}
pos = g_hudmins + [88, g_hudres[1] - 42];
@ -150,10 +150,10 @@ HUD_DrawHealth(void)
[spr_health[0], spr_health[1]],
[spr_health[2], spr_health[3]],
g_hud_color,
pSeat->health_alpha,
pSeat->m_flHealthAlpha,
DRAWFLAG_ADDITIVE
);
HUD_DrawNums(pl.health, pos, pSeat->health_alpha, g_hud_color);
HUD_DrawNums(pl.health, pos, pSeat->m_flHealthAlpha, g_hud_color);
} else {
drawsubpic(
pos + [-72,-4],
@ -162,13 +162,13 @@ HUD_DrawHealth(void)
[spr_health[0], spr_health[1]],
[spr_health[2], spr_health[3]],
[1,0,0],
pSeat->health_alpha,
pSeat->m_flHealthAlpha,
DRAWFLAG_ADDITIVE
);
HUD_DrawNums(pl.health, pos, pSeat->health_alpha, [1,0,0]);
HUD_DrawNums(pl.health, pos, pSeat->m_flHealthAlpha, [1,0,0]);
}
pSeat->health_old = pl.health;
pSeat->m_iHealthOld = pl.health;
}
/* armor/suit charge */
@ -176,18 +176,18 @@ void
HUD_DrawArmor(void)
{
vector pos;
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
pos = g_hudmins + [198, g_hudres[1] - 42];
if (pl.armor != pSeat->armor_old) {
pSeat->armor_alpha = 1.0;
if (pl.armor != pSeat->m_iArmorOld) {
pSeat->m_flArmorAlpha = 1.0;
}
if (pSeat->armor_alpha >= HUD_ALPHA) {
pSeat->armor_alpha -= clframetime * 0.5;
if (pSeat->m_flArmorAlpha >= HUD_ALPHA) {
pSeat->m_flArmorAlpha -= clframetime * 0.5;
} else {
pSeat->armor_alpha = HUD_ALPHA;
pSeat->m_flArmorAlpha = HUD_ALPHA;
}
drawsubpic(
@ -197,7 +197,7 @@ HUD_DrawArmor(void)
[spr_suit2[0], spr_suit2[1]],
[spr_suit2[2], spr_suit2[3]],
g_hud_color,
pSeat->armor_alpha,
pSeat->m_flArmorAlpha,
DRAWFLAG_ADDITIVE
);
@ -210,35 +210,35 @@ HUD_DrawArmor(void)
spr_suit1[1]],
[spr_suit1[2], spr_suit1[3] * (pl.armor / 100)],
g_hud_color,
pSeat->armor_alpha,
pSeat->m_flArmorAlpha,
DRAWFLAG_ADDITIVE
);
}
HUD_DrawNums(pl.armor, pos, pSeat->armor_alpha, g_hud_color);
pSeat->armor_old = pl.armor;
HUD_DrawNums(pl.armor, pos, pSeat->m_flArmorAlpha, g_hud_color);
pSeat->m_iArmorOld = pl.armor;
}
/* magazine/clip ammo */
void
HUD_DrawAmmo1(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
vector pos;
if (pl.a_ammo1 != pSeat->ammo1_old) {
pSeat->ammo1_alpha = 1.0;
pSeat->ammo1_old = pl.a_ammo1;
if (pl.a_ammo1 != pSeat->m_iAmmo1Old) {
pSeat->m_flAmmo1Alpha = 1.0;
pSeat->m_iAmmo1Old = pl.a_ammo1;
}
if (pSeat->ammo1_alpha >= HUD_ALPHA) {
pSeat->ammo1_alpha -= clframetime * 0.5;
if (pSeat->m_flAmmo1Alpha >= HUD_ALPHA) {
pSeat->m_flAmmo1Alpha -= clframetime * 0.5;
} else {
pSeat->ammo1_alpha = HUD_ALPHA;
pSeat->m_flAmmo1Alpha = HUD_ALPHA;
}
pos = g_hudmins + [g_hudres[0] - 152, g_hudres[1] - 42];
HUD_DrawNums(pl.a_ammo1, pos, pSeat->ammo1_alpha, g_hud_color);
HUD_DrawNums(pl.a_ammo1, pos, pSeat->m_flAmmo1Alpha, g_hud_color);
HUD_DrawSeperator(pos + [30,0]);
}
@ -246,44 +246,44 @@ HUD_DrawAmmo1(void)
void
HUD_DrawAmmo2(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
vector pos;
if (pl.a_ammo2 != pSeat->ammo2_old) {
pSeat->ammo2_alpha = 1.0;
pSeat->ammo2_old = pl.a_ammo2;
if (pl.a_ammo2 != pSeat->m_iAmmo2Old) {
pSeat->m_flAmmo2Alpha = 1.0;
pSeat->m_iAmmo2Old = pl.a_ammo2;
}
if (pSeat->ammo2_alpha >= HUD_ALPHA) {
pSeat->ammo2_alpha -= clframetime * 0.5;
if (pSeat->m_flAmmo2Alpha >= HUD_ALPHA) {
pSeat->m_flAmmo2Alpha -= clframetime * 0.5;
} else {
pSeat->ammo2_alpha = HUD_ALPHA;
pSeat->m_flAmmo2Alpha = HUD_ALPHA;
}
pos = g_hudmins + [g_hudres[0] - 72, g_hudres[1] - 42];
HUD_DrawNums(pl.a_ammo2, pos, pSeat->ammo2_alpha, g_hud_color);
HUD_DrawNums(pl.a_ammo2, pos, pSeat->m_flAmmo2Alpha, g_hud_color);
}
/* special ammo */
void
HUD_DrawAmmo3(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
vector pos;
if (pl.a_ammo3 != pSeat->ammo3_old) {
pSeat->ammo3_alpha = 1.0;
pSeat->ammo3_old = pl.a_ammo3;
if (pl.a_ammo3 != pSeat->m_iAmmo3Old) {
pSeat->m_flAmmo3Alpha = 1.0;
pSeat->m_iAmmo3Old = pl.a_ammo3;
}
if (pSeat->ammo3_alpha >= HUD_ALPHA) {
pSeat->ammo3_alpha -= clframetime * 0.5;
if (pSeat->m_flAmmo3Alpha >= HUD_ALPHA) {
pSeat->m_flAmmo3Alpha -= clframetime * 0.5;
} else {
pSeat->ammo3_alpha = HUD_ALPHA;
pSeat->m_flAmmo3Alpha = HUD_ALPHA;
}
pos = g_hudmins + [g_hudres[0] - 72, g_hudres[1] - 74];
HUD_DrawNums(pl.a_ammo3, pos, pSeat->ammo3_alpha, g_hud_color);
HUD_DrawNums(pl.a_ammo3, pos, pSeat->m_flAmmo3Alpha, g_hud_color);
}
/* flashlight/torch indicator */
@ -291,7 +291,7 @@ void
HUD_DrawFlashlight(void)
{
vector pos;
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
pos = g_hudmins + [g_hudres[0] - 48, 16];
/* both on, draw both sprites at full intensity */
@ -369,27 +369,27 @@ HUD_DrawNotify(void)
{
vector pos;
if (pSeat->pickup_alpha <= 0.0f) {
if (pSeat->m_flPickupAlpha <= 0.0f) {
return;
}
pos = g_hudmins + [g_hudres[0] - 192, g_hudres[1] - 128];
Weapons_HUDPic(pSeat->pickup_weapon, 1, pos, pSeat->pickup_alpha);
pSeat->pickup_alpha -= clframetime;
Weapons_HUDPic(pSeat->m_iPickupWeapon, 1, pos, pSeat->m_flPickupAlpha);
pSeat->m_flPickupAlpha -= clframetime;
}
void
HUD_WeaponPickupNotify(int w)
{
pSeat->pickup_weapon = w;
pSeat->pickup_alpha = 1.0f;
pSeat->m_iPickupWeapon = w;
pSeat->m_flPickupAlpha = 1.0f;
}
/* main entry */
void
HUD_Draw(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
g_hud_color = autocvar_con_color * (1 / 255);

View File

@ -14,7 +14,7 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
vector vHUDSlotNumPos[6] =
vector g_vecHUDNums[6] =
{
[168 / 256, 72 / 128],
[188 / 256, 72 / 128],
@ -24,80 +24,86 @@ vector vHUDSlotNumPos[6] =
[208 / 256, 92 / 128]
};
void HUD_DrawWeaponSelect_Forward(void)
void
HUD_DrawWeaponSelect_Forward(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
pSeat->fHUDWeaponSelected = pl.activeweapon;
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
pSeat->m_iHUDWeaponSelected = pl.activeweapon;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected--;
if (pSeat->fHUDWeaponSelected <= 0) {
pSeat->fHUDWeaponSelected = g_weapons.length - 1;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected--;
if (pSeat->m_iHUDWeaponSelected <= 0) {
pSeat->m_iHUDWeaponSelected = g_weapons.length - 1;
}
}
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_flHUDWeaponSelectTime = time + 3;
if not (pl.g_items & g_weapons[pSeat->fHUDWeaponSelected].id) {
if not (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) {
HUD_DrawWeaponSelect_Forward();
}
}
void HUD_DrawWeaponSelect_Back(void)
void
HUD_DrawWeaponSelect_Back(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
pSeat->fHUDWeaponSelected = pl.activeweapon;
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
pSeat->m_iHUDWeaponSelected = pl.activeweapon;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected++;
if (pSeat->fHUDWeaponSelected >= g_weapons.length) {
pSeat->fHUDWeaponSelected = 1;
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected++;
if (pSeat->m_iHUDWeaponSelected >= g_weapons.length) {
pSeat->m_iHUDWeaponSelected = 1;
}
}
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_flHUDWeaponSelectTime = time + 3;
if not (pl.g_items & g_weapons[pSeat->fHUDWeaponSelected].id) {
if not (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) {
HUD_DrawWeaponSelect_Back();
}
}
void HUD_DrawWeaponSelect_Trigger(void)
void
HUD_DrawWeaponSelect_Trigger(void)
{
player pl = (player)pSeat->ePlayer;
pl.activeweapon = pSeat->fHUDWeaponSelected;
sendevent("PlayerSwitchWeapon", "f", pSeat->fHUDWeaponSelected);
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_select.wav", 0.5f, ATTN_NONE);
pSeat->fHUDWeaponSelected = pSeat->fHUDWeaponSelectTime = 0;
player pl = (player)pSeat->m_ePlayer;
pl.activeweapon = pSeat->m_iHUDWeaponSelected;
sendevent("PlayerSwitchWeapon", "i", pSeat->m_iHUDWeaponSelected);
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_select.wav", 0.5f, ATTN_NONE);
pSeat->m_iHUDWeaponSelected = pSeat->m_flHUDWeaponSelectTime = 0;
}
void HUD_DrawWeaponSelect_Last(void)
void
HUD_DrawWeaponSelect_Last(void)
{
}
void HUD_DrawWeaponSelect_Num(vector vPos, float fValue)
void
HUD_DrawWeaponSelect_Num(vector vecPos, float fValue)
{
drawsubpic(vPos, [20,20], "sprites/640hud7.spr_0.tga", vHUDSlotNumPos[fValue], [20/256, 20/128], g_hud_color, 1, DRAWFLAG_ADDITIVE);
drawsubpic(vecPos, [20,20], "sprites/640hud7.spr_0.tga", g_vecHUDNums[fValue], [20/256, 20/128], g_hud_color, 1, DRAWFLAG_ADDITIVE);
}
int HUD_InSlotPos(int slot, int pos)
int
HUD_InSlotPos(int slot, int pos)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
for (int i = 1; i < g_weapons.length; i++) {
if (g_weapons[i].slot == slot && g_weapons[i].slot_pos == pos) {
if (pl.g_items & g_weapons[i].id) {
@ -110,10 +116,11 @@ int HUD_InSlotPos(int slot, int pos)
return -1;
}
void HUD_SlotSelect(int slot)
void
HUD_SlotSelect(int slot)
{
player pl = (player)pSeat->ePlayer;
int curslot = g_weapons[pSeat->fHUDWeaponSelected].slot;
player pl = (player)pSeat->m_ePlayer;
int curslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot;
int i;
/* hack to see if we have ANY weapons at all. */
@ -121,47 +128,53 @@ void HUD_SlotSelect(int slot)
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
if (pSeat->m_flHUDWeaponSelectTime < time) {
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE);
} else {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE);
}
/* weren't in that slot? select the first one then */
if (curslot != slot) {
for (i = 1; i < g_weapons.length; i++) {
if (g_weapons[i].slot == slot && pl.g_items & g_weapons[i].id) {
pSeat->fHUDWeaponSelected = i;
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_iHUDWeaponSelected = i;
pSeat->m_flHUDWeaponSelectTime = time + 3;
break;
}
}
} else {
/* increment our current selected weapon by 1 */
pSeat->fHUDWeaponSelected++;
pSeat->fHUDWeaponSelectTime = time + 3;
pSeat->m_iHUDWeaponSelected++;
pSeat->m_flHUDWeaponSelectTime = time + 3;
/* haven't got it. */
if (!(pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id)) {
HUD_SlotSelect(slot);
}
/* reset when out of bounds or outside slot area */
if (pSeat->fHUDWeaponSelected >= g_weapons.length) {
pSeat->fHUDWeaponSelected = 0;
if (pSeat->m_iHUDWeaponSelected >= g_weapons.length) {
pSeat->m_iHUDWeaponSelected = 0;
HUD_SlotSelect(slot);
} else if (g_weapons[pSeat->fHUDWeaponSelected].slot != slot) {
pSeat->fHUDWeaponSelected = 0;
} else if (g_weapons[pSeat->m_iHUDWeaponSelected].slot != slot) {
pSeat->m_iHUDWeaponSelected = 0;
HUD_SlotSelect(slot);
}
}
}
void HUD_DrawWeaponSelect(void)
void
HUD_DrawWeaponSelect(void)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
if (!pl.activeweapon) {
return;
}
if (pSeat->fHUDWeaponSelectTime < time) {
if (pSeat->fHUDWeaponSelected) {
sound(pSeat->ePlayer, CHAN_ITEM, "common/wpn_hudoff.wav", 0.5, ATTN_NONE);
pSeat->fHUDWeaponSelected = 0;
if (pSeat->m_flHUDWeaponSelectTime < time) {
if (pSeat->m_iHUDWeaponSelected) {
sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudoff.wav", 0.5, ATTN_NONE);
pSeat->m_iHUDWeaponSelected = 0;
}
return;
}
@ -169,8 +182,8 @@ void HUD_DrawWeaponSelect(void)
vector vecPos = g_hudmins + [16,16];
int b;
int wantslot = g_weapons[pSeat->fHUDWeaponSelected].slot;
int wantpos = g_weapons[pSeat->fHUDWeaponSelected].slot_pos;
int wantslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot;
int wantpos = g_weapons[pSeat->m_iHUDWeaponSelected].slot_pos;
for (int i = 0; i < 5; i++) {
int slot_selected = 0;
vecPos[1] = g_hudmins[1] + 16;
@ -181,7 +194,7 @@ void HUD_DrawWeaponSelect(void)
slot_selected = TRUE;
if (x == wantpos) {
// Selected Sprite
Weapons_HUDPic(pSeat->fHUDWeaponSelected, 1, vecPos, 1.0f);
Weapons_HUDPic(pSeat->m_iHUDWeaponSelected, 1, vecPos, 1.0f);
drawsubpic(vecPos, [170,45], "sprites/640hud3.spr_0.tga",
[0,180/256], [170/256,45/256], g_hud_color, 1, DRAWFLAG_ADDITIVE);
vecPos[1] += 50;

View File

@ -21,15 +21,18 @@ Client_Init
Comparable to worldspawn in SSQC in that it's mostly used for precaches
=================
*/
void Client_Init(float apilevel, string enginename, float engineversion)
void
Client_Init(float apilevel, string enginename, float engineversion)
{
}
void Client_InitDone(void)
void
Client_InitDone(void)
{
}
void Game_RendererRestarted(string rstr)
void
Game_RendererRestarted(string rstr)
{
precache_model("sprites/640hud1.spr");
precache_model("sprites/640hud2.spr");

View File

@ -14,7 +14,8 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void Game_Input(void)
void
Game_Input(void)
{
if (input_buttons & INPUT_BUTTON0) {
Weapons_Primary();

View File

@ -32,7 +32,7 @@ Player_ReadEntity(float new)
//FIXME: splitscreen
if (pl.entnum == player_localentnum) {
//FIXME: splitscreen
pSeat = &seats[0];
pSeat = &g_seats[0];
for (i = pl.sequence+1; i <= servercommandframe; i++) {
if (!getinputstate(i)) {
break; //erk?... too old?

View File

@ -14,10 +14,12 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void GamePredict_PreFrame(player pl)
void
GamePredict_PreFrame(player pl)
{
}
void GamePredict_PostFrame(player pl)
void
GamePredict_PostFrame(player pl)
{
}

View File

@ -2,6 +2,7 @@
#pragma progs_dat "../../../valve/data.pk3dir/csprogs.dat"
#define CSQC
#define CLIENT
#define VALVE
#includelist
@ -26,6 +27,7 @@
../text.c
../../gs-entbase/client.src
../../gs-entbase/shared.src
../sky.c
../music.c
@ -41,9 +43,7 @@
../../shared/pmove.c
../valve/predict.c
../predict.c
../../shared/decals.c
../../shared/effects.c
../../shared/spraylogo.cpp
../npc.c
../../shared/valve/items.h
@ -69,7 +69,6 @@
../valve/player.c
../valve/entities.c
../entities.c
../fx_lensflare.c
../fx_gunsmoke.c
../valve/cmds.c
../valve/game_event.c
@ -79,6 +78,7 @@
../damage.c
../obituary.c
../chat.c
../textmenu.c
../vgui.cpp
../valve/hud.c

View File

@ -19,17 +19,19 @@
var int autocvar_cl_centerscores = FALSE;
void Scores_Init(void)
void
Scores_Init(void)
{
}
void Scores_Draw(void)
void
Scores_Draw(void)
{
vector pos;
player pl;
pl = (player)pSeat->ePlayer;
pl = (player)pSeat->m_ePlayer;
if (autocvar_cl_centerscores) {
int c = 10;

View File

@ -17,13 +17,13 @@
void
View_UpdateWeapon(entity vm, entity mflash)
{
player pl = (player)pSeat->ePlayer;
player pl = (player)pSeat->m_ePlayer;
/* only bother upon change */
if (pSeat->fLastWeapon == pl.activeweapon) {
if (pSeat->m_iLastWeapon == pl.activeweapon) {
return;
}
pSeat->fLastWeapon = pl.activeweapon;
pSeat->m_iLastWeapon = pl.activeweapon;
if (!pl.activeweapon) {
return;
@ -43,8 +43,8 @@ View_UpdateWeapon(entity vm, entity mflash)
/* figure out when the attachments start. in FTE attachments for
* HLMDL are treated as bones. they start at numbones + 1 */
skel_delete( mflash.skeletonindex );
mflash.skeletonindex = skel_create( vm.modelindex );
pSeat->fNumBones = skel_get_numbones( mflash.skeletonindex ) + 1;
pSeat->fEjectBone = pSeat->fNumBones + 1;
skel_delete(mflash.skeletonindex);
mflash.skeletonindex = skel_create(vm.modelindex);
pSeat->m_iVMBones = skel_get_numbones(mflash.skeletonindex) + 1;
pSeat->m_iVMEjectBone = pSeat->m_iVMBones + 1;
}

View File

@ -16,21 +16,24 @@
CUIWidget g_uiDesktop;
void VGUI_Init(void)
void
VGUI_Init(void)
{
UISystem_Init();
g_uiDesktop = spawn( CUIWidget );
g_uiDesktop.FlagAdd( 1 );
g_uiDesktop = spawn(CUIWidget);
g_uiDesktop.FlagAdd(1);
}
int VGUI_Draw(void)
int
VGUI_Draw(void)
{
g_uiDesktop.Draw();
return 1;
}
int VGUI_Input(float flEvType, float flScanX, float flCharY, float flDevID)
int
VGUI_Input(float flEvType, float flScanX, float flCharY, float flDevID)
{
g_uiDesktop.Input( flEvType, flScanX, flCharY, flDevID );
g_uiDesktop.Input(flEvType, flScanX, flCharY, flDevID);
return 1;
}

View File

@ -19,17 +19,17 @@ var int autocvar_v_camroll = TRUE;
void
View_Init(void)
{
for (int s = seats.length; s-- > numclientseats;) {
pSeat = &seats[s];
if(!pSeat->eViewModel) {
pSeat->eViewModel = spawn();
pSeat->eViewModel.classname = "vm";
pSeat->eViewModel.renderflags = RF_DEPTHHACK;
for (int s = g_seats.length; s-- > numclientseats;) {
pSeat = &g_seats[s];
if(!pSeat->m_eViewModel) {
pSeat->m_eViewModel = spawn();
pSeat->m_eViewModel.classname = "vm";
pSeat->m_eViewModel.renderflags = RF_DEPTHHACK;
pSeat->eMuzzleflash = spawn();
pSeat->eMuzzleflash.classname = "mflash";
pSeat->eMuzzleflash.renderflags = RF_ADDITIVE;
pSeat->pWeaponFX = spawn(CBaseFX);
pSeat->m_eMuzzleflash = spawn();
pSeat->m_eMuzzleflash.classname = "mflash";
pSeat->m_eMuzzleflash.renderflags = RF_ADDITIVE;
pSeat->m_pWeaponFX = spawn(CBaseFX);
}
}
@ -42,7 +42,7 @@ View_Init(void)
void
View_SetMuzzleflash(int index)
{
pSeat->eMuzzleflash.modelindex = (float)index;
pSeat->m_eMuzzleflash.modelindex = (float)index;
}
void
@ -94,8 +94,8 @@ View_CalcBob(void)
return;
}
pSeat->fBobTime += clframetime;
cycle = pSeat->fBobTime - (int)(pSeat->fBobTime / autocvar_v_bobcycle) * autocvar_v_bobcycle;
pSeat->m_flBobTime += clframetime;
cycle = pSeat->m_flBobTime - (int)(pSeat->m_flBobTime / autocvar_v_bobcycle) * autocvar_v_bobcycle;
cycle /= autocvar_v_bobcycle;
if (cycle < autocvar_v_bobup) {
@ -104,12 +104,12 @@ View_CalcBob(void)
cycle = MATH_PI + MATH_PI * (cycle - autocvar_v_bobup)/(1.0 - autocvar_v_bobup);
}
vel = pSeat->vPlayerVelocity;
vel = pSeat->m_vecPredictedVelocity;
vel[2] = 0;
float fBob = sqrt(vel[0] * vel[0] + vel[1] * vel[1]) * autocvar_v_bob;
fBob = fBob * 0.3 + fBob * 0.7 * sin(cycle);
pSeat->fBob = bound(-7, fBob, 4);
float flBob = sqrt(vel[0] * vel[0] + vel[1] * vel[1]) * autocvar_v_bob;
flBob = flBob * 0.3 + flBob * 0.7 * sin(cycle);
pSeat->m_flBob = bound(-7, flBob, 4);
}
float
@ -118,7 +118,7 @@ View_CalcRoll(void)
float roll;
makevectors(view_angles);
roll = dotproduct(pSeat->vPlayerVelocity, v_right);
roll = dotproduct(pSeat->m_vecPredictedVelocity, v_right);
roll *= 0.015f;
return autocvar_v_camroll ? roll : 0;
}
@ -133,8 +133,8 @@ muzzleflash, dynamic lights and so on appear
*/
void View_DrawViewModel(void)
{
entity eViewModel = pSeat->eViewModel;
entity eMuzzleflash = pSeat->eMuzzleflash;
entity m_eViewModel = pSeat->m_eViewModel;
entity m_eMuzzleflash = pSeat->m_eMuzzleflash;
player pl = (player) self;
@ -147,27 +147,27 @@ void View_DrawViewModel(void)
}
View_CalcBob();
View_UpdateWeapon(eViewModel, eMuzzleflash);
float fBaseTime = eViewModel.frame1time;
eViewModel.frame2time = pl.weapontime;
eViewModel.frame1time = pl.weapontime;
processmodelevents(eViewModel.modelindex, eViewModel.frame, fBaseTime,
eViewModel.frame1time, Event_ProcessModel);
View_UpdateWeapon(m_eViewModel, m_eMuzzleflash);
float fBaseTime = m_eViewModel.frame1time;
m_eViewModel.frame2time = pl.weapontime;
m_eViewModel.frame1time = pl.weapontime;
processmodelevents(m_eViewModel.modelindex, m_eViewModel.frame, fBaseTime,
m_eViewModel.frame1time, Event_ProcessModel);
makevectors(view_angles);
eViewModel.angles = view_angles;
m_eViewModel.angles = view_angles;
// Give the gun a tilt effect like in old HL/CS versions
if (autocvar_v_bobclassic == 1) {
eViewModel.angles[2] = -pSeat->fBob;
m_eViewModel.angles[2] = -pSeat->m_flBob;
}
/* now apply the scale hack */
eViewModel.scale = autocvar_r_viewmodelscale;
pSeat->fBob *= autocvar_r_viewmodelscale;
m_eViewModel.scale = autocvar_r_viewmodelscale;
pSeat->m_flBob *= autocvar_r_viewmodelscale;
eViewModel.origin = pSeat->vPlayerOrigin + pl.view_ofs;
eViewModel.origin += [0,0,-1] + (v_forward * (pSeat->fBob * 0.4))
m_eViewModel.origin = pSeat->m_vecPredictedOrigin + pl.view_ofs;
m_eViewModel.origin += [0,0,-1] + (v_forward * (pSeat->m_flBob * 0.4))
+ (v_forward * autocvar_v_gunofs[0])
+ (v_right * autocvar_v_gunofs[1])
+ (v_up * autocvar_v_gunofs[2]);
@ -175,54 +175,55 @@ void View_DrawViewModel(void)
// Left-handed weapons
if (autocvar_v_lefthanded) {
v_right *= -1;
eViewModel.renderflags |= RF_USEAXIS;
//eViewModel.forceshader = SHADER_CULLED;
m_eViewModel.renderflags |= RF_USEAXIS;
//m_eViewModel.forceshader = SHADER_CULLED;
} else {
if (eViewModel.forceshader) {
eViewModel.forceshader = 0;
eViewModel.renderflags &= ~RF_USEAXIS;
if (m_eViewModel.forceshader) {
m_eViewModel.forceshader = 0;
m_eViewModel.renderflags &= ~RF_USEAXIS;
}
}
// Only bother when zoomed out
if (pl.viewzoom == 1.0f) {
// Update muzzleflash position and draw it
if (eMuzzleflash.alpha > 0.0f) {
if (m_eMuzzleflash.alpha > 0.0f) {
makevectors(getproperty(VF_ANGLES));
eMuzzleflash.origin = gettaginfo(eViewModel, eMuzzleflash.skin);
dynamiclight_add(pSeat->vPlayerOrigin + (v_forward * 32), 400 * eMuzzleflash.alpha, [1,0.45,0]);
m_eMuzzleflash.origin = gettaginfo(m_eViewModel, m_eMuzzleflash.skin);
dynamiclight_add(pSeat->m_vecPredictedOrigin + (v_forward * 32), 400 * m_eMuzzleflash.alpha, [1,0.45,0]);
setorigin(eMuzzleflash, eMuzzleflash.origin);
addentity(eMuzzleflash);
setorigin(m_eMuzzleflash, m_eMuzzleflash.origin);
addentity(m_eMuzzleflash);
}
setorigin(eViewModel, eViewModel.origin);
addentity(eViewModel);
setorigin(m_eViewModel, m_eViewModel.origin);
addentity(m_eViewModel);
}
if (pl.movetype == MOVETYPE_WALK) {
view_angles[2] = View_CalcRoll();
setproperty(VF_ANGLES, view_angles + pl.punchangle);
}
}
void View_PostDraw(void)
{
entity eMuzzleflash = pSeat->eMuzzleflash;
entity m_eMuzzleflash = pSeat->m_eMuzzleflash;
// Take away alpha once it has drawn fully at least once
if (eMuzzleflash.alpha > 0.0f) {
eMuzzleflash.alpha -= (clframetime * 16);
if (m_eMuzzleflash.alpha > 0.0f) {
m_eMuzzleflash.alpha -= (clframetime * 16);
}
}
void View_Stairsmooth(void)
{
vector currentpos = pSeat->vPlayerOrigin;
vector currentpos = pSeat->m_vecPredictedOrigin;
vector endpos = currentpos;
static vector oldpos;
/* Have we gone up since last frame? */
if ((pSeat->fPlayerFlags & FL_ONGROUND) && (endpos[2] - oldpos[2] > 0)) {
endpos[2] = oldpos[2] += (frametime * 150);
if ((pSeat->m_flPredictedFlags & FL_ONGROUND) && (endpos[2] - oldpos[2] > 0)) {
endpos[2] = oldpos[2] += (clframetime * 150);
if (endpos[2] > currentpos[2]) {
endpos[2] = currentpos[2];
@ -238,7 +239,7 @@ void View_Stairsmooth(void)
}
//setproperty(VF_ORIGIN, endpos);
pSeat->vPlayerOrigin = endpos;
pSeat->m_vecPredictedOrigin = endpos;
oldpos = endpos;
}
@ -252,11 +253,12 @@ onto the view model
*/
void View_PlayAnimation(int iSequence)
{
pSeat->eViewModel.frame = (float)iSequence;
player pl = (player)pSeat->ePlayer;
pSeat->m_eViewModel.frame = (float)iSequence;
player pl = (player)pSeat->m_ePlayer;
pl.weapontime = 0.0f;
}
int View_GetAnimation(void)
{
return pSeat->eViewModel.frame;
return pSeat->m_eViewModel.frame;
}

View File

@ -21,7 +21,8 @@ HUD_DrawVoice
Draws a little notification for anyone using voice chat
=================
*/
void Voice_DrawHUD(void) {
void
Voice_DrawHUD(void) {
vector pos = video_mins + [video_res[0] - 160, video_res[1] - 136];
for (int i = -1; i > -32; i--) {
@ -66,7 +67,8 @@ void Voice_DrawHUD(void) {
Player_PreDraw
=================
*/
void Voice_Draw3D(entity t)
void
Voice_Draw3D(entity t)
{
if (getplayerkeyfloat(t.entnum - 1, INFOKEY_P_VOIPSPEAKING)) {
vector vpos = t.origin + [0,0,48];

View File

@ -6,10 +6,12 @@
baseentity.h
decals.h
materials.h
../client/fx.c
client/defs.h
client/basefx.cpp
client/baseentity.cpp
client/env_cubemap.cpp
client/env_glow.cpp
client/env_sun.cpp
client/env_sound.cpp
client/env_soundscape.cpp
client/env_sprite.cpp
@ -17,8 +19,8 @@ client/env_particle.cpp
client/env_laser.cpp
client/func_lod.cpp
client/func_dustmotes.cpp
client/light_environment.cpp
client/sky_camera.cpp
server/trigger_gravity.cpp
client/info_notnull.cpp
client/point_message.cpp
client/func_physbox.cpp

View File

@ -36,17 +36,18 @@ class CBaseEntity
string target;
float spawnflags;
void() CBaseEntity;
virtual void() Init;
virtual void() Initialized;
void(void) CBaseEntity;
virtual void(void) Init;
virtual void(void) Initialized;
virtual void(string, string) SpawnKey;
virtual void(string) Sentence;
virtual void() ProcessWordQue;
virtual void(void) ProcessWordQue;
virtual void(float flChanged) ReadEntity;
virtual float(void) predraw;
virtual void(void) postdraw;
#ifdef GS_RENDERFX
virtual void() RenderFXPass;
virtual void(void) RenderFXPass;
#endif
};
@ -317,14 +318,19 @@ void CBaseEntity::SpawnKey(string strField, string strKey)
break;
default:
#ifdef GS_DEVELOPER
print( sprintf( "%s::SpawnKey: Unknown '%s' value '%s'\n",
this.classname, strField, strKey ) );
print(sprintf("%s::SpawnKey: Unknown '%s' value '%s'\n",
this.classname, strField, strKey));
#endif
}
}
void CBaseEntity::postdraw(void)
{
}
void CBaseEntity::Init(void)
{
isCSQC = TRUE;
effects |= EF_NOSHADOW;
for (int i = 0; i < (tokenize(__fullspawndata) - 1); i += 2) {
SpawnKey(argv(i), argv(i+1));

View File

@ -18,9 +18,9 @@ class CBaseFX
{
int m_iBaseJoint;
void() CBaseFX;
void(void) CBaseFX;
virtual void() Draw;
virtual void(void) Draw;
};
void

View File

@ -0,0 +1,20 @@
/*
* Copyright (c) 2016-2020 Marco Hladik <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
vector g_vecSunDir;
/* TODO: Find a better way to figure out what's a CBaseEntity at heart */
.float isCSQC;

View File

@ -33,7 +33,7 @@ env_cubemap:CBaseEntity
{
int m_iSize;
void() env_cubemap;
void(void) env_cubemap;
virtual void(string, string) SpawnKey;
};

View File

@ -32,8 +32,8 @@ class env_glow:CBaseEntity
string m_strSprite;
vector m_vecSize;
float m_flScale;
void() env_glow;
virtual void() customphysics;
void(void) env_glow;
virtual void(void) customphysics;
virtual float() predraw;
virtual void(string, string) SpawnKey;
};
@ -46,8 +46,8 @@ float env_glow::predraw(void)
vecPlayer = viewClient.vecPlayerOrigin;
#else
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &seats[s];
vecPlayer = pSeat->vPlayerOrigin;
pSeat = &g_seats[s];
vecPlayer = pSeat->m_vecPredictedOrigin;
#endif
m_flAlpha = bound(0, m_flAlpha, 1.0f);
@ -99,8 +99,8 @@ void env_glow::customphysics(void)
vecPlayer = viewClient.vecPlayerOrigin;
#else
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &seats[s];
vecPlayer = pSeat->vPlayerOrigin;
pSeat = &g_seats[s];
vecPlayer = pSeat->m_vecPredictedOrigin;
#endif
if (checkpvs(vecPlayer, this) == FALSE) {

View File

@ -31,10 +31,10 @@ class env_laser
string m_strBeamTex;
string m_strEndTex;
void() env_laser;
void(void) env_laser;
virtual void() Init;
virtual void() Initialized;
virtual void(void) Init;
virtual void(void) Initialized;
virtual void(float flChanged) ReadEntity;
virtual float(void) predraw;
};

View File

@ -35,8 +35,8 @@ class env_particle:CBaseEntity
int m_iCount;
string m_strTarget;
void() env_particle;
virtual void() customphysics;
void(void) env_particle;
virtual void(void) customphysics;
virtual void(string, string) SpawnKey;
};
@ -48,8 +48,8 @@ void env_particle::customphysics(void)
vecPlayer = viewClient.vecPlayerOrigin;
#else
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &seats[s];
vecPlayer = pSeat->vPlayerOrigin;
pSeat = &g_seats[s];
vecPlayer = pSeat->m_vecPredictedOrigin;
#endif
if (checkpvs(vecPlayer, this) == FALSE) {

View File

@ -60,7 +60,8 @@ Client-side environmental reverb modifier.
This works only with the OpenAL sound backend.
*/
enum {
enum
{
DSP_DEFAULT,
DSP_PADDEDCELL,
DSP_ROOM,
@ -145,7 +146,7 @@ class env_sound:CBaseEntity
int m_iRoomType;
int m_iRadius;
void() env_sound;
void(void) env_sound;
virtual void(string, string) SpawnKey;
};
@ -330,12 +331,12 @@ void DSP_UpdateListener(void)
vecPlayer = viewClient.vecPlayerOrigin;
#else
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &seats[s];
vecPlayer = pSeat->vPlayerOrigin;
pSeat = &g_seats[s];
vecPlayer = pSeat->m_vecPredictedOrigin;
#endif
float bestdist = 999999;
for ( entity e = world; ( e = find( e, classname, "env_sound" ) ); ) {
for (entity e = world; (e = find(e, classname, "env_sound"));) {
env_sound scape = (env_sound)e;
other = world;
@ -376,8 +377,8 @@ void DSP_UpdateListener(void)
#else
#ifdef GS_DEVELOPER
print( sprintf( "DSP_UpdateListener: Changed style to %i\n",
g_iDSP ) );
print(sprintf("DSP_UpdateListener: Changed style to %i\n",
g_iDSP));
#endif
old_dsp = g_iDSP;

View File

@ -32,7 +32,7 @@ class env_soundscape:CBaseEntity
int m_iRadius;
float m_flVolume;
void() env_soundscape;
void(void) env_soundscape;
virtual void(string, string) SpawnKey;
};
@ -90,12 +90,12 @@ void DSP_UpdateSoundscape(void)
vecPlayer = viewClient.vecPlayerOrigin;
#else
int s = (float)getproperty(VF_ACTIVESEAT);
pSeat = &seats[s];
vecPlayer = pSeat->vPlayerOrigin;
pSeat = &g_seats[s];
vecPlayer = pSeat->m_vecPredictedOrigin;
#endif
float bestdist = 999999;
for ( entity e = world; ( e = find( e, classname, "env_soundscape" ) ); ) {
for (entity e = world; (e = find(e, classname, "env_soundscape"));) {
env_soundscape scape = (env_soundscape)e;
other = world;
@ -127,7 +127,7 @@ void DSP_UpdateSoundscape(void)
g_entOldScape = g_entSoundScape;
float newvol;
for ( entity e = world; ( e = find( e, classname, "env_soundscape" ) ); ) {
for (entity e = world; (e = find(e, classname, "env_soundscape"));) {
env_soundscape t = (env_soundscape)e;
if (g_ambientsound) {

View File

@ -20,10 +20,10 @@ class env_sprite:CBaseEntity
int loops;
int maxframe;
virtual void() Init;
virtual void() Initialized;
virtual void(void) Init;
virtual void(void) Initialized;
virtual void(float flChanged) ReadEntity;
virtual void() think;
virtual void(void) think;
};
void env_sprite::think(void)

View File

@ -13,10 +13,18 @@
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
int trace_surfaceflagsi;
noref int trace_surfaceflagsi;
var vector g_vecLensPos;
var float g_flLensAlpha;
/*QUAKED env_sun (1 0 0) (-8 -8 -8) (8 8 8)
"targetname" Name
"pitch" Sun glow pitch.
"angle" Sun glow angle.
STUB!
*/
#define FLARE_SIZE [128,128]
int Util_IsSky(vector pos)
{
@ -24,19 +32,37 @@ int Util_IsSky(vector pos)
if (getsurfacetexture(world, getsurfacenearpoint(world, pos)) == "sky") {
return TRUE;
}
/* trace_surfaceflagsi & SURF_SKY */
if (trace_surfaceflagsi & SURF_SKY) {
return TRUE;
}
return FALSE;
}
#define FLARE_SIZE [128,128]
void FX_LensFlare(void)
class env_sun:CBaseEntity
{
if (!g_vecLensPos) {
return;
}
vector m_vecLensPos;
float m_flLensAlpha;
makevectors(g_vecLensPos);
void(void) env_sun;
virtual void(void) Init;
virtual void(void) Initialized;
virtual void(void) postdraw;
virtual float(void) predraw;
virtual void(string, string) SpawnKey;
};
float
env_sun::predraw(void)
{
addentity(this);
return PREDRAW_NEXT;
}
void
env_sun::postdraw(void)
{
makevectors(m_vecLensPos);
vector lens_pos = getproperty(VF_ORIGIN) + (v_forward * 16384);
vector lens_1 = project(lens_pos) - (FLARE_SIZE / 2);
@ -51,23 +77,60 @@ void FX_LensFlare(void)
if (Util_IsSky(trace_endpos) && flDot > 0.8) {
/* this never happens because the above trace fails. */
g_flLensAlpha = bound(0.0, g_flLensAlpha + (clframetime * 2), 1.0);
m_flLensAlpha = bound(0.0, m_flLensAlpha + (clframetime * 2), 1.0);
} else {
g_flLensAlpha = bound(0.0, g_flLensAlpha - (clframetime * 2), 1.0);
m_flLensAlpha = bound(0.0, m_flLensAlpha - (clframetime * 2), 1.0);
}
}
if (g_flLensAlpha <= 0.0f) {
if (m_flLensAlpha <= 0.0f) {
return;
}
makevectors(getproperty(VF_CL_VIEWANGLES));
vector lens_m = project(getproperty(VF_ORIGIN) + (v_forward * 16384));
vector c = (lens_1 - lens_m) * 1.5;
drawpic(lens_1, "textures/fx/flare1", FLARE_SIZE, [1,1,1] * g_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
drawpic(lens_1 - c * 0.1, "textures/fx/flare2", FLARE_SIZE, [1,1,1] * g_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
drawpic(lens_1 + c * 0.2, "textures/fx/flare3", FLARE_SIZE, [1,1,1] * g_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
drawpic(lens_1 - c * 0.3, "textures/fx/flare4", FLARE_SIZE, [1,1,1] * g_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
drawpic(lens_1 + c * 0.4, "textures/fx/flare2", FLARE_SIZE, [1,1,1] * g_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
drawpic(lens_1 - c * 0.5, "textures/fx/flare3", FLARE_SIZE, [1,1,1] * g_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
drawpic(lens_1, "textures/fx/flare1", FLARE_SIZE, [1,1,1] * m_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
drawpic(lens_1 - c * 0.1, "textures/fx/flare2", FLARE_SIZE, [1,1,1] * m_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
drawpic(lens_1 + c * 0.2, "textures/fx/flare3", FLARE_SIZE, [1,1,1] * m_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
drawpic(lens_1 - c * 0.3, "textures/fx/flare4", FLARE_SIZE, [1,1,1] * m_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
drawpic(lens_1 + c * 0.4, "textures/fx/flare2", FLARE_SIZE, [1,1,1] * m_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
drawpic(lens_1 - c * 0.5, "textures/fx/flare3", FLARE_SIZE, [1,1,1] * m_flLensAlpha, 1.0f, DRAWFLAG_ADDITIVE);
}
void env_sun::Init(void)
{
CBaseEntity::Init();
setorigin(this, origin);
drawmask = MASK_ENGINE;
}
void env_sun::Initialized(void)
{
makevectors(m_vecLensPos);
m_vecLensPos = vectoangles(v_forward);
}
void env_sun::env_sun(void)
{
precache_pic("textures/fx/flare1");
precache_pic("textures/fx/flare2");
precache_pic("textures/fx/flare3");
precache_pic("textures/fx/flare4");
solid = SOLID_NOT;
Init();
}
void env_sun::SpawnKey(string strField, string strKey)
{
switch (strField) {
case "pitch":
m_vecLensPos[0] = stof(strKey);
break;
case "angle":
m_vecLensPos[1] = stof(strKey);
break;
default:
CBaseEntity::SpawnKey(strField, strKey);
}
}

View File

@ -25,8 +25,8 @@ class func_dustmotes:CBaseEntity
int m_iPart;
float m_flNexTime;
void() func_dustmotes;
virtual void() Init;
void(void) func_dustmotes;
virtual void(void) Init;
virtual float() predraw;
virtual void(string, string) SpawnKey;
};
@ -41,12 +41,12 @@ float func_dustmotes::predraw(void)
return PREDRAW_NEXT;
}
for ( int i = 0; i < m_iCount; i++) {
vector vPos;
vPos[0] = mins[0] + ( random() * ( maxs[0] - mins[0] ) );
vPos[1] = mins[1] + ( random() * ( maxs[1] - mins[1] ) );
vPos[2] = mins[2] + ( random() * ( maxs[2] - mins[2] ) );
pointparticles( PART_DUSTMOTE, vPos, [0,0,0], 1 );
for (int i = 0; i < m_iCount; i++) {
vector vecPos;
vecPos[0] = mins[0] + (random() * (maxs[0] - mins[0]));
vecPos[1] = mins[1] + (random() * (maxs[1] - mins[1]));
vecPos[2] = mins[2] + (random() * (maxs[2] - mins[2]));
pointparticles(PART_DUSTMOTE, vecPos, [0,0,0], 1);
}
m_flNexTime = cltime + 3.0f;

Some files were not shown because too many files have changed in this diff Show More