2024-12-21 10:04:04 +08:00
|
|
|
|
#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;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20>ִ<EFBFBD> Ÿ<><C5B8> Ÿ<>Ե<EFBFBD><D4B5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ȭ<EFBFBD><C8AD> <20><><EFBFBD>ؼ<EFBFBD> hitsignal <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> üũ<C3BC><C5A9> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
|
|
|
|
|
|
m_SkillComponent.ApplyStateBlowsToTheseTargets( m_hMonster, vlHittedActors, pStruct );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// CDnWorldBrokenProp::OnSignal( Type, pPtr, LocalTime, SignalStartTime, SignalEndTime, nSignalIndex );
|
|
|
|
|
|
|
|
|
|
|
|
}
|