79 lines
2.0 KiB
C++
79 lines
2.0 KiB
C++
#include "cbase.h"
|
|
#include "asw_marine_resource.h"
|
|
#include "asw_marine_profile.h"
|
|
#include "asw_player.h"
|
|
#include "asw_marine.h"
|
|
#include "asw_hack.h"
|
|
|
|
// memdbgon must be the last include file in a .cpp file!!!
|
|
#include "tier0/memdbgon.h"
|
|
|
|
IMPLEMENT_SERVERCLASS_ST(CASW_Hack, DT_ASW_Hack)
|
|
SendPropEHandle (SENDINFO(m_hHackerMarineResource) ),
|
|
SendPropEHandle (SENDINFO(m_hHackTarget) ),
|
|
SendPropInt (SENDINFO(m_iShowOption)),
|
|
END_SEND_TABLE()
|
|
|
|
|
|
//---------------------------------------------------------
|
|
// Save/Restore
|
|
//---------------------------------------------------------
|
|
BEGIN_DATADESC( CASW_Hack )
|
|
DEFINE_FIELD( m_hHackerMarineResource, FIELD_EHANDLE ),
|
|
DEFINE_FIELD( m_hHackTarget, FIELD_EHANDLE ),
|
|
DEFINE_FIELD( m_hHackingPlayer, FIELD_EHANDLE ),
|
|
DEFINE_FIELD( m_hHackingMarine, FIELD_EHANDLE ),
|
|
END_DATADESC()
|
|
|
|
|
|
CASW_Hack::CASW_Hack()
|
|
{
|
|
}
|
|
|
|
bool CASW_Hack::InitHack(CASW_Player* pHackingPlayer, CASW_Marine* pHackingMarine, CBaseEntity* pHackTarget)
|
|
{
|
|
AddEFlags( EFL_FORCE_CHECK_TRANSMIT );
|
|
|
|
if (!pHackingPlayer || !pHackingMarine || !pHackTarget || !pHackingMarine->GetMarineResource())
|
|
{
|
|
return false;
|
|
}
|
|
|
|
m_hHackingPlayer = pHackingPlayer;
|
|
m_hHackingMarine = pHackingMarine;
|
|
m_hHackTarget = pHackTarget;
|
|
m_hHackerMarineResource = pHackingMarine->GetMarineResource();
|
|
pHackingMarine->m_hCurrentHack = this;
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
int CASW_Hack::UpdateTransmitState()
|
|
{
|
|
// ALWAYS transmit to all clients.
|
|
return SetTransmitState( FL_EDICT_ALWAYS );
|
|
}
|
|
|
|
CASW_Player* CASW_Hack::GetHackingPlayer()
|
|
{
|
|
return dynamic_cast<CASW_Player*>(m_hHackingPlayer.Get());
|
|
}
|
|
|
|
CASW_Marine* CASW_Hack::GetHackingMarine()
|
|
{
|
|
return dynamic_cast<CASW_Marine*>(m_hHackingMarine.Get());
|
|
}
|
|
|
|
|
|
void CASW_Hack::MarineStoppedUsing(CASW_Marine* pMarine)
|
|
{
|
|
if (pMarine->m_hCurrentHack.Get() == this)
|
|
{
|
|
pMarine->m_hCurrentHack = NULL;
|
|
}
|
|
// finish hacking
|
|
m_hHackingMarine = NULL;
|
|
m_hHackingPlayer = NULL;
|
|
m_hHackerMarineResource = NULL;
|
|
} |