mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-07 17:29:36 +00:00
1
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#include "cbase.h"
|
||||
#include "citadel_effects_shared.h"
|
||||
|
||||
// memdbgon must be the last include file in a .cpp file!!!
|
||||
#include "tier0/memdbgon.h"
|
||||
|
||||
LINK_ENTITY_TO_CLASS( env_citadel_energy_core, CCitadelEnergyCore );
|
||||
|
||||
BEGIN_DATADESC( CCitadelEnergyCore )
|
||||
DEFINE_KEYFIELD( m_flScale, FIELD_FLOAT, "scale" ),
|
||||
DEFINE_FIELD( m_nState, FIELD_INTEGER ),
|
||||
DEFINE_FIELD( m_flDuration, FIELD_FLOAT ),
|
||||
DEFINE_FIELD( m_flStartTime, FIELD_TIME ),
|
||||
|
||||
DEFINE_INPUTFUNC( FIELD_FLOAT, "StartCharge", InputStartCharge ),
|
||||
DEFINE_INPUTFUNC( FIELD_VOID, "StartDischarge", InputStartDischarge ),
|
||||
DEFINE_INPUTFUNC( FIELD_FLOAT, "Stop", InputStop ),
|
||||
END_DATADESC()
|
||||
|
||||
IMPLEMENT_SERVERCLASS_ST( CCitadelEnergyCore, DT_CitadelEnergyCore )
|
||||
SendPropFloat( SENDINFO(m_flScale), 0, SPROP_NOSCALE),
|
||||
SendPropInt( SENDINFO(m_nState), 8, SPROP_UNSIGNED),
|
||||
SendPropFloat( SENDINFO(m_flDuration), 0, SPROP_NOSCALE),
|
||||
SendPropFloat( SENDINFO(m_flStartTime), 0, SPROP_NOSCALE),
|
||||
SendPropInt( SENDINFO(m_spawnflags), 0, SPROP_UNSIGNED),
|
||||
END_SEND_TABLE()
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Precache:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CCitadelEnergyCore::Precache()
|
||||
{
|
||||
BaseClass::Precache();
|
||||
PrecacheMaterial( "effects/combinemuzzle2_dark" );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CCitadelEnergyCore::Spawn( void )
|
||||
{
|
||||
Precache();
|
||||
|
||||
UTIL_SetSize( this, Vector( -8, -8, -8 ), Vector( 8, 8, 8 ) );
|
||||
|
||||
// See if we start active
|
||||
if ( HasSpawnFlags( SF_ENERGYCORE_START_ON ) )
|
||||
{
|
||||
m_nState = (int)ENERGYCORE_STATE_DISCHARGING;
|
||||
m_flStartTime = gpGlobals->curtime;
|
||||
}
|
||||
|
||||
// No model but we still need to force this!
|
||||
AddEFlags( EFL_FORCE_CHECK_TRANSMIT );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : flWarmUpTime -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CCitadelEnergyCore::StartCharge( float flWarmUpTime )
|
||||
{
|
||||
m_nState = (int)ENERGYCORE_STATE_CHARGING;
|
||||
m_flDuration = flWarmUpTime;
|
||||
m_flStartTime = gpGlobals->curtime;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
//-----------------------------------------------------------------------------
|
||||
void CCitadelEnergyCore::StartDischarge( void )
|
||||
{
|
||||
m_nState = (int)ENERGYCORE_STATE_DISCHARGING;
|
||||
m_flStartTime = gpGlobals->curtime;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : flCoolDownTime -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CCitadelEnergyCore::StopDischarge( float flCoolDownTime )
|
||||
{
|
||||
m_nState = (int)ENERGYCORE_STATE_OFF;
|
||||
m_flDuration = flCoolDownTime;
|
||||
m_flStartTime = gpGlobals->curtime;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : &inputdata -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CCitadelEnergyCore::InputStartCharge( inputdata_t &inputdata )
|
||||
{
|
||||
StartCharge( inputdata.value.Float() );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : &inputdata -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CCitadelEnergyCore::InputStartDischarge( inputdata_t &inputdata )
|
||||
{
|
||||
StartDischarge();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose:
|
||||
// Input : &inputdata -
|
||||
//-----------------------------------------------------------------------------
|
||||
void CCitadelEnergyCore::InputStop( inputdata_t &inputdata )
|
||||
{
|
||||
StopDischarge( inputdata.value.Float() );
|
||||
}
|
||||
|
||||
CBaseViewModel *IsViewModelMoveParent( CBaseEntity *pEffect )
|
||||
{
|
||||
if ( pEffect->GetMoveParent() )
|
||||
{
|
||||
CBaseViewModel *pViewModel = dynamic_cast<CBaseViewModel *>( pEffect->GetMoveParent() );
|
||||
|
||||
if ( pViewModel )
|
||||
{
|
||||
return pViewModel;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int CCitadelEnergyCore::UpdateTransmitState( void )
|
||||
{
|
||||
if ( IsViewModelMoveParent( this ) )
|
||||
{
|
||||
return SetTransmitState( FL_EDICT_FULLCHECK );
|
||||
}
|
||||
|
||||
return BaseClass::UpdateTransmitState();
|
||||
}
|
||||
|
||||
int CCitadelEnergyCore::ShouldTransmit( const CCheckTransmitInfo *pInfo )
|
||||
{
|
||||
CBaseViewModel *pViewModel = IsViewModelMoveParent( this );
|
||||
|
||||
if ( pViewModel )
|
||||
{
|
||||
return pViewModel->ShouldTransmit( pInfo );
|
||||
}
|
||||
|
||||
return BaseClass::ShouldTransmit( pInfo );
|
||||
}
|
||||
Reference in New Issue
Block a user