DragonNest/GameCommon/DnChangeActionStrByBubbleProcessor.cpp

132 lines
3.9 KiB
C++
Raw Permalink Normal View History

#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() );
}
}
}