1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-28 15:17:46 +00:00
sapphire/src/world/Manager/NaviMgr.cpp

48 lines
1.2 KiB
C++
Raw Normal View History

2019-01-23 19:23:49 +01:00
#include "NaviMgr.h"
#include "Navi/NaviProvider.h"
2019-01-23 19:23:49 +01:00
#include <Logging/Logger.h>
Sapphire::World::Manager::NaviMgr::NaviMgr( FrameworkPtr pFw ) :
BaseManager( pFw ),
m_pFw( pFw )
{
}
2019-01-25 08:50:44 +01:00
bool Sapphire::World::Manager::NaviMgr::setupTerritory( const std::string& bgPath )
2019-01-23 19:23:49 +01:00
{
std::string bg = getBgName( bgPath );
// check if a provider exists already
if( m_naviProviderTerritoryMap.find( bg ) != m_naviProviderTerritoryMap.end() )
return true;
auto provider = Navi::make_NaviProvider( bg, m_pFw );
2019-01-23 19:23:49 +01:00
if( provider->init() )
{
m_naviProviderTerritoryMap.insert( std::make_pair( bg, provider ) );
2019-01-23 19:23:49 +01:00
return true;
}
return false;
}
2019-01-25 08:50:44 +01:00
Sapphire::World::Navi::NaviProviderPtr Sapphire::World::Manager::NaviMgr::getNaviProvider( const std::string& bgPath )
2019-01-23 19:23:49 +01:00
{
std::string bg = getBgName( bgPath );
if( m_naviProviderTerritoryMap.find( bg ) != m_naviProviderTerritoryMap.end() )
return m_naviProviderTerritoryMap[ bg ];
2019-01-23 19:23:49 +01:00
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 "";
}