1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-29 07:37:45 +00:00

only create naviproviders if one doesn't exist for the map

This commit is contained in:
NotAdam 2019-01-25 22:47:50 +11:00
parent 0234800fce
commit 19cf05c9c1
2 changed files with 17 additions and 8 deletions

View file

@ -10,10 +10,11 @@ Sapphire::World::Manager::NaviMgr::NaviMgr( FrameworkPtr pFw ) :
bool Sapphire::World::Manager::NaviMgr::setupTerritory( const std::string& bgPath ) bool Sapphire::World::Manager::NaviMgr::setupTerritory( const std::string& bgPath )
{ {
std::string bg; std::string bg = getBgName( bgPath );
auto findPos = bgPath.find_last_of( "/" );
if( findPos != std::string::npos ) // check if a provider exists already
bg = bgPath.substr( findPos + 1 ); if( m_naviProviderTerritoryMap.find( bg ) != m_naviProviderTerritoryMap.end() )
return true;
auto provider = Navi::make_NaviProvider( bg, m_pFw ); auto provider = Navi::make_NaviProvider( bg, m_pFw );
@ -28,13 +29,19 @@ bool Sapphire::World::Manager::NaviMgr::setupTerritory( const std::string& bgPat
Sapphire::World::Navi::NaviProviderPtr Sapphire::World::Manager::NaviMgr::getNaviProvider( const std::string& bgPath ) Sapphire::World::Navi::NaviProviderPtr Sapphire::World::Manager::NaviMgr::getNaviProvider( const std::string& bgPath )
{ {
std::string bg; std::string bg = getBgName( bgPath );
auto findPos = bgPath.find_last_of( "/" );
if( findPos != std::string::npos )
bg = bgPath.substr( findPos + 1 );
if( m_naviProviderTerritoryMap.find( bg ) != m_naviProviderTerritoryMap.end() ) if( m_naviProviderTerritoryMap.find( bg ) != m_naviProviderTerritoryMap.end() )
return m_naviProviderTerritoryMap[ bg ]; return m_naviProviderTerritoryMap[ bg ];
return nullptr; return nullptr;
} }
std::string Sapphire::World::Manager::NaviMgr::getBgName( const std::string& bgPath )
{
auto findPos = bgPath.find_last_of( "/" );
if( findPos != std::string::npos )
return bgPath.substr( findPos + 1 );
return "";
}

View file

@ -22,6 +22,8 @@ namespace Sapphire::World::Manager
private: private:
FrameworkPtr m_pFw; FrameworkPtr m_pFw;
std::string getBgName( const std::string& bgPath );
std::unordered_map< std::string, Navi::NaviProviderPtr > m_naviProviderTerritoryMap; std::unordered_map< std::string, Navi::NaviProviderPtr > m_naviProviderTerritoryMap;
}; };