Update view bobbing, more QC integration, other techniques (#2)

* Update view bobbing, more QC integration, other techniques

* Fix crash (was printing text on screen for some reason...)
This commit is contained in:
Ryan Baldwin 2022-06-23 00:18:52 -07:00 committed by GitHub
parent 83efa9ef1a
commit b6405841b9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 1223 additions and 209 deletions

Binary file not shown.

Binary file not shown.

View file

@ -1073,8 +1073,10 @@ HUD_Perks
#define P_DEAD 64
#define P_MULE 128
#endif
int perk_order[9];
int current_perk_order;
#if 0
void HUD_Perks (void)
{
@ -1422,3 +1424,12 @@ void HUD_Draw (void)
}
#endif
void HUD_Draw (void)
{
// naievil -- just a test hud to draw things, why does this break the physical device build?
//char test[256];
//sprintf (test,"Weapon: %s", pr_strings+sv_player->v.weaponmodel);
//Draw_String (0, 8, test);
}

View file

@ -714,6 +714,32 @@ void CL_ParseStaticSound (void)
}
extern double Hitmark_Time;
extern int crosshair_spread;
extern double crosshair_spread_time;
double return_time;
/*
===================
CL_ParseWeaponFire
===================
*/
void CL_ParseWeaponFire (void)
{
vec3_t kick;
return_time = (double)6/MSG_ReadLong ();
crosshair_spread_time = return_time + sv.time;
kick[0] = MSG_ReadCoord()/5;
kick[1] = MSG_ReadCoord()/5;
kick[2] = MSG_ReadCoord()/5;
if (!(cl.perks & 64)) {
cl.gun_kick[0] += kick[0];
cl.gun_kick[1] += kick[1];
cl.gun_kick[2] += kick[2];
}
}
/*
===================
CL_ParseLimbUpdate
@ -991,6 +1017,10 @@ void CL_ParseServerMessage (void)
Cmd_ExecuteString ("help", src_command);
break;
case svc_weaponfire:
CL_ParseWeaponFire();
break;
case svc_limbupdate:
CL_ParseLimbUpdate();
break;

View file

@ -157,6 +157,7 @@ typedef struct
// information for local display
int stats[MAX_CL_STATS]; // health, etc
int perks; // Perk icons.
int items; // inventory bit flags
float item_gettime[32]; // cl.time of aquiring item, for blinking
float faceanimtime; // use anim frame if cl.time < this
@ -177,7 +178,8 @@ typedef struct
vec3_t velocity; // lerped between mvelocity[0] and [1]
vec3_t punchangle; // temporary offset
vec3_t gun_kick; // temporary kick
// pitch drifting vars
float idealpitch;
float pitchvel;
@ -222,6 +224,7 @@ typedef struct
int num_entities; // held in cl_entities array
int num_statics; // held in cl_staticentities array
entity_t viewent; // the gun model
entity_t viewent2; // the second gun model
int cdtrack, looptrack; // cd audio

View file

@ -776,6 +776,258 @@ void Draw_Fill (int x, int y, int w, int h, int c)
}
//=============================================================================
byte *StringToRGB (char *s)
{
byte *col;
static byte rgb[4];
Cmd_TokenizeString (s);
if (Cmd_Argc() == 3)
{
rgb[0] = (byte)Q_atoi(Cmd_Argv(0));
rgb[1] = (byte)Q_atoi(Cmd_Argv(1));
rgb[2] = (byte)Q_atoi(Cmd_Argv(2));
}
else
{
col = (byte *)&d_8to24table[(byte)Q_atoi(s)];
rgb[0] = col[0];
rgb[1] = col[1];
rgb[2] = col[2];
}
rgb[3] = 255;
return rgb;
}
extern cvar_t crosshair;
extern qboolean croshhairmoving;
//extern cvar_t cl_zoom;
extern qpic_t *hitmark;
double Hitmark_Time, crosshair_spread_time;
float cur_spread;
float crosshair_offset_step;
int CrossHairWeapon (void)
{
int i;
switch(cl.stats[STAT_ACTIVEWEAPON])
{
case W_COLT:
case W_BIATCH:
i = 15;
break;
case W_KAR:
case W_ARMAGEDDON:
i = 50;
break;
case W_THOMPSON:
case W_GIBS:
i = 10;
break;
case W_357:
case W_KILLU:
i = 10;
break;
case W_BAR:
case W_WIDOW:
i = 10;
break;
case W_BROWNING:
case W_ACCELERATOR:
i = 20;
break;
case W_DB:
case W_BORE:
i = 25;
break;
case W_FG:
case W_IMPELLER:
i = 10;
break;
case W_GEWEHR:
case W_COMPRESSOR:
i = 10;
break;
case W_KAR_SCOPE:
case W_HEADCRACKER:
i = 50;
break;
case W_M1:
case W_M1000:
i = 10;
break;
case W_M1A1:
case W_WIDDER:
i = 10;
break;
case W_MP40:
case W_AFTERBURNER:
i = 10;
break;
case W_MG:
case W_BARRACUDA:
i = 20;
break;
case W_PANZER:
case W_LONGINUS:
i = 0;
break;
case W_PPSH:
case W_REAPER:
i = 10;
break;
case W_PTRS:
case W_PENETRATOR:
i = 50;
break;
case W_RAY:
case W_PORTER:
i = 10;
break;
case W_SAWNOFF:
case W_SNUFF:
i = 30;
break;
case W_STG:
case W_SPATZ:
i = 10;
break;
case W_TRENCH:
case W_GUT:
i = 25;
break;
case W_TYPE:
case W_SAMURAI:
i = 10;
break;
case W_MP5:
i = 10;
break;
case W_TESLA:
i = 0;
break;
default:
i = 0;
break;
}
if (cl.perks & 64)
i *= 0.65;
return i;
}
int CrossHairMaxSpread (void)
{
int i;
switch(cl.stats[STAT_ACTIVEWEAPON])
{
case W_COLT:
case W_BIATCH:
i = 30;
break;
case W_KAR:
case W_ARMAGEDDON:
i = 75;
break;
case W_THOMPSON:
case W_GIBS:
i = 25;
break;
case W_357:
case W_KILLU:
i = 20;
break;
case W_BAR:
case W_WIDOW:
i = 35;
break;
case W_BROWNING:
case W_ACCELERATOR:
i = 50;
break;
case W_DB:
case W_BORE:
i = 25;
break;
case W_FG:
case W_IMPELLER:
i = 40;
break;
case W_GEWEHR:
case W_COMPRESSOR:
i = 35;
break;
case W_KAR_SCOPE:
case W_HEADCRACKER:
i = 75;
break;
case W_M1:
case W_M1000:
i = 35;
break;
case W_M1A1:
case W_WIDDER:
i = 35;
break;
case W_MP40:
case W_AFTERBURNER:
i = 25;
break;
case W_MG:
case W_BARRACUDA:
i = 50;
break;
case W_PANZER:
case W_LONGINUS:
i = 0;
break;
case W_PPSH:
case W_REAPER:
i = 25;
break;
case W_PTRS:
case W_PENETRATOR:
i = 75;
break;
case W_RAY:
case W_PORTER:
i = 20;
break;
case W_SAWNOFF:
case W_SNUFF:
i = 30;
break;
case W_STG:
case W_SPATZ:
i = 35;
break;
case W_TRENCH:
case W_GUT:
i = 25;
break;
case W_TYPE:
case W_SAMURAI:
i = 25;
break;
case W_MP5:
i = 25;
break;
case W_TESLA:
i = 0;
break;
default:
i = 0;
break;
}
if (cl.perks & 64)
i *= 0.65;
return i;
}
/*
================
Draw_FadeScreen

View file

@ -353,7 +353,6 @@ char *GetPerkName (int perk)
void SCR_UsePrint (int type, int cost, int weapon)
{
//naievil -- fixme
/*
char s[128];
switch (type)
@ -448,7 +447,6 @@ void SCR_UsePrint (int type, int cost, int weapon)
strncpy (scr_usestring, va(s), sizeof(scr_usestring)-1);
scr_usetime_off = 0.1;
*/
}
@ -1193,7 +1191,7 @@ void SCR_UpdateScreen (void)
SCR_DrawPause ();
SCR_CheckDrawCenterString ();
SCR_CheckDrawUseString ();
//HUD_Draw (); // naievil -- fixme
HUD_Draw (); // naievil -- fixme
SCR_DrawConsole ();
M_Draw ();

View file

@ -474,6 +474,11 @@ This clears all the memory used by both the client and server, but does
not reinitialize anything.
================
*/
extern int perk_order[8];
extern int current_perk_order;
extern double Hitmark_Time, crosshair_spread_time;
extern float cur_spread;
extern float crosshair_offset_step;
void Host_ClearMemory (void)
{
Con_DPrintf ("Clearing memory\n");
@ -485,6 +490,20 @@ void Host_ClearMemory (void)
cls.signon = 0;
memset (&sv, 0, sizeof(sv));
memset (&cl, 0, sizeof(cl));
perk_order[0] = 0;
perk_order[1] = 0;
perk_order[2] = 0;
perk_order[3] = 0;
perk_order[4] = 0;
perk_order[5] = 0;
perk_order[6] = 0;
perk_order[7] = 0;
cl.perks = 0;
current_perk_order = 0;
crosshair_spread_time = 0;
crosshair_offset_step = 0;
cur_spread = 0;
Hitmark_Time = 0;
}

View file

@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
typedef float vec_t;
typedef vec_t vec3_t[3];
typedef vec_t vec5_t[5];
typedef vec_t vec2_t[2];
typedef int fixed4_t;
typedef int fixed8_t;

View file

@ -157,6 +157,9 @@ typedef struct
string_t noise1;
string_t noise2;
string_t noise3;
vec3_t ADS_Offset;
string_t Weapon_Name;
string_t Weapon_Name_Touch;
} entvars_t;
#define PROGHEADER_CRC 5927

View file

@ -151,6 +151,73 @@ void VID_UnlockBuffer (void);
#define STAT_WEAPON2FRAME 19
#define STAT_CURRENTMAG2 20
// stock defines
#define W_COLT 1
#define W_KAR 2
#define W_THOMPSON 3
#define W_357 4
#define W_BAR 5
#define W_BK 6
#define W_BROWNING 7
#define W_DB 8
#define W_FG 9
#define W_GEWEHR 10
#define W_KAR_SCOPE 11
#define W_M1 12
#define W_M1A1 13
#define W_M2 14
#define W_MP40 15
#define W_MG 16
#define W_PANZER 17
#define W_PPSH 18
#define W_PTRS 19
#define W_RAY 20
#define W_SAWNOFF 21
#define W_STG 22
#define W_TRENCH 23
#define W_TYPE 24
#define W_BIATCH 28
#define W_KILLU 29 //357
#define W_COMPRESSOR 30 // Gewehr
#define W_M1000 31 //garand
//#define W_KOLLIDER 32
#define W_PORTER 33 // Ray
#define W_WIDDER 34 // M1A1
#define W_FIW 35 //upgraded flamethrower
#define W_ARMAGEDDON 36 //Kar
//#define W_WUNDER 37
#define W_GIBS 38 // thompson
#define W_SAMURAI 39 //Type
#define W_AFTERBURNER 40 //mp40
#define W_SPATZ 41 // stg
#define W_SNUFF 42 // sawn off
#define W_BORE 43 // double barrel
#define W_IMPELLER 44 //fg
#define W_BARRACUDA 45 //mg42
#define W_ACCELERATOR 46 //M1919 browning
#define W_GUT 47 //trench
#define W_REAPER 48 //ppsh
#define W_HEADCRACKER 49 //scoped kar
#define W_LONGINUS 50 //panzer
#define W_PENETRATOR 51 //ptrs
#define W_WIDOW 52 //bar
//#define W_KRAUS 53 //ballistic
#define W_MP5 54
#define W_M14 55
#define W_TESLA 56
#define W_DG3 57 //tesla
#define W_NOWEP 420
//===========================================
#define MAX_SCOREBOARD 16
#define MAX_SCOREBOARDNAME 32
#define SOUND_CHANNELS 8
// stock defines
@ -219,10 +286,6 @@ void VID_UnlockBuffer (void);
//===========================================
#define MAX_SCOREBOARD 16
#define MAX_SCOREBOARDNAME 32
#define SOUND_CHANNELS 8
// This makes anyone on id's net privileged
// Use for multiplayer testing only - VERY dangerous!!!

File diff suppressed because it is too large Load diff

View file

@ -26,7 +26,7 @@ extern byte ramps[3][256];
extern float v_blend[4];
extern cvar_t lcd_x;
extern vec3_t CWeaponRot;
void V_Init (void);
void V_RenderView (void);