From d1d93c9241dfda14dd4117a92f3924bd041ee981 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 29 Jan 2018 00:52:11 +1100 Subject: [PATCH] instance removal command --- .../DebugCommand/DebugCommandHandler.cpp | 10 ++++++++++ src/servers/sapphire_zone/Zone/TerritoryMgr.cpp | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp index 064bc617..cce0746d 100644 --- a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp @@ -687,4 +687,14 @@ void Core::DebugCommandHandler::instance( char* data, Entity::Player &player, bo auto instance = g_territoryMgr.createTerritoryInstance( terriId ); player.sendDebug( "Created instance with guid: " + std::to_string( instance->getGuId() ) ); } + else if( subCommand == "remove" || subCommand == "rm" ) + { + uint32_t terriId; + sscanf( params.c_str(), "%d", &terriId ); + + if( g_territoryMgr.removeTerritoryInstance( terriId ) ) + player.sendDebug( "Removed instance with id: " + std::to_string( terriId ) ); + else + player.sendDebug( "Failed to remove instance with id: " + std::to_string( terriId ) ); + } } diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index 6e496126..e802ca79 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -150,6 +150,18 @@ Core::ZonePtr Core::TerritoryMgr::createTerritoryInstance( uint32_t territoryTyp return pZone; } +bool Core::TerritoryMgr::removeTerritoryInstance( uint32_t territoryTypeId ) +{ + ZonePtr instance; + if( ( instance = getTerritoryZonePtr( territoryTypeId ) ) == nullptr ) + return false; + + m_instanceIdToZonePtrMap.erase( instance->getGuId() ); + m_territoryInstanceMap[instance->getTerritoryId()].erase( instance->getGuId() ); + + return true; +} + Core::ZonePtr Core::TerritoryMgr::getTerritoryZonePtr( uint32_t instanceId ) const { auto it = m_instanceIdToZonePtrMap.find( instanceId );