mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-24 13:47:46 +00:00
Fixed binary build path for binaries under windows, changed the way entriesd in the framework are created to hopefully get better errorhandling in world
This commit is contained in:
parent
e7b3f4ae3f
commit
d6deff3d2e
7 changed files with 106 additions and 148 deletions
|
@ -11,11 +11,11 @@ set_target_properties( api PROPERTIES
|
|||
CXX_STANDARD 17
|
||||
CXX_STANDARD_REQUIRED ON
|
||||
CXX_EXTENSIONS ON
|
||||
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
)
|
||||
|
||||
target_link_libraries( api common )
|
||||
|
|
|
@ -9,24 +9,24 @@ file( GLOB SERVER_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}*.c*" )
|
|||
add_executable( lobby ${SERVER_PUBLIC_INCLUDE_FILES} ${SERVER_SOURCE_FILES} )
|
||||
|
||||
set_target_properties( lobby
|
||||
PROPERTIES
|
||||
PROPERTIES
|
||||
CXX_STANDARD 17
|
||||
CXX_STANDARD_REQUIRED ON
|
||||
CXX_EXTENSIONS ON
|
||||
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
)
|
||||
target_link_libraries( lobby
|
||||
PRIVATE
|
||||
common
|
||||
common
|
||||
mysql )
|
||||
if( UNIX )
|
||||
target_link_libraries( lobby
|
||||
PRIVATE
|
||||
stdc++fs )
|
||||
PRIVATE
|
||||
stdc++fs )
|
||||
|
||||
endif()
|
||||
|
||||
|
|
|
@ -49,8 +49,8 @@ foreach(_scriptDir ${children})
|
|||
LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL "${SCRIPT_LIB_DIR}"
|
||||
)
|
||||
endif()
|
||||
target_include_directories("script_${_name}" PUBLIC "${CMAKE_SOURCE_DIR}/src/servers/sapphire_zone/")
|
||||
target_include_directories("script_${_name}" PUBLIC "${CMAKE_SOURCE_DIR}/src/servers/Script/Scripts")
|
||||
target_include_directories("script_${_name}" PUBLIC "${CMAKE_SOURCE_DIR}/src/world/")
|
||||
target_include_directories("script_${_name}" PUBLIC "${CMAKE_SOURCE_DIR}/src/scripts")
|
||||
target_include_directories("script_${_name}" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
target_include_directories("script_${_name}" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/Scripts")
|
||||
|
||||
|
|
|
@ -29,11 +29,11 @@ set_target_properties( world PROPERTIES
|
|||
CXX_EXTENSIONS ON
|
||||
ENABLE_EXPORTS ON
|
||||
WINDOWS_EXPORT_ALL_SYMBOLS ON
|
||||
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/"
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -46,11 +46,18 @@ bool Sapphire::World::Manager::TerritoryMgr::isValidTerritory( uint32_t territor
|
|||
|
||||
bool Sapphire::World::Manager::TerritoryMgr::init()
|
||||
{
|
||||
loadTerritoryTypeDetailCache();
|
||||
loadTerritoryPositionMap();
|
||||
try
|
||||
{
|
||||
loadTerritoryTypeDetailCache();
|
||||
loadTerritoryPositionMap();
|
||||
|
||||
createDefaultTerritories();
|
||||
createHousingTerritories();
|
||||
createDefaultTerritories();
|
||||
createHousingTerritories();
|
||||
}
|
||||
catch( std::runtime_error& )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -26,6 +26,17 @@
|
|||
|
||||
#include "Script/ScriptMgr.h"
|
||||
|
||||
#include <Exd/ExdDataGenerated.h>
|
||||
|
||||
#include <Database/ZoneDbConnection.h>
|
||||
#include <Database/DbWorkerPool.h>
|
||||
#include "Manager/LinkshellMgr.h"
|
||||
#include "Manager/TerritoryMgr.h"
|
||||
#include "Manager/HousingMgr.h"
|
||||
#include "DebugCommand/DebugCommandHandler.h"
|
||||
#include "Manager/PlayerMgr.h"
|
||||
#include "Manager/ShopMgr.h"
|
||||
|
||||
|
||||
extern Sapphire::Framework g_fw;
|
||||
|
||||
|
@ -52,8 +63,6 @@ bool Sapphire::ServerMgr::loadSettings( int32_t argc, char* argv[] )
|
|||
{
|
||||
auto pLog = g_fw.get< Sapphire::Logger >();
|
||||
auto pConfig = g_fw.get< Sapphire::ConfigMgr >();
|
||||
auto pExd = g_fw.get< Data::ExdDataGenerated >();
|
||||
auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
|
||||
|
||||
pLog->info( "Loading config " + m_configName );
|
||||
|
||||
|
@ -63,69 +72,40 @@ bool Sapphire::ServerMgr::loadSettings( int32_t argc, char* argv[] )
|
|||
return false;
|
||||
}
|
||||
|
||||
std::vector< std::string > args( argv + 1, argv + argc );
|
||||
for( uint32_t i = 0; i + 1 < args.size(); i += 2 )
|
||||
m_port = pConfig->getValue< uint16_t >( "ZoneNetwork", "ListenPort", 54992 );
|
||||
m_ip = pConfig->getValue< std::string >( "ZoneNetwork", "ListenIp", "0.0.0.0" );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Sapphire::ServerMgr::run( int32_t argc, char* argv[] )
|
||||
{
|
||||
using namespace Sapphire;
|
||||
using namespace Sapphire::World;
|
||||
|
||||
auto pLog = std::make_shared< Logger >();
|
||||
pLog->setLogPath( "log/world" );
|
||||
pLog->init();
|
||||
g_fw.set< Logger >( pLog );
|
||||
|
||||
printBanner();
|
||||
|
||||
auto pConfig = std::make_shared< ConfigMgr >();
|
||||
g_fw.set< ConfigMgr >( pConfig );
|
||||
if( !loadSettings( argc, argv ) )
|
||||
{
|
||||
std::string arg( "" );
|
||||
std::string val( "" );
|
||||
|
||||
try
|
||||
{
|
||||
arg = Util::toLowerCopy( std::string( args[ i ] ) );
|
||||
val = std::string( args[ i + 1 ] );
|
||||
|
||||
// trim '-' from start of arg
|
||||
arg = arg.erase( 0, arg.find_first_not_of( '-' ) );
|
||||
|
||||
if( arg == "ip" )
|
||||
{
|
||||
// todo: ip addr in config
|
||||
pConfig->setValue< std::string >( "ZoneNetwork.ListenIp", val );
|
||||
}
|
||||
else if( arg == "p" || arg == "port" )
|
||||
{
|
||||
pConfig->setValue< std::string >( "ZoneNetwork.ListenPort", val );
|
||||
}
|
||||
else if( arg == "exdpath" || arg == "datapath" )
|
||||
{
|
||||
pConfig->setValue< std::string >( "GlobalParameters.DataPath", val );
|
||||
}
|
||||
else if( arg == "h" || arg == "dbhost" )
|
||||
{
|
||||
pConfig->setValue< std::string >( "Database.Host", val );
|
||||
}
|
||||
else if( arg == "dbport" )
|
||||
{
|
||||
pConfig->setValue< std::string >( "Database.Port", val );
|
||||
}
|
||||
else if( arg == "u" || arg == "user" || arg == "dbuser" )
|
||||
{
|
||||
pConfig->setValue< std::string >( "Database.Username", val );
|
||||
}
|
||||
else if( arg == "pass" || arg == "dbpass" )
|
||||
{
|
||||
pConfig->setValue< std::string >( "Database.Password", val );
|
||||
}
|
||||
else if( arg == "d" || arg == "db" || arg == "database" )
|
||||
{
|
||||
pConfig->setValue< std::string >( "Database.Database", val );
|
||||
}
|
||||
}
|
||||
catch( ... )
|
||||
{
|
||||
pLog->error( "Error parsing argument: " + arg + " " + "value: " + val + "\n" );
|
||||
pLog->error( "Usage: <arg> <val> \n" );
|
||||
}
|
||||
pLog->fatal( "Unable to load settings!" );
|
||||
return;
|
||||
}
|
||||
|
||||
pLog->info( "Setting up generated EXD data" );
|
||||
if( !pExd->init( pConfig->getValue< std::string >( "GlobalParameters", "DataPath", "" ) ) )
|
||||
auto pExdData = std::make_shared< Data::ExdDataGenerated >();
|
||||
if( !pExdData->init( pConfig->getValue< std::string >( "GlobalParameters", "DataPath", "" ) ) )
|
||||
{
|
||||
pLog->fatal( "Error setting up generated EXD data " );
|
||||
return false;
|
||||
return;
|
||||
}
|
||||
|
||||
Sapphire::Db::DbLoader loader;
|
||||
g_fw.set< Data::ExdDataGenerated >( pExdData );
|
||||
|
||||
Sapphire::Db::ConnectionInfo info;
|
||||
info.password = pConfig->getValue< std::string >( "Database", "Password", "" );
|
||||
|
@ -136,52 +116,61 @@ bool Sapphire::ServerMgr::loadSettings( int32_t argc, char* argv[] )
|
|||
info.syncThreads = pConfig->getValue< uint8_t >( "Database", "SyncThreads", 2 );
|
||||
info.asyncThreads = pConfig->getValue< uint8_t >( "Database", "AsyncThreads", 2 );
|
||||
|
||||
auto pDb = std::make_shared< Db::DbWorkerPool< Db::ZoneDbConnection > >();
|
||||
Sapphire::Db::DbLoader loader;
|
||||
loader.addDb( *pDb, info );
|
||||
if( !loader.initDbs() )
|
||||
return false;
|
||||
|
||||
m_port = pConfig->getValue< uint16_t >( "ZoneNetwork", "ListenPort", 54992 );
|
||||
m_ip = pConfig->getValue< std::string >( "ZoneNetwork", "ListenIp", "0.0.0.0" );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Sapphire::ServerMgr::run( int32_t argc, char* argv[] )
|
||||
{
|
||||
auto pLog = g_fw.get< Sapphire::Logger >();
|
||||
auto pScript = g_fw.get< Scripting::ScriptMgr >();
|
||||
auto pLsMgr = g_fw.get< LinkshellMgr >();
|
||||
auto pTeriMgr = g_fw.get< TerritoryMgr >();
|
||||
|
||||
printBanner();
|
||||
|
||||
if( !loadSettings( argc, argv ) )
|
||||
{
|
||||
pLog->fatal( "Unable to load settings!" );
|
||||
pLog->fatal( "Database not initialized properly!" );
|
||||
return;
|
||||
}
|
||||
g_fw.set< Db::DbWorkerPool< Db::ZoneDbConnection > >( pDb );
|
||||
|
||||
pLog->info( "LinkshellMgr: Caching linkshells" );
|
||||
auto pLsMgr = std::make_shared< Manager::LinkshellMgr >();
|
||||
if( !pLsMgr->loadLinkshells() )
|
||||
{
|
||||
pLog->fatal( "Unable to load linkshells!" );
|
||||
return;
|
||||
}
|
||||
g_fw.set< Manager::LinkshellMgr >( pLsMgr );
|
||||
|
||||
auto pScript = std::make_shared< Scripting::ScriptMgr >();
|
||||
if( !pScript->init() )
|
||||
{
|
||||
pLog->fatal( "Failed to setup scripts!" );
|
||||
return;
|
||||
}
|
||||
g_fw.set< Scripting::ScriptMgr >( pScript );
|
||||
|
||||
pLog->info( "TerritoryMgr: Setting up zones" );
|
||||
auto pTeriMgr = std::make_shared< Manager::TerritoryMgr >();
|
||||
auto pHousingMgr = std::make_shared< Manager::HousingMgr >();
|
||||
g_fw.set< Manager::HousingMgr >( pHousingMgr );
|
||||
g_fw.set< Manager::TerritoryMgr >( pTeriMgr );
|
||||
if( !pTeriMgr->init() )
|
||||
{
|
||||
pLog->fatal( "Failed to setup zones!" );
|
||||
return;
|
||||
}
|
||||
|
||||
loadBNpcTemplates();
|
||||
|
||||
Network::HivePtr hive( new Network::Hive() );
|
||||
Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive );
|
||||
|
||||
pScript->init();
|
||||
|
||||
pLog->info( "TerritoryMgr: Setting up zones" );
|
||||
pTeriMgr->init();
|
||||
|
||||
loadBNpcTemplates();
|
||||
|
||||
std::vector< std::thread > thread_list;
|
||||
thread_list.emplace_back( std::thread( std::bind( &Network::Hive::Run, hive.get() ) ) );
|
||||
|
||||
pLog->info( "Zone server running on " + m_ip + ":" + std::to_string( m_port ) );
|
||||
auto pDebugCom = std::make_shared< DebugCommandHandler >();
|
||||
auto pPlayerMgr = std::make_shared< Manager::PlayerMgr >();
|
||||
auto pShopMgr = std::make_shared< Manager::ShopMgr >();
|
||||
|
||||
g_fw.set< DebugCommandHandler >( pDebugCom );
|
||||
g_fw.set< Manager::PlayerMgr >( pPlayerMgr );
|
||||
g_fw.set< Manager::ShopMgr >( pShopMgr );
|
||||
|
||||
pLog->info( "World server running on " + m_ip + ":" + std::to_string( m_port ) );
|
||||
|
||||
mainLoop();
|
||||
|
||||
|
|
|
@ -2,17 +2,6 @@
|
|||
|
||||
#include "ServerMgr.h"
|
||||
#include <Framework.h>
|
||||
#include <Logging/Logger.h>
|
||||
#include <Exd/ExdDataGenerated.h>
|
||||
#include "Script/ScriptMgr.h"
|
||||
#include <Database/ZoneDbConnection.h>
|
||||
#include <Database/DbWorkerPool.h>
|
||||
#include "Manager/LinkshellMgr.h"
|
||||
#include "Manager/TerritoryMgr.h"
|
||||
#include "Manager/HousingMgr.h"
|
||||
#include "DebugCommand/DebugCommandHandler.h"
|
||||
#include "Manager/PlayerMgr.h"
|
||||
#include "Manager/ShopMgr.h"
|
||||
|
||||
#include <Config/ConfigMgr.h>
|
||||
|
||||
|
@ -24,35 +13,8 @@ using namespace Sapphire::World;
|
|||
bool setupFramework()
|
||||
{
|
||||
auto pServer = std::make_shared< ServerMgr >( "config.ini" );
|
||||
auto pLogger = std::make_shared< Logger >();
|
||||
auto pExdData = std::make_shared< Data::ExdDataGenerated >();
|
||||
auto pScript = std::make_shared< Scripting::ScriptMgr >();
|
||||
auto pDb = std::make_shared< Db::DbWorkerPool< Db::ZoneDbConnection > >();
|
||||
auto pDebugCom = std::make_shared< DebugCommandHandler >();
|
||||
auto pConfig = std::make_shared< ConfigMgr >();
|
||||
auto pPlayerMgr = std::make_shared< Manager::PlayerMgr >();
|
||||
auto pShopMgr = std::make_shared< Manager::ShopMgr >();
|
||||
auto pLsMgr = std::make_shared< Manager::LinkshellMgr >();
|
||||
auto pTeriMgr = std::make_shared< Manager::TerritoryMgr >();
|
||||
auto pHousingMgr = std::make_shared< Manager::HousingMgr >();
|
||||
|
||||
pLogger->setLogPath( "log/SapphireZone" );
|
||||
pLogger->init();
|
||||
|
||||
g_fw.set< ServerMgr >( pServer );
|
||||
g_fw.set< Logger >( pLogger );
|
||||
g_fw.set< Data::ExdDataGenerated >( pExdData );
|
||||
g_fw.set< Scripting::ScriptMgr >( pScript );
|
||||
g_fw.set< Db::DbWorkerPool< Db::ZoneDbConnection > >( pDb );
|
||||
g_fw.set< Manager::LinkshellMgr >( pLsMgr );
|
||||
g_fw.set< Manager::HousingMgr >( pHousingMgr );
|
||||
g_fw.set< Manager::TerritoryMgr >( pTeriMgr );
|
||||
g_fw.set< DebugCommandHandler >( pDebugCom );
|
||||
g_fw.set< ConfigMgr >( pConfig );
|
||||
g_fw.set< Manager::PlayerMgr >( pPlayerMgr );
|
||||
g_fw.set< Manager::ShopMgr >( pShopMgr );
|
||||
|
||||
// actuall catch errors here...
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue