2024-12-21 10:04:04 +08:00
|
|
|
|
#include "StdAfx.h"
|
|
|
|
|
|
#include "DnChangeActionStrByBubbleProcessor.h"
|
|
|
|
|
|
#include "DnPlayerActor.h"
|
|
|
|
|
|
#include "DnBubbleSystem.h"
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef _DEBUG
|
|
|
|
|
|
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
CDnChangeActionStrByBubbleProcessor::CDnChangeActionStrByBubbleProcessor( DnActorHandle hActor, const char* pArg ) : IDnSkillProcessor( hActor )
|
|
|
|
|
|
{
|
|
|
|
|
|
m_iType = CHANGE_ACTIONSTR_BY_BUBBLE;
|
|
|
|
|
|
|
|
|
|
|
|
if( pArg )
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ID;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><EFBFBD><D7BC≯<EFBFBD>;<3B><><EFBFBD><EFBFBD>ID;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><EFBFBD><D7BC≯<EFBFBD>.... 3<><33><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
|
vector<string> strTokens;
|
|
|
|
|
|
TokenizeA( pArg, strTokens, ";" );
|
|
|
|
|
|
|
|
|
|
|
|
if (strTokens.size() == 0 || strcmp(pArg,"0") == 0) return;
|
|
|
|
|
|
|
|
|
|
|
|
for( int i = 0; i < (int)strTokens.size(); i += 3 )
|
|
|
|
|
|
{
|
|
|
|
|
|
S_ACTION_BY_BUBBLE ActionByBubble;
|
|
|
|
|
|
|
|
|
|
|
|
ActionByBubble.iBubbleID = atoi(strTokens.at( i ).c_str());
|
|
|
|
|
|
ActionByBubble.iBubbleCount = atoi(strTokens.at( i+1 ).c_str());
|
|
|
|
|
|
ActionByBubble.strActionName = strTokens.at( i+2 ).c_str();
|
|
|
|
|
|
|
|
|
|
|
|
m_vlActionByBubble.push_back( ActionByBubble );
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CDnChangeActionStrByBubbleProcessor::~CDnChangeActionStrByBubbleProcessor(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CDnChangeActionStrByBubbleProcessor::SetHasActor( DnActorHandle hActor )
|
|
|
|
|
|
{
|
|
|
|
|
|
_ASSERT( hActor && "void CDnChangeActionStrByBubbleProcessor::SetHasActor( DnActorHandle hActor ), Actor is NULL!!" );
|
|
|
|
|
|
IDnSkillProcessor::SetHasActor( hActor );
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CDnChangeActionStrByBubbleProcessor::OnBegin( LOCAL_TIME LocalTime, float fDelta, DnSkillHandle hParentSkill )
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CDnChangeActionStrByBubbleProcessor::Process( LOCAL_TIME LocalTime, float fDelta )
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CDnChangeActionStrByBubbleProcessor::OnEnd( LOCAL_TIME LocalTime, float fDelta )
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool CDnChangeActionStrByBubbleProcessor::IsFinished( void )
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const char *CDnChangeActionStrByBubbleProcessor::GetChangeActionNameAndRemoveNeedBubble( bool* pBChanged/* = NULL*/ )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( false == m_hHasActor->IsPlayerActor() )
|
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
|
|
|
|
const char* pResult = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
CDnPlayerActor* pPlayerActor = static_cast<CDnPlayerActor*>(m_hHasActor.GetPointer());
|
|
|
|
|
|
BubbleSystem::CDnBubbleSystem* pBubbleSystem = pPlayerActor->GetBubbleSystem();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ǿ<EFBFBD> <20>´°<C2B4> <20>ִ°<D6B4> Ȯ<><C8AE>.
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> ū <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ó<><C3B3><EFBFBD>Ѵ<EFBFBD>.
|
|
|
|
|
|
int iGreatestCount = 0;
|
|
|
|
|
|
const S_ACTION_BY_BUBBLE* pSelectedActionByBubble = NULL;
|
|
|
|
|
|
for( int i = 0; i < (int)m_vlActionByBubble.size(); ++i )
|
|
|
|
|
|
{
|
|
|
|
|
|
const S_ACTION_BY_BUBBLE& ActionByBubble = m_vlActionByBubble.at( i );
|
|
|
|
|
|
int iNowBubbleCount = pBubbleSystem->GetBubbleCountByTypeID( ActionByBubble.iBubbleID );
|
|
|
|
|
|
if( ActionByBubble.iBubbleCount <= iNowBubbleCount )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( iGreatestCount < ActionByBubble.iBubbleCount )
|
|
|
|
|
|
{
|
|
|
|
|
|
iGreatestCount = ActionByBubble.iBubbleCount;
|
|
|
|
|
|
pSelectedActionByBubble = &ActionByBubble;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if( pSelectedActionByBubble )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( pBChanged )
|
|
|
|
|
|
*pBChanged = true;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20>Ҹ<EFBFBD>.. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ȯ<EFBFBD>ѵ<EFBFBD>.
|
|
|
|
|
|
// <20><EFBFBD><D7BC><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>̱<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
|
|
|
|
|
// Ŭ<><EFBFBD> <20><EFBFBD><D7BC><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>θ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˾Ƴ<CBBE><C6B3><EFBFBD> <20><> Ÿ<>̹<EFBFBD><CCB9>̾<EFBFBD><CCBE><EFBFBD> <20>ϹǷ<CFB9> <20><><EFBFBD><EFBFBD> Ŭ<><EFBFBD><F3BFA1BC><EFBFBD> <20>Ǵ<EFBFBD><C7B4>ϰ<EFBFBD>
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD><C7B4>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD>/Ŭ<><C5AC>/<2F>ٸ<EFBFBD>Ŭ<EFBFBD><C5AC> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>δ<EFBFBD>.
|
|
|
|
|
|
// <20>ٸ<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><>ų <20><><EFBFBD><EFBFBD> <20><>Ŷ <20>ް<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD><C7B4>Ͽ<EFBFBD> <20><EFBFBD><D7BC><EFBFBD> <20>ٲ۴<D9B2>.
|
|
|
|
|
|
pBubbleSystem->RemoveBubbleByTypeID( pSelectedActionByBubble->iBubbleID, pSelectedActionByBubble->iBubbleCount );
|
|
|
|
|
|
|
|
|
|
|
|
pResult = pSelectedActionByBubble->strActionName.c_str();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return pResult;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CDnChangeActionStrByBubbleProcessor::CopyFrom( IDnSkillProcessor* pProcessor )
|
|
|
|
|
|
{
|
|
|
|
|
|
if( pProcessor )
|
|
|
|
|
|
{
|
|
|
|
|
|
m_vlActionByBubble.clear();
|
|
|
|
|
|
|
|
|
|
|
|
CDnChangeActionStrByBubbleProcessor *pCopyProcessor = static_cast<CDnChangeActionStrByBubbleProcessor*>(pProcessor);
|
|
|
|
|
|
if( pCopyProcessor->GetBubbleActionList()->empty() == false )
|
|
|
|
|
|
{
|
|
|
|
|
|
m_vlActionByBubble.resize( pCopyProcessor->GetBubbleActionList()->size() );
|
|
|
|
|
|
std::copy( pCopyProcessor->GetBubbleActionList()->begin(), pCopyProcessor->GetBubbleActionList()->end(), m_vlActionByBubble.begin() );
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|