summaryrefslogtreecommitdiff
path: root/game/shared/tf/tf_weapon_passtime_gun.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/shared/tf/tf_weapon_passtime_gun.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/shared/tf/tf_weapon_passtime_gun.h')
-rw-r--r--game/shared/tf/tf_weapon_passtime_gun.h150
1 files changed, 150 insertions, 0 deletions
diff --git a/game/shared/tf/tf_weapon_passtime_gun.h b/game/shared/tf/tf_weapon_passtime_gun.h
new file mode 100644
index 0000000..27f5457
--- /dev/null
+++ b/game/shared/tf/tf_weapon_passtime_gun.h
@@ -0,0 +1,150 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef TF_WEAPON_PASSTIME_GUN_H
+#define TF_WEAPON_PASSTIME_GUN_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "tf_weaponbase.h"
+
+class CPasstimeBall;
+
+#ifdef CLIENT_DLL
+#define CPasstimeBall C_PasstimeBall
+#define CPasstimeGun C_PasstimeGun
+class C_PasstimeBounceReticle;
+#else
+#include "passtime_ballcontroller_homing.h"
+#endif
+
+
+//-----------------------------------------------------------------------------
+class CPasstimeGun : public CTFWeaponBase, public ITFChargeUpWeapon
+{
+ DECLARE_CLASS( CPasstimeGun, CTFWeaponBase );
+ DECLARE_NETWORKCLASS();
+ DECLARE_PREDICTABLE(); // this has to be here because the client's precache code uses it to get the classname of this entity...
+
+public:
+ CPasstimeGun();
+ ~CPasstimeGun();
+ virtual float GetChargeBeginTime() OVERRIDE;
+ virtual float GetCurrentCharge() OVERRIDE;
+ static bool BValidPassTarget( CTFPlayer *pSource, CTFPlayer *pTarget, HudNotification_t *pReason = 0 );
+
+ struct LaunchParams
+ {
+ Vector eyePos;
+ Vector viewFwd;
+ Vector viewRight;
+ Vector viewUp;
+ Vector traceHullSize;
+ float traceHullDistance;
+ Vector startPos;
+ Vector startDir;
+ Vector startVel;
+ static LaunchParams Default( CTFPlayer *pPlayer );
+ };
+
+ static LaunchParams CalcLaunch( CTFPlayer *pPlayer, bool bHoming );
+
+protected:
+ virtual int GetWeaponID() const OVERRIDE { return TF_WEAPON_PASSTIME_GUN; }
+ virtual void Spawn() OVERRIDE;
+ virtual void Equip( CBaseCombatCharacter *pOwner ) OVERRIDE;
+ virtual void Precache() OVERRIDE;
+ virtual bool CanHolster() const OVERRIDE;
+ virtual bool Holster( CBaseCombatWeapon *pSwitchingTo ) OVERRIDE;
+ virtual void WeaponReset() OVERRIDE;
+ virtual bool CanCharge() OVERRIDE;
+ virtual float GetChargeMaxTime() OVERRIDE;
+ virtual void UpdateOnRemove() OVERRIDE;
+ virtual bool VisibleInWeaponSelection() OVERRIDE;
+ virtual acttable_t* ActivityList(int &iActivityCount) OVERRIDE;
+ virtual void ItemPostFrame() OVERRIDE;
+ virtual void ItemHolsterFrame() OVERRIDE;
+ virtual bool Deploy() OVERRIDE;
+ virtual bool CanDeploy() OVERRIDE;
+ virtual const char *GetWorldModel() const OVERRIDE;
+ virtual bool SendWeaponAnim( int actBase ) OVERRIDE;
+ virtual Activity GetDrawActivity() OVERRIDE { return ACT_BALL_VM_CATCH; }
+
+ // HasPrimaryAmmo, CanBeSelected, IsEnergyWeapon:
+ // these exist to make other code have correct side-effects
+ // search for where these are called to see the specifics.
+ virtual bool HasPrimaryAmmo() OVERRIDE { return true; }
+ virtual bool CanBeSelected() OVERRIDE { return true; }
+ virtual bool IsEnergyWeapon() const OVERRIDE { return true; }
+
+#ifdef CLIENT_DLL
+ virtual void UpdateAttachmentModels() OVERRIDE;
+ virtual void ClientThink() OVERRIDE;
+ void UpdateThrowArch();
+ void DestroyThrowArch();
+ C_PasstimeBounceReticle *m_pBounceReticle;
+#endif
+ void Throw( CTFPlayer *pOwner );
+
+ enum EThrowState
+ {
+ THROWSTATE_IDLE,
+ THROWSTATE_CHARGING,
+ THROWSTATE_CHARGED,
+ THROWSTATE_THROWN,
+ THROWSTATE_CANCELLED,
+ THROWSTATE_DISABLED,
+ };
+
+ enum EButtonState
+ {
+ BUTTONSTATE_UP, // not pressed
+ BUTTONSTATE_PRESSED, // was just pressed and is down
+ BUTTONSTATE_DOWN, // continues to be down
+ BUTTONSTATE_RELEASED, // was just released and is not down
+ BUTTONSTATE_DISABLED, // ignore input
+ };
+
+ struct AttackInputState
+ {
+ AttackInputState( int button )
+ : iButton( button ), eButtonState( BUTTONSTATE_UP )
+ , bLatchedUp( false )
+ {}
+ const int iButton;
+ EButtonState eButtonState;
+ bool bLatchedUp;
+
+ bool Is( EButtonState state ) const { return eButtonState == state; }
+ void Disable() { eButtonState = BUTTONSTATE_DISABLED; }
+ void Enable()
+ {
+ if ( eButtonState == BUTTONSTATE_DISABLED )
+ eButtonState = BUTTONSTATE_UP;
+ }
+ void Update( int held, int pressed, int released );
+ void LatchUp();
+ void UnlatchUp();
+ };
+
+ int m_iHalloweenAttachmentIndex;
+ int m_iAttachmentIndex;
+
+ float m_flTargetResetTime;
+ float m_flThrowLoopStartTime;
+ AttackInputState m_attack, m_attack2;
+ CNetworkVar( EThrowState, m_eThrowState );
+ CNetworkVar( float, m_fChargeBeginTime );
+ CHandle<CBaseCombatWeapon> m_hStoredLastWpn;
+#ifdef GAME_DLL
+ CPasstimeBallControllerHoming m_ballController;
+#endif
+
+};
+
+#endif // TF_WEAPON_PASSTIME_GUN_H