mirror of
https://github.com/nillerusr/source-engine.git
synced 2025-01-10 01:16:47 +00:00
130 lines
3.5 KiB
C++
130 lines
3.5 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose: Entity that propagates general data needed by clients for non-player AI characters
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
|
|
#include "cbase.h"
|
|
#include "player.h"
|
|
#include "monster_resource.h"
|
|
#include <coordsize.h>
|
|
|
|
// memdbgon must be the last include file in a .cpp file!!!
|
|
#include "tier0/memdbgon.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
IMPLEMENT_SERVERCLASS_ST_NOBASE( CMonsterResource, DT_MonsterResource )
|
|
|
|
SendPropInt( SENDINFO( m_iBossHealthPercentageByte ), 8, SPROP_UNSIGNED ),
|
|
SendPropInt( SENDINFO( m_iBossStunPercentageByte ), 8, SPROP_UNSIGNED ),
|
|
|
|
SendPropInt( SENDINFO( m_iSkillShotCompleteCount ), 3, SPROP_UNSIGNED ),
|
|
SendPropTime( SENDINFO( m_fSkillShotComboEndTime ) ),
|
|
|
|
SendPropInt( SENDINFO( m_iBossState ) ),
|
|
|
|
END_SEND_TABLE()
|
|
|
|
|
|
BEGIN_DATADESC( CMonsterResource )
|
|
|
|
DEFINE_FIELD( m_iBossHealthPercentageByte, FIELD_INTEGER ),
|
|
DEFINE_FIELD( m_iBossStunPercentageByte, FIELD_INTEGER ),
|
|
|
|
DEFINE_FIELD( m_iSkillShotCompleteCount, FIELD_INTEGER ),
|
|
DEFINE_FIELD( m_fSkillShotComboEndTime, FIELD_TIME ),
|
|
|
|
// Function Pointers
|
|
DEFINE_FUNCTION( Update ),
|
|
|
|
END_DATADESC()
|
|
|
|
LINK_ENTITY_TO_CLASS( monster_resource, CMonsterResource );
|
|
|
|
CMonsterResource *g_pMonsterResource = NULL;
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void CMonsterResource::Spawn( void )
|
|
{
|
|
SetThink( &CMonsterResource::Update );
|
|
SetNextThink( gpGlobals->curtime );
|
|
|
|
m_iBossHealthPercentageByte = 0;
|
|
m_iBossStunPercentageByte = 0;
|
|
m_iSkillShotCompleteCount = 0;
|
|
m_fSkillShotComboEndTime = 0;
|
|
m_iBossState = 0;
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
//
|
|
// The Player resource is always transmitted to clients
|
|
//
|
|
int CMonsterResource::UpdateTransmitState( void )
|
|
{
|
|
// ALWAYS transmit to all clients.
|
|
return SetTransmitState( FL_EDICT_ALWAYS );
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void CMonsterResource::Update( void )
|
|
{
|
|
SetNextThink( gpGlobals->curtime + 0.1f );
|
|
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void CMonsterResource::SetBossHealthPercentage( float percentFull )
|
|
{
|
|
m_iBossHealthPercentageByte = 255.0f * percentFull;
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void CMonsterResource::HideBossHealthMeter( void )
|
|
{
|
|
m_iBossHealthPercentageByte = 0;
|
|
m_iBossStunPercentageByte = 0;
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void CMonsterResource::SetBossStunPercentage( float percentFull )
|
|
{
|
|
m_iBossStunPercentageByte = 255.0f * percentFull;
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void CMonsterResource::HideBossStunMeter( void )
|
|
{
|
|
m_iBossStunPercentageByte = 0;
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void CMonsterResource::StartSkillShotComboMeter( float comboMaxDuration )
|
|
{
|
|
m_fSkillShotComboEndTime = gpGlobals->curtime + comboMaxDuration;
|
|
m_iSkillShotCompleteCount = 1;
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void CMonsterResource::IncrementSkillShotComboMeter( void )
|
|
{
|
|
m_iSkillShotCompleteCount = m_iSkillShotCompleteCount + 1;
|
|
}
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void CMonsterResource::HideSkillShotComboMeter( void )
|
|
{
|
|
m_iSkillShotCompleteCount = 0;
|
|
}
|