189 lines
5.4 KiB
C++
189 lines
5.4 KiB
C++
|
|
#include "StdAfx.h"
|
|||
|
|
#include "DnChangeActionSetBlow.h"
|
|||
|
|
#include "IDnSkillProcessor.h"
|
|||
|
|
#include "DnChangeActionStrProcessor.h"
|
|||
|
|
#include "DnApplySEWhenActionSetBlowEnabledProcessor.h"
|
|||
|
|
|
|||
|
|
#ifdef _DEBUG
|
|||
|
|
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
|
|||
|
|
CDnChangeActionSetBlow::CDnChangeActionSetBlow( DnActorHandle hActor, const char* szValue ) : CDnBlow( hActor ),
|
|||
|
|
m_pChangeActionStrProcessor( NULL ),
|
|||
|
|
m_bEnable( false ),
|
|||
|
|
m_bChangedActionBegun( false )
|
|||
|
|
{
|
|||
|
|
m_StateBlow.emBlowIndex = STATE_BLOW::BLOW_129;
|
|||
|
|
|
|||
|
|
_ASSERT( strlen(szValue) < STATE_BLOW_ARGUMENT_MAX_SIZE );
|
|||
|
|
SetValue( szValue );
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD> Ư<><C6AF> <20><EFBFBD><D7BC><EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20>ٲٵ<D9B2><D9B5><EFBFBD> <20>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>..
|
|||
|
|
// <20>ش<EFBFBD> <20><EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20>Ƶд<C6B5>.
|
|||
|
|
// <20><> <20><EFBFBD><D7BC><EFBFBD> <20><><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><>ü<EFBFBD><C3BC> CDnActor::SetActionQueue() <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> <20>Ͼ<CFBE><EEB3AD>.
|
|||
|
|
if( 0 < strlen(szValue) && (strcmp(szValue, "0") != 0) )
|
|||
|
|
m_strTriggerAction.assign( szValue );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CDnChangeActionSetBlow::~CDnChangeActionSetBlow(void)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnChangeActionSetBlow::OnBegin( LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID );
|
|||
|
|
m_bEnable = false;
|
|||
|
|
m_strCancleAction.clear();
|
|||
|
|
_ASSERT( hParentSkill );
|
|||
|
|
if( hParentSkill )
|
|||
|
|
{
|
|||
|
|
m_pChangeActionStrProcessor = static_cast<CDnChangeActionStrProcessor*>( hParentSkill->GetProcessor( IDnSkillProcessor::CHANGE_ACTIONSTR ) );
|
|||
|
|
OutputDebug( "CDnChangeActionSetBlow::OnBegin\n" );
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
SetState( STATE_BLOW::STATE_END );
|
|||
|
|
OutputDebug( "CDnChangeActionSetBlow::OnBegin Fail!! Can't find Parent Skill Object!!\n" );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CDnChangeActionSetBlow::Process( LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
CDnBlow::Process( LocalTime, fDelta );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CDnChangeActionSetBlow::OnEnd( LOCAL_TIME LocalTime, float fDelta )
|
|||
|
|
{
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
// #35037 <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ٷ<EFBFBD> <20>ο<EFBFBD><CEBF><EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD>.
|
|||
|
|
OnNotChangeAction();
|
|||
|
|
#endif // _GAMESERVER
|
|||
|
|
OutputDebug( "CDnChangeActionSetBlow::OnEnd\n" );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CDnChangeActionStrProcessor* CDnChangeActionSetBlow::GetChangeActionStrProcessor( void )
|
|||
|
|
{
|
|||
|
|
if( m_bEnable )
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><EFBFBD><DFBB>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ǽ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>.
|
|||
|
|
CDnChangeActionStrProcessor* pProcessor = NULL;
|
|||
|
|
if( m_ParentSkillInfo.hSkillUser )
|
|||
|
|
{
|
|||
|
|
DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID );
|
|||
|
|
if( hParentSkill )
|
|||
|
|
pProcessor = static_cast<CDnChangeActionStrProcessor*>( hParentSkill->GetProcessor( IDnSkillProcessor::CHANGE_ACTIONSTR ) );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> Processor <20><> <20><><EFBFBD>µ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Valid <20>ϴٸ<CFB4> <20>̰<EFBFBD> <20>´°<C2B4><C2B0><EFBFBD>. <20>α<EFBFBD> <20>ھƺ<DABE>
|
|||
|
|
if( pProcessor == NULL && m_pChangeActionStrProcessor )
|
|||
|
|
{
|
|||
|
|
g_Log.Log(LogType::_ERROR, L"CDnChangeActionSetBlow::GetChangeActionStrProcessor Invalid Call!!" );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return pProcessor;
|
|||
|
|
|
|||
|
|
|
|||
|
|
//return m_pChangeActionStrProcessor;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
return NULL;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnChangeActionSetBlow::UpdateEnable( const char* pPrevAction, const char* pCurrentAction )
|
|||
|
|
{
|
|||
|
|
if( strcmp(pPrevAction, pCurrentAction) == 0 )
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
// #40128 <20>θ<EFBFBD><CEB8><EFBFBD>ų<EFBFBD><C5B3> <20><><EFBFBD>밡<EFBFBD><EBB0A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD> üũ.
|
|||
|
|
if( m_ParentSkillInfo.hSkillUser )
|
|||
|
|
{
|
|||
|
|
DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID );
|
|||
|
|
if( hParentSkill && !hParentSkill->IsSatisfyWeapon() )
|
|||
|
|
{
|
|||
|
|
m_bEnable = false;
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if( m_strTriggerAction.empty() )
|
|||
|
|
{
|
|||
|
|
m_bEnable = true;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
if( pCurrentAction && 0 < strlen(pCurrentAction) &&
|
|||
|
|
pPrevAction && 0 < strlen(pPrevAction) )
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20>ٲ<EFBFBD> <20><EFBFBD><D7BC><EFBFBD> Ʈ<><C6AE><EFBFBD><EFBFBD> <20>ǰ<D7BC> <20><><EFBFBD>ٸ<EFBFBD> Ȱ<><C8B0>ȭ <20><><EFBFBD><EFBFBD>.
|
|||
|
|
if( false == m_bEnable && m_strTriggerAction == pCurrentAction )
|
|||
|
|
{
|
|||
|
|
m_bEnable = true;
|
|||
|
|
m_strCancleAction = pPrevAction;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
if( m_strCancleAction == pCurrentAction )
|
|||
|
|
{
|
|||
|
|
m_bEnable = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
#ifdef _GAMESERVER
|
|||
|
|
void CDnChangeActionSetBlow::OnChangeAction( void )
|
|||
|
|
{
|
|||
|
|
if( false == m_bChangedActionBegun )
|
|||
|
|
{
|
|||
|
|
// <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20>ִٸ<D6B4> <20>Լ<EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
CDnApplySEWhenActionSetBlowEnabledProcessor* pProcessor = NULL;
|
|||
|
|
DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID );
|
|||
|
|
if( hParentSkill )
|
|||
|
|
{
|
|||
|
|
pProcessor = static_cast<CDnApplySEWhenActionSetBlowEnabledProcessor*>( hParentSkill->GetProcessor( IDnSkillProcessor::APPLY_SE_WHEN_ACTIONSET_ENABLED ) );
|
|||
|
|
if( pProcessor )
|
|||
|
|
pProcessor->OnChangeActionBegin();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_bChangedActionBegun = true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CDnChangeActionSetBlow::OnNotChangeAction( void )
|
|||
|
|
{
|
|||
|
|
if( m_bChangedActionBegun )
|
|||
|
|
{
|
|||
|
|
// <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD> <20><><EFBFBD><EFBFBD>ȿ<EFBFBD><C8BF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20>ִٸ<D6B4> <20>Լ<EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
CDnApplySEWhenActionSetBlowEnabledProcessor* pProcessor = NULL;
|
|||
|
|
DnSkillHandle hParentSkill = m_ParentSkillInfo.hSkillUser->FindSkill( m_ParentSkillInfo.iSkillID );
|
|||
|
|
if( hParentSkill )
|
|||
|
|
{
|
|||
|
|
pProcessor = static_cast<CDnApplySEWhenActionSetBlowEnabledProcessor*>( hParentSkill->GetProcessor( IDnSkillProcessor::APPLY_SE_WHEN_ACTIONSET_ENABLED ) );
|
|||
|
|
if( pProcessor )
|
|||
|
|
pProcessor->OnChangeActionSetBlowEnd();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_bChangedActionBegun = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
#if defined(PRE_ADD_PREFIX_SYSTE_RENEW)
|
|||
|
|
void CDnChangeActionSetBlow::AddStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue)
|
|||
|
|
{
|
|||
|
|
char szBuff[128] = {0, };
|
|||
|
|
|
|||
|
|
szNewValue = szOrigValue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CDnChangeActionSetBlow::RemoveStateEffectValue(const char* szOrigValue, const char* szAddValue, std::string& szNewValue)
|
|||
|
|
{
|
|||
|
|
char szBuff[128] = {0, };
|
|||
|
|
|
|||
|
|
szNewValue = szOrigValue;
|
|||
|
|
}
|
|||
|
|
#endif // PRE_ADD_PREFIX_SYSTE_RENEW
|