DragonNest/Server/DNGameServer/DnWorldHitStateEffectProp.cpp

90 lines
5.3 KiB
C++
Raw Normal View History

2024-12-20 16:56:44 +08:00
<EFBFBD><EFBFBD>#include "StdAfx.h"
#include "DnWorldHitStateEffectProp.h"
CDnWorldHitStateEffectProp::CDnWorldHitStateEffectProp( CMultiRoom* pRoom ) : CDnWorldActProp( pRoom ),
CDnDamageBase( DamageObjectTypeEnum::Prop )
//,m_pFSM( new TDnFiniteStateMachine<DnPropHandle>(GetMySmartPtr()) )
{
}
CDnWorldHitStateEffectProp::~CDnWorldHitStateEffectProp(void)
{
//SAFE_DELETE( m_pFSM );
ReleasePostCustomParam();
}
bool CDnWorldHitStateEffectProp::Initialize( CEtWorldSector *pParentSector, const char *szPropName, EtVector3 &vPos, EtVector3 &vRotate, EtVector3 &vScale )
{
if( CDnWorldActProp::Initialize( pParentSector, szPropName, vPos, vRotate, vScale ) == false )
return false;
if( m_hMonster )
*m_hMonster->GetMatEx() = *GetMatEx();
return true;
}
bool CDnWorldHitStateEffectProp::InitializeTable( int nTableID )
{
if( CDnWorldActProp::InitializeTable( nTableID ) == false )
return false;
if( GetData() )
{
HitStateEffectStruct *pStruct = static_cast< HitStateEffectStruct * >( GetData() );
#ifdef PER_ADD_PROP_TRAP_DIFFICULT_SET
bool bResult = InitializeMonsterActorProp( pStruct->MonsterTableID, pStruct->MonsterWeight );
#else
bool bResult = InitializeMonsterActorProp( pStruct->MonsterTableID );
#endif
if( bResult )
{
// Skill Component.
if( 0 != pStruct->SkillTableID )
m_SkillComponent.Initialize( pStruct->SkillTableID, pStruct->SkillLevel );
// HitComponent.
m_HitComponent.Initialize( m_hMonster, &m_Cross, GetMySmartPtr(), this );
// FSM.
// CDnPropState * pNormalState = CDnPropState::Create( GetMySmartPtr(), CDnPropState::NORMAL );
}
else
return false;
}
return true;
}
void CDnWorldHitStateEffectProp::OnSignal( SignalTypeEnum Type, void *pPtr, LOCAL_TIME LocalTime, LOCAL_TIME SignalStartTime, LOCAL_TIME SignalEndTime, int nSignalIndex )
{
/*if( m_hMonster )
{
*(m_hMonster->GetMatEx()) = m_Cross;
m_SkillComponent.OnSignal( m_hMonster, GetMySmartPtr(), type, pPtr, LocalTime, SignalStartTime, SignalEndTime, nSignalIndex );
}*/
if( m_hMonster )
{
DNVector(DnActorHandle) vlHittedActors;
m_HitComponent.OnSignal( Type, pPtr, LocalTime, SignalStartTime, SignalEndTime, nSignalIndex, &vlHittedActors );
if( false == vlHittedActors.empty() )
{
HitStruct * pStruct = (HitStruct *)pPtr;
// Ս<EFBFBD><EFBFBD><EFBFBD> ȩ<EFBFBD> <EFBFBD> L<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>¬<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ǔ<EFBFBD> <EFBFBD>П<EFBFBD> <EFBFBD>Ѕ<EFBFBD><EFBFBD><EFBFBD>@<EFBFBD> 4<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD><EFBFBD> <EFBFBD>(<EFBFBD>X<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>T<EFBFBD>|<EFBFBD> <EFBFBD>t<EFBFBD><EFBFBD> hitsignal D<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <EFBFBD>¬<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>l<EFBFBD>|<EFBFBD> 0<EFBFBD>\<EFBFBD> X<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>.
m_SkillComponent.ApplyStateBlowsToTheseTargets( m_hMonster, vlHittedActors, pStruct );
}
}
// CDnWorldBrokenProp::OnSignal( Type, pPtr, LocalTime, SignalStartTime, SignalEndTime, nSignalIndex );
}