2019-01-23 19:23:49 +01:00
|
|
|
#include "NaviMgr.h"
|
2019-01-24 12:10:31 +01:00
|
|
|
#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
|
|
|
{
|
2019-01-25 22:47:50 +11:00
|
|
|
std::string bg = getBgName( bgPath );
|
|
|
|
|
|
|
|
// check if a provider exists already
|
|
|
|
if( m_naviProviderTerritoryMap.find( bg ) != m_naviProviderTerritoryMap.end() )
|
|
|
|
return true;
|
2019-01-25 08:45:00 +01:00
|
|
|
|
|
|
|
auto provider = Navi::make_NaviProvider( bg, m_pFw );
|
2019-01-23 19:23:49 +01:00
|
|
|
|
|
|
|
if( provider->init() )
|
|
|
|
{
|
2019-01-25 08:45:00 +01:00
|
|
|
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
|
|
|
{
|
2019-01-25 22:47:50 +11:00
|
|
|
std::string bg = getBgName( bgPath );
|
2019-01-25 08:45:00 +01:00
|
|
|
|
|
|
|
if( m_naviProviderTerritoryMap.find( bg ) != m_naviProviderTerritoryMap.end() )
|
|
|
|
return m_naviProviderTerritoryMap[ bg ];
|
2019-01-23 19:23:49 +01:00
|
|
|
|
|
|
|
return nullptr;
|
|
|
|
}
|
2019-01-25 22:47:50 +11:00
|
|
|
|
|
|
|
std::string Sapphire::World::Manager::NaviMgr::getBgName( const std::string& bgPath )
|
|
|
|
{
|
2019-04-19 18:52:55 +10:00
|
|
|
auto findPos = bgPath.find_last_of( '/' );
|
2019-01-25 22:47:50 +11:00
|
|
|
if( findPos != std::string::npos )
|
|
|
|
return bgPath.substr( findPos + 1 );
|
|
|
|
|
|
|
|
return "";
|
|
|
|
}
|