mirror of
https://github.com/nzp-team/glquake.git
synced 2025-04-22 09:31:18 +00:00
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:
parent
83efa9ef1a
commit
b6405841b9
13 changed files with 1223 additions and 209 deletions
BIN
nzportable.3dsx
BIN
nzportable.3dsx
Binary file not shown.
BIN
nzportable.elf
BIN
nzportable.elf
Binary file not shown.
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
252
source/gl_draw.c
252
source/gl_draw.c
|
@ -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
|
||||
|
|
|
@ -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 ();
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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!!!
|
||||
|
|
1034
source/view.c
1034
source/view.c
File diff suppressed because it is too large
Load diff
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue