mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-09-01 15:09:19 +00:00
upload "kind" alien swarm
This commit is contained in:
@@ -0,0 +1,166 @@
|
||||
#ifndef _INCLUDED_ASW_WEAPON_H
|
||||
#define _INCLUDED_ASW_WEAPON_H
|
||||
#pragma once
|
||||
|
||||
#include "asw_weapon_shared.h"
|
||||
#include "basecombatweapon_shared.h"
|
||||
#include "iasw_server_usable_entity.h"
|
||||
|
||||
class CASW_Player;
|
||||
class CASW_Marine;
|
||||
class CASW_WeaponInfo;
|
||||
|
||||
class CASW_Weapon : public CBaseCombatWeapon, public IASW_Server_Usable_Entity
|
||||
{
|
||||
public:
|
||||
DECLARE_CLASS( CASW_Weapon, CBaseCombatWeapon );
|
||||
DECLARE_SERVERCLASS();
|
||||
DECLARE_DATADESC();
|
||||
DECLARE_PREDICTABLE();
|
||||
|
||||
CASW_Weapon();
|
||||
virtual ~CASW_Weapon();
|
||||
virtual void Precache();
|
||||
bool DestroyIfEmpty( bool bDestroyWhenActive, bool bCheckSecondaryAmmo=false );
|
||||
|
||||
virtual void ItemPostFrame(void);
|
||||
virtual void ItemBusyFrame(void);
|
||||
virtual const char* GetPickupClass() { return "asw_pickup_rifle"; }
|
||||
|
||||
virtual void SetClip1(int i) { m_iClip1 = i; }
|
||||
virtual void SetClip2(int i) { m_iClip2 = i; }
|
||||
virtual int GetNumPellets() { return 1; } // how many projectiles are fired off per firerate
|
||||
|
||||
int UpdateTransmitState();
|
||||
int ShouldTransmit( const CCheckTransmitInfo *pInfo );
|
||||
|
||||
void DiffPrint( char const *fmt, ... );
|
||||
|
||||
// shared code
|
||||
virtual const char *GetASWShootSound( int iIndex, int &iPitch );
|
||||
virtual void WeaponSound( WeaponSound_t sound_type, float soundtime = 0.0f );
|
||||
virtual void PrimaryAttack(void);
|
||||
virtual void SecondaryAttack();
|
||||
virtual bool SecondaryAttackUsesPrimaryAmmo() { return false; }
|
||||
virtual bool IsPredicted( void ) const;
|
||||
void PlaySoundDirectlyToOwner( const char *szSoundName );
|
||||
void PlaySoundToOthers( const char *szSoundName );
|
||||
|
||||
virtual float GetFireRate( void );
|
||||
virtual bool HasAmmo();
|
||||
virtual bool PrimaryAmmoLoaded( void );
|
||||
|
||||
virtual int LookupAttachment( const char *pAttachmentName );
|
||||
virtual bool ShouldMarineMoveSlow(); // is the weapon in slow mode (when firing or reloading)
|
||||
virtual float GetMovementScale(); // get overall current movement scale (incorporates slowdown from heavy weapons, reloading, firing)
|
||||
virtual float GetTurnRateModifier();
|
||||
virtual float GetMadFiringBias() { return 1.0f; } // scales the rate at which the mad firing counter goes up when we shoot aliens with this weapon
|
||||
virtual void OnStoppedFiring();
|
||||
virtual void OnStartedRoll();
|
||||
virtual bool IsFiring();// const;
|
||||
virtual void ClearIsFiring();
|
||||
virtual void GetButtons(bool& bAttack1, bool& bAttack2, bool& bReload, bool& bOldReload, bool& bOldAttack1 );
|
||||
bool Holster( CBaseCombatWeapon *pSwitchingTo );
|
||||
virtual void Equip(CBaseCombatCharacter *pOwner);
|
||||
virtual void SetWeaponVisible( bool visible );
|
||||
virtual void ApplyWeaponSwitchTime();
|
||||
CNetworkVar(bool, m_bSwitchingWeapons);
|
||||
virtual void SendWeaponSwitchEvents();
|
||||
virtual const float GetAutoAimAmount();
|
||||
virtual const float GetVerticalAdjustOnlyAutoAimAmount();
|
||||
virtual void MarineDropped(CASW_Marine* pMarine);
|
||||
virtual bool ASWCanBeSelected() { return true; }
|
||||
virtual bool ShouldFlareAutoaim() { return false; }
|
||||
virtual int GetEquipmentListIndex() { return m_iEquipmentListIndex; }
|
||||
const CASW_WeaponInfo* GetWeaponInfo() const;
|
||||
virtual bool OffhandActivate() { return false; };
|
||||
virtual bool WantsOffhandPostFrame() { return m_bShotDelayed; }
|
||||
virtual bool SendWeaponAnim( int iActivity );
|
||||
virtual int WeaponRangeAttack1Condition( float flDot, float flDist );
|
||||
virtual bool IsOffensiveWeapon() { return true; } // is this weapon an offensive gun type weapon (as opposed to a utility item)
|
||||
virtual bool IsRapidFire() { return true; }
|
||||
virtual int AmmoClickPoint(); // when this many rounds or less left in the gun, it will click when firing
|
||||
virtual void LowAmmoSound();
|
||||
virtual int ASW_SelectWeaponActivity(int idealActivity);
|
||||
virtual bool SupportsBayonet();
|
||||
virtual float GetWeaponDamage();
|
||||
virtual bool ShouldAlienFlinch(CBaseEntity *pEntity, const CTakeDamageInfo &info);
|
||||
virtual bool AllowsAutoSwitchFrom( void ) const;
|
||||
virtual bool WeaponLOSCondition( const Vector &ownerPos, const Vector &targetPos, bool bSetConditions );
|
||||
virtual bool CanDoForcedAction( int iForcedAction ) { return true; } // check if we're allowed to perform a forced action (certain abilities limit this)
|
||||
virtual float GetPassiveMeleeDamageScale() { return 1.0f; }
|
||||
|
||||
CNetworkVar(bool, m_bIsFiring);
|
||||
|
||||
CASW_Player* GetCommander();
|
||||
CASW_Marine* GetMarine();
|
||||
virtual void OnMarineDamage(const CTakeDamageInfo &info) { } // marine was hurt when holding this weapon
|
||||
|
||||
// delayed firing (flares, hand grenades, etc.)
|
||||
virtual void DelayedAttack() { }
|
||||
virtual float GetThrowGravity() { return 1.0f; }
|
||||
bool m_bShotDelayed;
|
||||
float m_flDelayedFire;
|
||||
|
||||
// powerups
|
||||
void MakePoweredUp( bool bPoweredUp ) { m_bPoweredUp = bPoweredUp; }
|
||||
CNetworkVar(bool, m_bPoweredUp);
|
||||
|
||||
// reloading
|
||||
virtual float GetReloadTime();
|
||||
virtual float GetReloadFailTime();
|
||||
virtual bool Reload();
|
||||
virtual bool ASWReload( int iClipSize1, int iClipSize2, int iActivity );
|
||||
virtual void SendReloadEvents();
|
||||
bool ReloadOrSwitchWeapons(void);
|
||||
bool IsReloading() const;
|
||||
virtual void FinishReload( void );
|
||||
float m_fReloadClearFiringTime;
|
||||
float m_flReloadFailTime; // time from when you fail an active reload until you can shoot again
|
||||
// fast reload
|
||||
CNetworkVar(float, m_fReloadStart);
|
||||
CNetworkVar(float, m_fFastReloadStart);
|
||||
CNetworkVar(float, m_fFastReloadEnd);
|
||||
CNetworkVar(bool, m_bFastReloadSuccess);
|
||||
CNetworkVar(bool, m_bFastReloadFailure);
|
||||
|
||||
IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_iClip1 );
|
||||
IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_iClip2 );
|
||||
IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_iPrimaryAmmoType );
|
||||
IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_iSecondaryAmmoType );
|
||||
IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_flNextPrimaryAttack );
|
||||
IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_flNextSecondaryAttack );
|
||||
IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_nNextThinkTick );
|
||||
IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_flTimeWeaponIdle );
|
||||
|
||||
// effects
|
||||
virtual const char* GetUTracerType();
|
||||
|
||||
virtual void Spawn();
|
||||
virtual void UpdateOnRemove();
|
||||
|
||||
// Functions for weapons on the ground
|
||||
virtual void Drop( const Vector &vecVelocity );
|
||||
virtual bool AllowedToPickup(CASW_Marine *pMarine);
|
||||
bool IsBeingCarried() const;
|
||||
bool IsCarriedByLocalPlayer();
|
||||
|
||||
// check if this weapon wants to perform a sync kill
|
||||
virtual bool CheckSyncKill( byte &forced_action, short &sync_kill_ent ) { return false; }
|
||||
|
||||
// IASW_Server_Usable_Entity implementation
|
||||
virtual CBaseEntity* GetEntity() { return this; }
|
||||
virtual bool IsUsable(CBaseEntity *pUser);
|
||||
virtual bool RequirementsMet( CBaseEntity *pUser ) { return true; }
|
||||
virtual void ActivateUseIcon( CASW_Marine* pMarine, int nHoldType );
|
||||
virtual void MarineUsing(CASW_Marine* pMarine, float deltatime) { }
|
||||
virtual void MarineStartedUsing(CASW_Marine* pMarine) { }
|
||||
virtual void MarineStoppedUsing(CASW_Marine* pMarine) { }
|
||||
virtual bool NeedsLOSCheck() { return true; }
|
||||
|
||||
protected:
|
||||
int m_iEquipmentListIndex;
|
||||
};
|
||||
|
||||
|
||||
#endif /* _INCLUDED_ASW_WEAPON_H */
|
||||
Reference in New Issue
Block a user