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,169 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef TF_WEAPON_BUILDER_H
|
||||
#define TF_WEAPON_BUILDER_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "tf_weaponbase.h"
|
||||
|
||||
class CBaseObject;
|
||||
|
||||
//=========================================================
|
||||
// Builder Weapon
|
||||
//=========================================================
|
||||
class CTFWeaponBuilder : public CTFWeaponBase
|
||||
{
|
||||
DECLARE_CLASS( CTFWeaponBuilder, CTFWeaponBase );
|
||||
public:
|
||||
CTFWeaponBuilder();
|
||||
~CTFWeaponBuilder();
|
||||
|
||||
DECLARE_SERVERCLASS();
|
||||
|
||||
virtual void SetSubType( int iSubType );
|
||||
virtual void SetObjectMode( int iMode ) { m_iObjectMode = iMode; }
|
||||
virtual void Precache( void );
|
||||
virtual bool CanDeploy( void );
|
||||
virtual bool Holster( CBaseCombatWeapon *pSwitchingTo = NULL );
|
||||
virtual void ItemPostFrame( void );
|
||||
virtual void PrimaryAttack( void );
|
||||
virtual void SecondaryAttack( void );
|
||||
virtual void WeaponIdle( void );
|
||||
virtual bool Deploy( void );
|
||||
virtual Activity GetDrawActivity( void );
|
||||
virtual const char *GetViewModel( int iViewModel ) const;
|
||||
virtual const char *GetWorldModel( void ) const;
|
||||
|
||||
virtual bool AllowsAutoSwitchTo( void ) const;
|
||||
|
||||
virtual int GetType( void ) { return m_iObjectType; }
|
||||
|
||||
virtual Activity TranslateViewmodelHandActivity( Activity actBase );
|
||||
|
||||
void SetCurrentState( int iState );
|
||||
void SwitchOwnersWeaponToLast();
|
||||
|
||||
// Placement
|
||||
void StartPlacement( void );
|
||||
void StopPlacement( void );
|
||||
void UpdatePlacementState( void ); // do a check for valid placement
|
||||
bool IsValidPlacement( void ); // is this a valid placement pos?
|
||||
|
||||
|
||||
// Building
|
||||
void StartBuilding( void );
|
||||
|
||||
// Special P Sapper (Wheatley) Item
|
||||
void WheatleySapperIdle( CTFPlayer *pOwner );
|
||||
bool IsWheatleySapper( void );
|
||||
void WheatleyReset( bool bResetIntro = false );
|
||||
void SetWheatleyState( int iNewState );
|
||||
float WheatleyEmitSound( const char *snd , bool bEmitToAll = false, bool bNoRepeats = false );
|
||||
bool IsWheatleyTalking( void );
|
||||
void WheatleyDamage( void );
|
||||
int GetWheatleyIdleWait();
|
||||
|
||||
// Selection
|
||||
bool HasAmmo( void );
|
||||
int GetSlot( void ) const;
|
||||
int GetPosition( void ) const;
|
||||
const char *GetPrintName( void ) const;
|
||||
bool CanBuildObjectType( int iObjectType );
|
||||
void SetObjectTypeAsBuildable( int iObjectType );
|
||||
|
||||
virtual int GetWeaponID( void ) const { return TF_WEAPON_BUILDER; }
|
||||
|
||||
virtual void WeaponReset( void );
|
||||
|
||||
virtual float InternalGetEffectBarRechargeTime( void ) { return 15.0; }
|
||||
virtual int GetEffectBarAmmo( void ) { return TF_AMMO_GRENADES2; }
|
||||
|
||||
public:
|
||||
CNetworkVar( int, m_iBuildState );
|
||||
CNetworkVar( unsigned int, m_iObjectType );
|
||||
CNetworkVar( unsigned int, m_iObjectMode );
|
||||
CNetworkVar( bool, m_bRoboSapper );
|
||||
CNetworkVar( float, m_flWheatleyTalkingUntil );
|
||||
CNetworkArray( bool, m_aBuildableObjectTypes, OBJ_LAST );
|
||||
|
||||
CNetworkHandle( CBaseObject, m_hObjectBeingBuilt );
|
||||
|
||||
int m_iValidBuildPoseParam;
|
||||
|
||||
float m_flNextDenySound;
|
||||
|
||||
// P Sapper (Wheatley)
|
||||
float m_flNextVoicePakIdleStartTime;
|
||||
KeyValues *m_pkvWavList;
|
||||
int m_iSapState;
|
||||
|
||||
float m_flWheatleyLastDamage;
|
||||
float m_flWheatleyLastDeploy;
|
||||
float m_flWheatleyLastHolster;
|
||||
int m_iWheatleyVOSequenceOffset;
|
||||
bool m_bWheatleyIntroPlayed;
|
||||
EHANDLE m_hLastSappedBuilding;
|
||||
Vector m_vLastKnownSapPos;
|
||||
|
||||
private:
|
||||
bool m_bAttack3Down;
|
||||
};
|
||||
|
||||
// P Sapper (Wheatley) States
|
||||
enum
|
||||
{
|
||||
TF_PSAPSTATE_IDLE = 0,
|
||||
TF_PSAPSTATE_WAITINGHACK,
|
||||
TF_PSAPSTATE_WAITINGHACKPW,
|
||||
TF_PSAPSTATE_WAITINGHACKED,
|
||||
TF_PSAPSTATE_WAITINGFOLLOWUP,
|
||||
TF_PSAPSTATE_SPECIALIDLE_KNIFE,
|
||||
TF_PSAPSTATE_SPECIALIDLE_HARMLESS,
|
||||
TF_PSAPSTATE_SPECIALIDLE_HACK,
|
||||
TF_PSAPSTATE_INTRO,
|
||||
};
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
class CTFWeaponSapper : public CTFWeaponBuilder, public ITFChargeUpWeapon
|
||||
{
|
||||
public:
|
||||
DECLARE_CLASS( CTFWeaponSapper, CTFWeaponBuilder );
|
||||
DECLARE_SERVERCLASS();
|
||||
//DECLARE_PREDICTABLE();
|
||||
|
||||
CTFWeaponSapper();
|
||||
|
||||
virtual void ItemPostFrame( void );
|
||||
|
||||
// ITFChargeUpWeapon
|
||||
virtual bool CanCharge( void ) { return GetChargeMaxTime() > 0; }
|
||||
virtual float GetChargeBeginTime( void ) { return m_flChargeBeginTime; }
|
||||
virtual float GetChargeMaxTime( void ) { float flChargeTime = 0; CALL_ATTRIB_HOOK_FLOAT( flChargeTime, sapper_deploy_time ); return flChargeTime; };
|
||||
|
||||
virtual const char *GetViewModel( int iViewModel ) const;
|
||||
virtual const char *GetWorldModel( void ) const;
|
||||
|
||||
virtual Activity TranslateViewmodelHandActivity( Activity actBase );
|
||||
|
||||
private:
|
||||
//float m_flChargeBeginTime;
|
||||
bool m_bAttackDown;
|
||||
|
||||
CNetworkVar( float, m_flChargeBeginTime );
|
||||
};
|
||||
|
||||
#define WHEATLEY_IDLE_WAIT_SECS_MIN 10.0
|
||||
#define WHEATLEY_IDLE_WAIT_SECS_MAX 20.0
|
||||
|
||||
|
||||
#endif // TF_WEAPON_BUILDER_H
|
||||
Reference in New Issue
Block a user