mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-25 22:17:45 +00:00
no need to return the list
This commit is contained in:
parent
e6c3e327f7
commit
26f23a1147
2 changed files with 12 additions and 25 deletions
|
@ -31,70 +31,57 @@ uint64_t EffectBuilder::getResultDelayMs()
|
||||||
return Common::Util::getTimeMs() + 850;
|
return Common::Util::getTimeMs() + 850;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr< std::vector< EffectResultPtr > > EffectBuilder::getResultList( Entity::CharaPtr& chara )
|
void EffectBuilder::moveToResultList( Entity::CharaPtr& chara, EffectResultPtr result )
|
||||||
{
|
{
|
||||||
auto it = m_resolvedEffects.find( chara->getId() );
|
auto it = m_resolvedEffects.find( chara->getId() );
|
||||||
if( it == m_resolvedEffects.end() )
|
if( it == m_resolvedEffects.end() )
|
||||||
{
|
{
|
||||||
// create a new one and return it
|
// create a new one
|
||||||
auto resultList = std::make_shared< std::vector< EffectResultPtr > >();
|
auto resultList = std::make_shared< std::vector< EffectResultPtr > >();
|
||||||
|
|
||||||
m_resolvedEffects[ chara->getId() ] = resultList;
|
m_resolvedEffects[ chara->getId() ] = resultList;
|
||||||
|
|
||||||
return resultList;
|
resultList->push_back( std::move( result ) );
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return it->second;
|
it->second->push_back( std::move( result ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void EffectBuilder::heal( Entity::CharaPtr& effectTarget, Entity::CharaPtr& healingTarget, uint32_t amount, Common::ActionHitSeverityType severity, Common::ActionEffectResultFlag flag )
|
void EffectBuilder::heal( Entity::CharaPtr& effectTarget, Entity::CharaPtr& healingTarget, uint32_t amount, Common::ActionHitSeverityType severity, Common::ActionEffectResultFlag flag )
|
||||||
{
|
{
|
||||||
auto resultList = getResultList( effectTarget );
|
|
||||||
assert( resultList );
|
|
||||||
|
|
||||||
EffectResultPtr nextResult = make_EffectResult( healingTarget, getResultDelayMs() );
|
EffectResultPtr nextResult = make_EffectResult( healingTarget, getResultDelayMs() );
|
||||||
nextResult->heal( amount, severity, flag );
|
nextResult->heal( amount, severity, flag );
|
||||||
resultList->push_back( std::move( nextResult ) );
|
moveToResultList( effectTarget, nextResult );
|
||||||
}
|
}
|
||||||
|
|
||||||
void EffectBuilder::restoreMP( Entity::CharaPtr& target, Entity::CharaPtr& restoringTarget, uint32_t amount, Common::ActionEffectResultFlag flag )
|
void EffectBuilder::restoreMP( Entity::CharaPtr& target, Entity::CharaPtr& restoringTarget, uint32_t amount, Common::ActionEffectResultFlag flag )
|
||||||
{
|
{
|
||||||
auto resultList = getResultList( target );
|
|
||||||
assert( resultList );
|
|
||||||
|
|
||||||
EffectResultPtr nextResult = make_EffectResult( restoringTarget, getResultDelayMs() ); // restore mp source actor
|
EffectResultPtr nextResult = make_EffectResult( restoringTarget, getResultDelayMs() ); // restore mp source actor
|
||||||
nextResult->restoreMP( amount, flag );
|
nextResult->restoreMP( amount, flag );
|
||||||
resultList->push_back( std::move( nextResult ) );
|
moveToResultList( target, nextResult );
|
||||||
}
|
}
|
||||||
|
|
||||||
void EffectBuilder::damage( Entity::CharaPtr& effectTarget, Entity::CharaPtr& damagingTarget, uint32_t amount, Common::ActionHitSeverityType severity, Common::ActionEffectResultFlag flag )
|
void EffectBuilder::damage( Entity::CharaPtr& effectTarget, Entity::CharaPtr& damagingTarget, uint32_t amount, Common::ActionHitSeverityType severity, Common::ActionEffectResultFlag flag )
|
||||||
{
|
{
|
||||||
auto resultList = getResultList( effectTarget );
|
|
||||||
assert( resultList );
|
|
||||||
|
|
||||||
EffectResultPtr nextResult = make_EffectResult( damagingTarget, getResultDelayMs() );
|
EffectResultPtr nextResult = make_EffectResult( damagingTarget, getResultDelayMs() );
|
||||||
nextResult->damage( amount, severity, flag );
|
nextResult->damage( amount, severity, flag );
|
||||||
resultList->push_back( std::move( nextResult ) );
|
moveToResultList( effectTarget, nextResult );
|
||||||
}
|
}
|
||||||
|
|
||||||
void EffectBuilder::startCombo( Entity::CharaPtr& target, uint16_t actionId )
|
void EffectBuilder::startCombo( Entity::CharaPtr& target, uint16_t actionId )
|
||||||
{
|
{
|
||||||
auto resultList = getResultList( target );
|
|
||||||
assert( resultList );
|
|
||||||
|
|
||||||
EffectResultPtr nextResult = make_EffectResult( target, 0 );
|
EffectResultPtr nextResult = make_EffectResult( target, 0 );
|
||||||
nextResult->startCombo( actionId );
|
nextResult->startCombo( actionId );
|
||||||
resultList->push_back( std::move( nextResult ) );
|
moveToResultList( target, nextResult );
|
||||||
}
|
}
|
||||||
|
|
||||||
void EffectBuilder::comboSucceed( Entity::CharaPtr& target )
|
void EffectBuilder::comboSucceed( Entity::CharaPtr& target )
|
||||||
{
|
{
|
||||||
auto resultList = getResultList( target );
|
|
||||||
assert( resultList );
|
|
||||||
|
|
||||||
EffectResultPtr nextResult = make_EffectResult( target, 0 );
|
EffectResultPtr nextResult = make_EffectResult( target, 0 );
|
||||||
nextResult->comboSucceed();
|
nextResult->comboSucceed();
|
||||||
resultList->push_back( std::move( nextResult ) );
|
moveToResultList( target, nextResult );
|
||||||
}
|
}
|
||||||
|
|
||||||
void EffectBuilder::buildAndSendPackets()
|
void EffectBuilder::buildAndSendPackets()
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace Sapphire::World::Action
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr< std::vector< EffectResultPtr > > getResultList( Entity::CharaPtr& chara );
|
void moveToResultList( Entity::CharaPtr& chara, EffectResultPtr result );
|
||||||
|
|
||||||
uint64_t getResultDelayMs();
|
uint64_t getResultDelayMs();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue