You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.4 KiB
123 lines
3.4 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
#include "cbase.h" |
|
#include "ai_basenpc.h" |
|
#include "animation.h" |
|
#include "vstdlib/random.h" |
|
#include "h_cycler.h" |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CCycler_TF2Commando : public CCycler |
|
{ |
|
DECLARE_CLASS( CCycler_TF2Commando, CCycler ); |
|
public: |
|
DECLARE_DATADESC(); |
|
DECLARE_SERVERCLASS(); |
|
|
|
virtual void Spawn( void ); |
|
virtual void Think( void ); |
|
|
|
// Inputs |
|
void InputRaiseShield( inputdata_t &inputdata ); |
|
void InputLowerShield( inputdata_t &inputdata ); |
|
|
|
private: |
|
CNetworkVar( bool, m_bShieldActive ); |
|
CNetworkVar( float, m_flShieldRaiseTime ); |
|
CNetworkVar( float, m_flShieldLowerTime ); |
|
}; |
|
|
|
IMPLEMENT_SERVERCLASS_ST(CCycler_TF2Commando, DT_Cycler_TF2Commando) |
|
SendPropInt (SENDINFO(m_bShieldActive), 1, SPROP_UNSIGNED ), |
|
SendPropFloat(SENDINFO(m_flShieldRaiseTime), 0, SPROP_NOSCALE ), |
|
SendPropFloat(SENDINFO(m_flShieldLowerTime), 0, SPROP_NOSCALE ), |
|
END_SEND_TABLE(); |
|
|
|
LINK_ENTITY_TO_CLASS( cycler_tf2commando, CCycler_TF2Commando ); |
|
LINK_ENTITY_TO_CLASS( cycler_aliencommando, CCycler_TF2Commando ); |
|
|
|
BEGIN_DATADESC( CCycler_TF2Commando ) |
|
|
|
// Inputs |
|
DEFINE_INPUTFUNC( FIELD_VOID, "RaiseShield", InputRaiseShield ), |
|
DEFINE_INPUTFUNC( FIELD_VOID, "LowerShield", InputLowerShield ), |
|
|
|
END_DATADESC() |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CCycler_TF2Commando::Spawn( void ) |
|
{ |
|
if (GetTeamNumber() == 1) |
|
{ |
|
GenericCyclerSpawn( "models/player/human_commando.mdl", Vector(-16, -16, 0), Vector(16, 16, 72) ); |
|
} |
|
else |
|
{ |
|
GenericCyclerSpawn( "models/player/alien_commando.mdl", Vector(-16, -16, 0), Vector(16, 16, 72) ); |
|
} |
|
|
|
m_bShieldActive = false; |
|
|
|
BaseClass::Spawn(); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CCycler_TF2Commando::Think( void ) |
|
{ |
|
// Change sequence |
|
if ( IsSequenceFinished() ) |
|
{ |
|
// Raising our shield? |
|
if ( m_bShieldActive ) |
|
{ |
|
ResetSequence( LookupSequence( "ShieldUpIdle" ) ); |
|
} |
|
else if ( GetSequence() == LookupSequence( "ShieldDown" ) ) |
|
{ |
|
ResetSequence( LookupSequence( "Idle" ) ); |
|
} |
|
} |
|
|
|
SetNextThink( gpGlobals->curtime + 0.1f ); |
|
|
|
if (m_animate) |
|
{ |
|
StudioFrameAdvance ( ); |
|
} |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Input that raises the cycler's shield |
|
//----------------------------------------------------------------------------- |
|
void CCycler_TF2Commando::InputRaiseShield( inputdata_t &inputdata ) |
|
{ |
|
if (m_animate) |
|
{ |
|
m_bShieldActive = true; |
|
ResetSequence( LookupSequence( "ShieldUp" ) ); |
|
m_flShieldRaiseTime = gpGlobals->curtime; |
|
} |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Input that lowers the cycler's shield |
|
//----------------------------------------------------------------------------- |
|
void CCycler_TF2Commando::InputLowerShield( inputdata_t &inputdata ) |
|
{ |
|
if (m_animate) |
|
{ |
|
m_bShieldActive = false; |
|
ResetSequence( LookupSequence( "ShieldDown" ) ); |
|
m_flShieldLowerTime = gpGlobals->curtime; |
|
} |
|
} |
|
|
|
|