2022-01-20 22:42:26 +01:00
|
|
|
#include "RemoveBNpcTask.h"
|
|
|
|
|
|
|
|
#include <Logging/Logger.h>
|
|
|
|
#include <Actor/BNpc.h>
|
|
|
|
#include <Manager/TerritoryMgr.h>
|
|
|
|
#include <Service.h>
|
|
|
|
|
|
|
|
#include <Territory/Territory.h>
|
|
|
|
#include <utility>
|
|
|
|
|
|
|
|
using namespace Sapphire::World;
|
|
|
|
|
|
|
|
RemoveBNpcTask::RemoveBNpcTask( uint64_t delayTime, Entity::BNpcPtr bnpc ) :
|
|
|
|
Task( delayTime ),
|
|
|
|
m_pBNpc( std::move( bnpc ) )
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void RemoveBNpcTask::onQueue()
|
|
|
|
{
|
|
|
|
Logger::debug( { __FUNCTION__ } );
|
|
|
|
}
|
|
|
|
|
|
|
|
void RemoveBNpcTask::execute()
|
|
|
|
{
|
|
|
|
|
2022-01-24 09:20:34 +01:00
|
|
|
auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref();
|
2022-01-20 22:42:26 +01:00
|
|
|
auto pZone = teriMgr.getTerritoryByGuId( m_pBNpc->getTerritoryId() );
|
|
|
|
|
|
|
|
if( !pZone )
|
|
|
|
return;
|
|
|
|
|
|
|
|
pZone->removeActor( m_pBNpc );
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string RemoveBNpcTask::toString()
|
|
|
|
{
|
|
|
|
return fmt::format( "RemoveBNpcTask: BNpc#{}, TerritoryId#{}, ElapsedTimeMs: {}", m_pBNpc->getId(), m_pBNpc->getTerritoryId(), getDelayTimeMs() );
|
|
|
|
}
|
|
|
|
|
|
|
|
|