From 12cd2832d413bcc6f7527c4a377a576d6df284b0 Mon Sep 17 00:00:00 2001 From: Roman Chistokhodov Date: Tue, 6 Aug 2019 11:58:33 +0300 Subject: [PATCH] Predicted grapple --- cl_dll/hl/hl_weapons.cpp | 5 +++++ dlls/gearbox/grapple.cpp | 25 +++++++++++-------------- dlls/weapons.h | 6 ++++-- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/cl_dll/hl/hl_weapons.cpp b/cl_dll/hl/hl_weapons.cpp index 3997afcf..7af62c2d 100644 --- a/cl_dll/hl/hl_weapons.cpp +++ b/cl_dll/hl/hl_weapons.cpp @@ -76,6 +76,7 @@ CPipeWrench g_PipeWrench; CShockrifle g_Shock; CSniperrifle g_Sniper; CSporelauncher g_Spore; +CBarnacleGrapple g_Grapple; /* ====================== @@ -634,6 +635,7 @@ void HUD_InitClientWeapons( void ) HUD_PrepEntity( &g_Shock, &player ); HUD_PrepEntity( &g_Sniper, &player ); HUD_PrepEntity( &g_Spore, &player ); + HUD_PrepEntity( &g_Grapple, &player ); } /* @@ -766,6 +768,9 @@ void HUD_WeaponsPostThink( local_state_s *from, local_state_s *to, usercmd_t *cm case WEAPON_SPORELAUNCHER: pWeapon = &g_Spore; break; + case WEAPON_GRAPPLE: + pWeapon = &g_Grapple; + break; } // Store pointer to our destination entity_state_t so we can get our origin, etc. from it diff --git a/dlls/gearbox/grapple.cpp b/dlls/gearbox/grapple.cpp index 5d58c76b..530e1130 100644 --- a/dlls/gearbox/grapple.cpp +++ b/dlls/gearbox/grapple.cpp @@ -63,9 +63,6 @@ void CBarnacleGrapple::Precache( void ) PRECACHE_MODEL( "sprites/tongue.spr" ); UTIL_PrecacheOther( "grapple_tip" ); - m_flNextPrimaryAttack = 0; - m_flNextSecondaryAttack = 0; - m_flTimeWeaponIdle = 0; } void CBarnacleGrapple::Spawn( void ) @@ -110,7 +107,7 @@ int CBarnacleGrapple::AddToPlayer( CBasePlayer* pPlayer ) BOOL CBarnacleGrapple::Deploy() { int r = DefaultDeploy("models/v_bgrap.mdl", "models/p_bgrap.mdl", BGRAPPLE_UP, "gauss" ); - m_flTimeWeaponIdle = gpGlobals->time + 1.1; + m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.1; return r; } @@ -128,7 +125,7 @@ void CBarnacleGrapple::WeaponIdle( void ) { ResetEmptySound(); - if( m_flTimeWeaponIdle > gpGlobals->time ) + if( m_flTimeWeaponIdle > UTIL_WeaponTimeBase() ) return; if( m_fireState != OFF ) @@ -146,19 +143,19 @@ void CBarnacleGrapple::WeaponIdle( void ) if( flNextIdle <= 0.5 ) { iAnim = BGRAPPLE_LONGIDLE; - m_flTimeWeaponIdle = gpGlobals->time + 10.0; + m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 10.0; } else if( flNextIdle > 0.95 ) { EMIT_SOUND_DYN( ENT(m_pPlayer->pev), CHAN_STATIC, "weapons/bgrapple_cough.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM ); iAnim = BGRAPPLE_COUGH; - m_flTimeWeaponIdle = gpGlobals->time + 4.6; + m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 4.6; } else { iAnim = BGRAPPLE_BREATHE; - m_flTimeWeaponIdle = gpGlobals->time + 2.566; + m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 2.566; } SendWeaponAnim( iAnim ); @@ -168,7 +165,7 @@ void CBarnacleGrapple::PrimaryAttack( void ) { if( m_bMissed ) { - m_flTimeWeaponIdle = gpGlobals->time + 0.1; + m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.1; return; } @@ -300,7 +297,7 @@ void CBarnacleGrapple::PrimaryAttack( void ) m_pPlayer->m_iWeaponVolume = 450; - m_flTimeWeaponIdle = gpGlobals->time + 0.1; + m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.1; #ifndef CLIENT_DLL if( g_pGameRules->IsMultiplayer() ) { @@ -317,7 +314,7 @@ void CBarnacleGrapple::PrimaryAttack( void ) if( !m_pTip ) { - m_flNextPrimaryAttack = gpGlobals->time + 0.01; + m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.01; return; } @@ -425,7 +422,7 @@ void CBarnacleGrapple::PrimaryAttack( void ) else */ { - m_flNextPrimaryAttack = gpGlobals->time + 0.01; + m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.01; } } @@ -466,9 +463,9 @@ void CBarnacleGrapple::EndAttack( void ) EMIT_SOUND_DYN( ENT( m_pPlayer->pev ), CHAN_WEAPON, "weapons/bgrapple_pull.wav", 0.0, ATTN_NONE, SND_STOP, 100 ); - m_flTimeWeaponIdle = gpGlobals->time + 0.9; + m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.9; - m_flNextPrimaryAttack = gpGlobals->time + 0.01; + m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.01; DestroyEffect(); diff --git a/dlls/weapons.h b/dlls/weapons.h index 3ccf0151..583d0387 100644 --- a/dlls/weapons.h +++ b/dlls/weapons.h @@ -1182,11 +1182,13 @@ public: void DestroyEffect( void ); virtual BOOL UseDecrement(void) { +#if defined( CLIENT_WEAPONS ) + return TRUE; +#else return FALSE; +#endif } - const char* MyWModel() { return "models/w_bgrap.mdl"; } - private: CBarnacleGrappleTip* m_pTip;