mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-15 05:06:57 +00:00
1
This commit is contained in:
@@ -0,0 +1,185 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef WEAPON_COMBATSHIELD_SHARED_H
|
||||
#define WEAPON_COMBATSHIELD_SHARED_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "basetfcombatweapon_shared.h"
|
||||
|
||||
// Shield States
|
||||
enum
|
||||
{
|
||||
SS_DOWN, // Not in use
|
||||
SS_RAISING, // Going up
|
||||
SS_UP, // Up, active, and blocking
|
||||
SS_LOWERING, // Going down
|
||||
SS_PARRYING, // In the process of parrying
|
||||
SS_PARRYING_FINISH_SWING, // Time to allow the parrying animation to finish
|
||||
SS_UNAVAILABLE, // Post-parry, unavailable for using
|
||||
};
|
||||
|
||||
// Shield Hitboxes
|
||||
enum
|
||||
{
|
||||
SS_HITBOX_NOSHIELD,
|
||||
SS_HITBOX_FULLSHIELD,
|
||||
SS_HITBOX_SMALLSHIELD,
|
||||
};
|
||||
|
||||
// Range of the shield bash
|
||||
#define SHIELD_BASH_RANGE 64.0
|
||||
|
||||
#if defined( CLIENT_DLL )
|
||||
class Beam_t;
|
||||
|
||||
#define CWeaponCombatShield C_WeaponCombatShield
|
||||
#define CWeaponCombatShieldAlien C_WeaponCombatShieldAlien
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Shared version of CWeaponCombatShield
|
||||
//-----------------------------------------------------------------------------
|
||||
class CWeaponCombatShield : public CBaseTFCombatWeapon
|
||||
{
|
||||
DECLARE_CLASS( CWeaponCombatShield, CBaseTFCombatWeapon );
|
||||
public:
|
||||
DECLARE_NETWORKCLASS();
|
||||
DECLARE_PREDICTABLE();
|
||||
|
||||
CWeaponCombatShield();
|
||||
|
||||
virtual void Precache( void );
|
||||
|
||||
virtual bool Deploy( void );
|
||||
virtual bool Holster( CBaseCombatWeapon *pSwitchingTo = NULL );
|
||||
virtual bool TakeShieldBash( CBaseTFPlayer *pBasher );
|
||||
virtual void ItemPostFrame( void );
|
||||
virtual void ItemBusyFrame( void );
|
||||
virtual void ShieldPostFrame( void );
|
||||
virtual void GainedNewTechnology( CBaseTechnology *pTechnology );
|
||||
virtual int UpdateClientData( CBasePlayer *pPlayer );
|
||||
|
||||
void SetShieldState( int iShieldState );
|
||||
void UpdateShieldState( void );
|
||||
int GetShieldState( void );
|
||||
|
||||
void ShieldBash( void );
|
||||
|
||||
void SetAllowPostFrame( bool allow );
|
||||
void SetShieldUsable( bool bUsable );
|
||||
bool ShieldUsable( void );
|
||||
|
||||
// Shield power levels
|
||||
float AttemptToBlock( float flDamage );
|
||||
void ShieldRechargeThink( void );
|
||||
|
||||
virtual bool VisibleInWeaponSelection( void );
|
||||
virtual int GetOtherWeaponsActivity( int iActivity );
|
||||
virtual int ReplaceOtherWeaponsActivity( int iActivity );
|
||||
|
||||
// All predicted weapons need to implement and return true
|
||||
virtual bool IsPredicted( void ) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IsUp( void );
|
||||
float GetRaisingTime( void );
|
||||
float GetLoweringTime( void );
|
||||
|
||||
// Shield health handling
|
||||
float GetShieldHealth( void );
|
||||
void AddShieldHealth( float flHealth );
|
||||
void RemoveShieldHealth( float flHealth );
|
||||
|
||||
#if defined( CLIENT_DLL )
|
||||
virtual void GetViewmodelBoneControllers( CBaseViewModel *pViewModel, float controllers[MAXSTUDIOBONECTRLS]);
|
||||
virtual bool ShouldPredict( void )
|
||||
{
|
||||
if ( GetOwner() &&
|
||||
GetOwner() == C_BasePlayer::GetLocalPlayer() )
|
||||
return true;
|
||||
|
||||
return BaseClass::ShouldPredict();
|
||||
}
|
||||
|
||||
virtual void DrawAmmo( void );
|
||||
virtual void HandleInput( void );
|
||||
|
||||
virtual void ViewModelDrawn( C_BaseViewModel *pViewModel );
|
||||
|
||||
void InitShieldBeam( void );
|
||||
void InitTeslaBeam( void );
|
||||
|
||||
void DrawBeams( C_BaseViewModel *pViewModel );
|
||||
|
||||
#endif
|
||||
|
||||
private:
|
||||
CWeaponCombatShield( const CWeaponCombatShield& );
|
||||
|
||||
CNetworkVar( int, m_iShieldState );
|
||||
|
||||
bool m_bUsable;
|
||||
|
||||
CNetworkVar( float, m_flShieldUpStartTime );
|
||||
CNetworkVar( float, m_flShieldDownStartTime );
|
||||
CNetworkVar( float, m_flShieldParryEndTime );
|
||||
CNetworkVar( float, m_flShieldParrySwingEndTime );
|
||||
CNetworkVar( float, m_flShieldUnavailableEndTime );
|
||||
|
||||
CNetworkVar( float, m_flShieldRaisedTime );
|
||||
CNetworkVar( float, m_flShieldLoweredTime );
|
||||
|
||||
CNetworkVar( float, m_flShieldHealth );
|
||||
|
||||
CNetworkVar( bool, m_bAllowPostFrame );
|
||||
CNetworkVar( bool, m_bHasShieldParry );
|
||||
|
||||
#if defined( CLIENT_DLL )
|
||||
float m_flFlashTimeEnd;
|
||||
|
||||
float m_flTeslaSpeed;
|
||||
float m_flTeslaSkitter;
|
||||
float m_flTeslaLeftInc;
|
||||
float m_flTeslaRightInc;
|
||||
Beam_t *m_pTeslaBeam;
|
||||
Beam_t *m_pTeslaBeam2;
|
||||
CMaterialReference m_hTeslaSpriteMaterial;
|
||||
|
||||
bool m_bLeftToRight;
|
||||
int m_nShieldEdge;
|
||||
float m_flShieldSpeed;
|
||||
float m_flShieldInc;
|
||||
Beam_t *m_pShieldBeam;
|
||||
Beam_t *m_pShieldBeam2;
|
||||
Beam_t *m_pShieldBeam3;
|
||||
CMaterialReference m_hShieldSpriteMaterial;
|
||||
#endif
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Need to do different art on client vs server
|
||||
//-----------------------------------------------------------------------------
|
||||
class CWeaponCombatShieldAlien : public CWeaponCombatShield
|
||||
{
|
||||
DECLARE_CLASS( CWeaponCombatShieldAlien, CWeaponCombatShield );
|
||||
public:
|
||||
DECLARE_NETWORKCLASS();
|
||||
DECLARE_PREDICTABLE();
|
||||
|
||||
CWeaponCombatShieldAlien( void ) {}
|
||||
|
||||
private:
|
||||
CWeaponCombatShieldAlien( const CWeaponCombatShieldAlien & );
|
||||
};
|
||||
|
||||
|
||||
#endif // WEAPON_COMBATSHIELD_SHARED_H
|
||||
Reference in New Issue
Block a user