From a04fc5449e2402fc599e921003e6519d4e19a8cc Mon Sep 17 00:00:00 2001 From: Dantestyle Date: Thu, 22 Nov 2018 00:41:54 +0100 Subject: [PATCH 1/6] Avoid client crash on setZone --- src/servers/Scripts/quest/ManFst004.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/servers/Scripts/quest/ManFst004.cpp b/src/servers/Scripts/quest/ManFst004.cpp index d6c2b44b..71d55c50 100644 --- a/src/servers/Scripts/quest/ManFst004.cpp +++ b/src/servers/Scripts/quest/ManFst004.cpp @@ -223,10 +223,10 @@ private: [ & ]( Entity::Player& player, const Event::SceneResult& result ) { // accepting quest "close to home" - player.updateQuest( getId(), 1 ); + player.updateQuest( getId(), Seq1 ); player.setQuestUI8CH( getId(), 1 ); // receive key item // event is done, need to teleport to real zone. - player.setZone( 132 ); + player.forceZoneing( Territorytype0 ); //player.setZone(183); back to starting griania for debug purpose } ); } From 28139b47b5271387d66eb9758719aa9849869302 Mon Sep 17 00:00:00 2001 From: Mordred Date: Sat, 22 Dec 2018 22:25:03 +0100 Subject: [PATCH 2/6] Added BaseManager and moved DebugCommandHandler to Manager --- src/world/Actor/Actor.cpp | 2 +- src/world/Actor/Player.cpp | 8 +- src/world/Actor/Player.h | 2 +- src/world/Actor/PlayerSql.cpp | 2 +- src/world/DebugCommand/DebugCommand.h | 9 +- src/world/ForwardsZone.h | 11 +- src/world/Manager/BaseManager.h | 27 +++++ .../DebugCommandMgr.cpp} | 112 ++++++++++-------- .../DebugCommandMgr.h} | 11 +- src/world/Manager/HousingMgr.cpp | 15 ++- src/world/Manager/HousingMgr.h | 5 +- src/world/Manager/LinkshellMgr.cpp | 7 +- src/world/Manager/LinkshellMgr.h | 5 +- src/world/Manager/PlayerMgr.cpp | 13 +- src/world/Manager/PlayerMgr.h | 5 +- src/world/Manager/ShopMgr.cpp | 11 +- src/world/Manager/ShopMgr.h | 4 +- src/world/Manager/TerritoryMgr.cpp | 31 +++-- src/world/Manager/TerritoryMgr.h | 5 +- src/world/Network/GameConnection.cpp | 4 +- src/world/Network/GameConnection.h | 2 +- src/world/Network/Handlers/ActionHandler.cpp | 2 +- .../Network/Handlers/ClientTriggerHandler.cpp | 4 +- .../Network/Handlers/GMCommandHandlers.cpp | 2 +- .../Network/Handlers/InventoryHandler.cpp | 2 +- src/world/Network/Handlers/PacketHandlers.cpp | 10 +- src/world/ServerMgr.cpp | 109 +++++++++-------- src/world/ServerMgr.h | 14 +-- src/world/Session.cpp | 40 +++---- src/world/Session.h | 72 +++++------ src/world/Territory/Zone.cpp | 6 +- src/world/Territory/Zone.h | 6 +- src/world/mainGameServer.cpp | 3 +- 33 files changed, 309 insertions(+), 252 deletions(-) create mode 100644 src/world/Manager/BaseManager.h rename src/world/{DebugCommand/DebugCommandHandler.cpp => Manager/DebugCommandMgr.cpp} (85%) rename src/world/{DebugCommand/DebugCommandHandler.h => Manager/DebugCommandMgr.h} (90%) diff --git a/src/world/Actor/Actor.cpp b/src/world/Actor/Actor.cpp index 2d119fc8..b1684a0f 100644 --- a/src/world/Actor/Actor.cpp +++ b/src/world/Actor/Actor.cpp @@ -297,7 +297,7 @@ Send a packet to all players in range, potentially to self if set and is player */ void Sapphire::Entity::Actor::sendToInRangeSet( Network::Packets::FFXIVPacketBasePtr pPacket, bool bToSelf ) { - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = g_fw.get< World::ServerMgr >(); if( bToSelf && isPlayer() ) { auto pPlayer = getAsPlayer(); diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index 49dfdb49..1eaae6fc 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -109,7 +109,7 @@ Sapphire::Entity::Player::~Player() void Sapphire::Entity::Player::injectPacket( const std::string& path ) { - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = g_fw.get< World::ServerMgr >(); auto session = pServerZone->getSession( getId() ); if( session ) session->getZoneConnection()->injectPacket( path, *this ); @@ -1206,7 +1206,7 @@ const uint8_t* Sapphire::Entity::Player::getGcRankArray() const void Sapphire::Entity::Player::queuePacket( Network::Packets::FFXIVPacketBasePtr pPacket ) { - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = g_fw.get< World::ServerMgr >(); auto pSession = pServerZone->getSession( m_id ); if( !pSession ) @@ -1221,7 +1221,7 @@ void Sapphire::Entity::Player::queuePacket( Network::Packets::FFXIVPacketBasePtr void Sapphire::Entity::Player::queueChatPacket( Network::Packets::FFXIVPacketBasePtr pPacket ) { - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = g_fw.get< World::ServerMgr >(); auto pSession = pServerZone->getSession( m_id ); if( !pSession ) @@ -1557,7 +1557,7 @@ void Sapphire::Entity::Player::sendZonePackets() if( isLogin() ) { //Update player map in servermgr - in case player name has been changed - auto pServerMgr = g_fw.get< Sapphire::ServerMgr >(); + auto pServerMgr = g_fw.get< World::ServerMgr >(); pServerMgr->updatePlayerName( getId(), getName() ); } diff --git a/src/world/Actor/Player.h b/src/world/Actor/Player.h index b0c8b1cf..e5b0f050 100644 --- a/src/world/Actor/Player.h +++ b/src/world/Actor/Player.h @@ -682,7 +682,7 @@ namespace Sapphire::Entity void updateSql(); /*! load player from db, by id */ - bool load( uint32_t charId, SessionPtr pSession ); + bool load( uint32_t charId, World::SessionPtr pSession ); /*! load active class data */ bool loadClassData(); diff --git a/src/world/Actor/PlayerSql.cpp b/src/world/Actor/PlayerSql.cpp index 136ddd40..30f4defd 100644 --- a/src/world/Actor/PlayerSql.cpp +++ b/src/world/Actor/PlayerSql.cpp @@ -29,7 +29,7 @@ using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::World::Manager; // load player from the db -bool Sapphire::Entity::Player::load( uint32_t charId, SessionPtr pSession ) +bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession ) { auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto pTeriMgr = g_fw.get< TerritoryMgr >(); diff --git a/src/world/DebugCommand/DebugCommand.h b/src/world/DebugCommand/DebugCommand.h index 5a7c9e2a..40ee8b17 100644 --- a/src/world/DebugCommand/DebugCommand.h +++ b/src/world/DebugCommand/DebugCommand.h @@ -5,16 +5,19 @@ #include "ForwardsZone.h" + namespace Sapphire { - - class DebugCommandHandler; + namespace World::Manager + { + class DebugCommandMgr; + } class DebugCommand { public: - using pFunc = void ( DebugCommandHandler::* )( char*, Entity::Player&, std::shared_ptr< DebugCommand > ); + using pFunc = void ( World::Manager::DebugCommandMgr::* )( char*, Entity::Player&, std::shared_ptr< DebugCommand > ); // String for the command std::string m_commandName; diff --git a/src/world/ForwardsZone.h b/src/world/ForwardsZone.h index 585eb46c..f5d9321a 100644 --- a/src/world/ForwardsZone.h +++ b/src/world/ForwardsZone.h @@ -25,10 +25,15 @@ TYPE_FORWARD( House ); TYPE_FORWARD( InstanceContent ); TYPE_FORWARD( Item ); TYPE_FORWARD( ItemContainer ); -TYPE_FORWARD( Session ); TYPE_FORWARD( ZonePosition ); -TYPE_FORWARD( Land ) -TYPE_FORWARD( Linkshell ) +TYPE_FORWARD( Land ); +TYPE_FORWARD( Linkshell ); +TYPE_FORWARD( Framework ); + +namespace World +{ +TYPE_FORWARD( Session ); +} namespace World::Territory::Housing { diff --git a/src/world/Manager/BaseManager.h b/src/world/Manager/BaseManager.h new file mode 100644 index 00000000..c87fd9a6 --- /dev/null +++ b/src/world/Manager/BaseManager.h @@ -0,0 +1,27 @@ +#ifndef SAPPHIRE_MANAGER_H +#define SAPPHIRE_MANAGER_H + +#include "ForwardsZone.h" + +namespace Sapphire::World::Manager +{ + + class BaseManager + { + public: + explicit BaseManager( FrameworkPtr pFw ) : m_pFw( pFw ) {}; + virtual ~BaseManager() = default; + + FrameworkPtr framework() const + { return m_pFw; } + void setFw( FrameworkPtr pFw ) + { m_pFw = pFw; } + + private: + FrameworkPtr m_pFw; + }; + +} + + +#endif //SAPPHIRE_MANAGER_H diff --git a/src/world/DebugCommand/DebugCommandHandler.cpp b/src/world/Manager/DebugCommandMgr.cpp similarity index 85% rename from src/world/DebugCommand/DebugCommandHandler.cpp rename to src/world/Manager/DebugCommandMgr.cpp index b3898656..61f6c15d 100644 --- a/src/world/DebugCommand/DebugCommandHandler.cpp +++ b/src/world/Manager/DebugCommandMgr.cpp @@ -11,8 +11,8 @@ #include #include -#include "DebugCommand.h" -#include "DebugCommandHandler.h" +#include "DebugCommand/DebugCommand.h" +#include "DebugCommandMgr.h" #include "Network/PacketWrappers/ServerNoticePacket.h" #include "Network/PacketWrappers/ActorControlPacket142.h" @@ -37,51 +37,50 @@ #include "Session.h" #include "Framework.h" -extern Sapphire::Framework g_fw; - using namespace Sapphire::Network; using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::World::Manager; // instanciate and initialize commands -Sapphire::DebugCommandHandler::DebugCommandHandler() +Sapphire::World::Manager::DebugCommandMgr::DebugCommandMgr( FrameworkPtr pFw ) : + BaseManager( pFw ) { // Push all commands onto the register map ( command name - function - description - required GM level ) - registerCommand( "set", &DebugCommandHandler::set, "Executes SET commands.", 1 ); - registerCommand( "get", &DebugCommandHandler::get, "Executes GET commands.", 1 ); - registerCommand( "add", &DebugCommandHandler::add, "Executes ADD commands.", 1 ); - registerCommand( "inject", &DebugCommandHandler::injectPacket, "Loads and injects a premade packet.", 1 ); - registerCommand( "injectc", &DebugCommandHandler::injectChatPacket, "Loads and injects a premade chat packet.", 1 ); - registerCommand( "replay", &DebugCommandHandler::replay, "Replays a saved capture folder.", 1 ); - registerCommand( "nudge", &DebugCommandHandler::nudge, "Nudges you forward/up/down.", 1 ); - registerCommand( "info", &DebugCommandHandler::serverInfo, "Show server info.", 0 ); - registerCommand( "help", &DebugCommandHandler::help, "Shows registered commands.", 0 ); - registerCommand( "script", &DebugCommandHandler::script, "Server script utilities.", 1 ); - registerCommand( "instance", &DebugCommandHandler::instance, "Instance utilities", 1 ); - registerCommand( "housing", &DebugCommandHandler::housing, "Housing utilities", 1 ); + registerCommand( "set", &DebugCommandMgr::set, "Executes SET commands.", 1 ); + registerCommand( "get", &DebugCommandMgr::get, "Executes GET commands.", 1 ); + registerCommand( "add", &DebugCommandMgr::add, "Executes ADD commands.", 1 ); + registerCommand( "inject", &DebugCommandMgr::injectPacket, "Loads and injects a premade packet.", 1 ); + registerCommand( "injectc", &DebugCommandMgr::injectChatPacket, "Loads and injects a premade chat packet.", 1 ); + registerCommand( "replay", &DebugCommandMgr::replay, "Replays a saved capture folder.", 1 ); + registerCommand( "nudge", &DebugCommandMgr::nudge, "Nudges you forward/up/down.", 1 ); + registerCommand( "info", &DebugCommandMgr::serverInfo, "Show server info.", 0 ); + registerCommand( "help", &DebugCommandMgr::help, "Shows registered commands.", 0 ); + registerCommand( "script", &DebugCommandMgr::script, "Server script utilities.", 1 ); + registerCommand( "instance", &DebugCommandMgr::instance, "Instance utilities", 1 ); + registerCommand( "housing", &DebugCommandMgr::housing, "Housing utilities", 1 ); } // clear all loaded commands -Sapphire::DebugCommandHandler::~DebugCommandHandler() +Sapphire::World::Manager::DebugCommandMgr::~DebugCommandMgr() { for( auto it = m_commandMap.begin(); it != m_commandMap.end(); ++it ) ( *it ).second.reset(); } // add a command set to the register map -void Sapphire::DebugCommandHandler::registerCommand( const std::string& n, DebugCommand::pFunc functionPtr, - const std::string& hText, uint8_t uLevel ) +void Sapphire::World::Manager::DebugCommandMgr::registerCommand( const std::string& n, DebugCommand::pFunc functionPtr, + const std::string& hText, uint8_t uLevel ) { m_commandMap[ std::string( n ) ] = std::make_shared< DebugCommand >( n, functionPtr, hText, uLevel ); } // try to retrieve the command in question, execute if found -void Sapphire::DebugCommandHandler::execCommand( char* data, Entity::Player& player ) +void Sapphire::World::Manager::DebugCommandMgr::execCommand( char* data, Entity::Player& player ) { // define callback pointer - void ( DebugCommandHandler::*pf )( char*, Entity::Player&, std::shared_ptr< DebugCommand > ); + void ( DebugCommandMgr::*pf )( char*, Entity::Player&, std::shared_ptr< DebugCommand > ); std::string commandString; @@ -124,7 +123,8 @@ void Sapphire::DebugCommandHandler::execCommand( char* data, Entity::Player& pla // Definition of the commands /////////////////////////////////////////////////////////////////////////////////////// -void Sapphire::DebugCommandHandler::help( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +void Sapphire::World::Manager::DebugCommandMgr::help( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { player.sendDebug( "Registered debug commands:" ); for( auto cmd : m_commandMap ) @@ -136,11 +136,12 @@ void Sapphire::DebugCommandHandler::help( char* data, Entity::Player& player, st } } -void Sapphire::DebugCommandHandler::set( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +void Sapphire::World::Manager::DebugCommandMgr::set( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { - auto pLog = g_fw.get< Logger >(); - auto pTerriMgr = g_fw.get< TerritoryMgr >(); - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pLog = framework()->get< Logger >(); + auto pTerriMgr = framework()->get< TerritoryMgr >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); std::string subCommand = ""; std::string params = ""; @@ -375,9 +376,10 @@ void Sapphire::DebugCommandHandler::set( char* data, Entity::Player& player, std } -void Sapphire::DebugCommandHandler::add( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { - auto pLog = g_fw.get< Logger >(); + auto pLog = framework()->get< Logger >(); std::string subCommand; std::string params = ""; @@ -423,7 +425,7 @@ void Sapphire::DebugCommandHandler::add( char* data, Entity::Player& player, std } else if( subCommand == "bnpc" ) { - auto serverZone = g_fw.get< ServerMgr >(); + auto serverZone = framework()->get< World::ServerMgr >(); auto bNpcTemplate = serverZone->getBNpcTemplate( params ); @@ -509,10 +511,11 @@ void Sapphire::DebugCommandHandler::add( char* data, Entity::Player& player, std } -void Sapphire::DebugCommandHandler::get( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +void Sapphire::World::Manager::DebugCommandMgr::get( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { - auto pLog = g_fw.get< Logger >(); - auto pExdData = g_fw.get< Data::ExdDataGenerated >(); + auto pLog = framework()->get< Logger >(); + auto pExdData = framework()->get< Data::ExdDataGenerated >(); std::string subCommand; std::string params = ""; @@ -556,27 +559,29 @@ void Sapphire::DebugCommandHandler::get( char* data, Entity::Player& player, std } void -Sapphire::DebugCommandHandler::injectPacket( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +Sapphire::World::Manager::DebugCommandMgr::injectPacket( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = framework()->get< World::ServerMgr >(); auto pSession = pServerZone->getSession( player.getId() ); if( pSession ) pSession->getZoneConnection()->injectPacket( data + 7, player ); } -void Sapphire::DebugCommandHandler::injectChatPacket( char* data, Entity::Player& player, - std::shared_ptr< DebugCommand > command ) +void Sapphire::World::Manager::DebugCommandMgr::injectChatPacket( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = framework()->get< World::ServerMgr >(); auto pSession = pServerZone->getSession( player.getId() ); if( pSession ) pSession->getChatConnection()->injectPacket( data + 8, player ); } -void Sapphire::DebugCommandHandler::replay( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +void Sapphire::World::Manager::DebugCommandMgr::replay( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { - auto pLog = g_fw.get< Logger >(); - auto pServerZone = g_fw.get< ServerMgr >(); + auto pLog = framework()->get< Logger >(); + auto pServerZone = framework()->get< World::ServerMgr >(); std::string subCommand; std::string params = ""; @@ -625,7 +630,8 @@ void Sapphire::DebugCommandHandler::replay( char* data, Entity::Player& player, } -void Sapphire::DebugCommandHandler::nudge( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +void Sapphire::World::Manager::DebugCommandMgr::nudge( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { std::string subCommand; @@ -672,18 +678,20 @@ void Sapphire::DebugCommandHandler::nudge( char* data, Entity::Player& player, s } void -Sapphire::DebugCommandHandler::serverInfo( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +Sapphire::World::Manager::DebugCommandMgr::serverInfo( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = framework()->get< World::ServerMgr >(); player.sendDebug( "SapphireZone " + Version::VERSION + "\nRev: " + Version::GIT_HASH ); player.sendDebug( "Compiled: " __DATE__ " " __TIME__ ); player.sendDebug( "Sessions: " + std::to_string( pServerZone->getSessionCount() ) ); } -void Sapphire::DebugCommandHandler::script( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +void Sapphire::World::Manager::DebugCommandMgr::script( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { - auto pLog = g_fw.get< Logger >(); - auto pScriptMgr = g_fw.get< Scripting::ScriptMgr >(); + auto pLog = framework()->get< Logger >(); + auto pScriptMgr = framework()->get< Scripting::ScriptMgr >(); std::string subCommand; std::string params = ""; @@ -769,9 +777,10 @@ void Sapphire::DebugCommandHandler::script( char* data, Entity::Player& player, } void -Sapphire::DebugCommandHandler::instance( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +Sapphire::World::Manager::DebugCommandMgr::instance( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { - auto pTeriMgr = g_fw.get< TerritoryMgr >(); + auto pTeriMgr = framework()->get< TerritoryMgr >(); std::string cmd( data ), params, subCommand; auto cmdPos = cmd.find_first_of( ' ' ); @@ -985,9 +994,10 @@ Sapphire::DebugCommandHandler::instance( char* data, Entity::Player& player, std } } -void Sapphire::DebugCommandHandler::housing( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +void Sapphire::World::Manager::DebugCommandMgr::housing( char* data, Entity::Player& player, + std::shared_ptr< DebugCommand > command ) { - auto pTeriMgr = g_fw.get< TerritoryMgr >(); + auto pTeriMgr = framework()->get< TerritoryMgr >(); std::string cmd( data ), params, subCommand; auto cmdPos = cmd.find_first_of( ' ' ); diff --git a/src/world/DebugCommand/DebugCommandHandler.h b/src/world/Manager/DebugCommandMgr.h similarity index 90% rename from src/world/DebugCommand/DebugCommandHandler.h rename to src/world/Manager/DebugCommandMgr.h index 02bf76d8..304dd738 100644 --- a/src/world/DebugCommand/DebugCommandHandler.h +++ b/src/world/Manager/DebugCommandMgr.h @@ -4,23 +4,24 @@ #include #include -#include "DebugCommand.h" +#include "DebugCommand/DebugCommand.h" #include "ForwardsZone.h" +#include "BaseManager.h" -namespace Sapphire +namespace Sapphire::World::Manager { // handler for in game commands - class DebugCommandHandler + class DebugCommandMgr : public Manager::BaseManager { private: // container mapping command string to command object std::map< std::string, std::shared_ptr< DebugCommand > > m_commandMap; public: - DebugCommandHandler(); + DebugCommandMgr( FrameworkPtr pFw ); - ~DebugCommandHandler(); + ~DebugCommandMgr(); // register command to command map void registerCommand( const std::string& n, DebugCommand::pFunc, const std::string& hText, uint8_t uLevel ); diff --git a/src/world/Manager/HousingMgr.cpp b/src/world/Manager/HousingMgr.cpp index 44846d0e..2334b0bb 100644 --- a/src/world/Manager/HousingMgr.cpp +++ b/src/world/Manager/HousingMgr.cpp @@ -31,9 +31,8 @@ using namespace Sapphire::Network; using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; -extern Sapphire::Framework g_fw; - -Sapphire::World::Manager::HousingMgr::HousingMgr() +Sapphire::World::Manager::HousingMgr::HousingMgr( FrameworkPtr pFw ) : + BaseManager( pFw ) { } @@ -56,13 +55,13 @@ uint32_t Sapphire::World::Manager::HousingMgr::toLandSetId( uint16_t territoryTy Sapphire::Data::HousingZonePtr Sapphire::World::Manager::HousingMgr::getHousingZoneByLandSetId( uint32_t id ) { - auto pTeriMgr = g_fw.get< TerritoryMgr >(); + auto pTeriMgr = framework()->get< TerritoryMgr >(); return std::dynamic_pointer_cast< HousingZone >( pTeriMgr->getZoneByLandSetId( id ) ); } Sapphire::LandPtr Sapphire::World::Manager::HousingMgr::getLandByOwnerId( uint32_t id ) { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto res = pDb->query( "SELECT LandSetId, LandId FROM land WHERE OwnerId = " + std::to_string( id ) ); if( !res->next() ) @@ -104,7 +103,7 @@ void Sapphire::World::Manager::HousingMgr::sendLandSignOwned( Entity::Player& pl } uint32_t playerId = land->getOwnerId(); - std::string playerName = g_fw.get< Sapphire::ServerMgr >()->getPlayerNameFromDb( playerId ); + std::string playerName = framework()->get< World::ServerMgr >()->getPlayerNameFromDb( playerId ); memcpy( &landInfoSignPacket->data().ownerName, playerName.c_str(), playerName.size() ); @@ -278,7 +277,7 @@ void Sapphire::World::Manager::HousingMgr::sendWardLandInfo( Entity::Player& pla entry.infoFlags |= Common::WardlandFlags::IsEstateOwned; auto owner = land->getOwnerId(); - auto playerName = g_fw.get< Sapphire::ServerMgr >()->getPlayerNameFromDb( owner ); + auto playerName = framework()->get< World::ServerMgr >()->getPlayerNameFromDb( owner ); memcpy( &entry.estateOwnerName, playerName.c_str(), playerName.size() ); break; @@ -514,6 +513,6 @@ void Sapphire::World::Manager::HousingMgr::sendHousingInventory( Entity::Player& if( !container ) return; - auto invMgr = g_fw.get< Manager::InventoryMgr >(); + auto invMgr = framework()->get< Manager::InventoryMgr >(); invMgr->sendInventoryContainer( player, container ); } \ No newline at end of file diff --git a/src/world/Manager/HousingMgr.h b/src/world/Manager/HousingMgr.h index b4334714..5c44a066 100644 --- a/src/world/Manager/HousingMgr.h +++ b/src/world/Manager/HousingMgr.h @@ -2,6 +2,7 @@ #define SAPPHIRE_HOUSINGMGR_H #include "Forwards.h" +#include "BaseManager.h" #include "Territory/HousingZone.h" #include #include @@ -13,11 +14,11 @@ namespace Sapphire::Data namespace Sapphire::World::Manager { - class HousingMgr + class HousingMgr : public BaseManager { public: - HousingMgr(); + HousingMgr( FrameworkPtr pFw ); virtual ~HousingMgr(); bool init(); diff --git a/src/world/Manager/LinkshellMgr.cpp b/src/world/Manager/LinkshellMgr.cpp index 7f8d8b07..11d56859 100644 --- a/src/world/Manager/LinkshellMgr.cpp +++ b/src/world/Manager/LinkshellMgr.cpp @@ -5,15 +5,14 @@ #include "Framework.h" #include "LinkshellMgr.h" -extern Sapphire::Framework g_fw; - -Sapphire::World::Manager::LinkshellMgr::LinkshellMgr() +Sapphire::World::Manager::LinkshellMgr::LinkshellMgr( FrameworkPtr pFw ) : + BaseManager( pFw ) { } bool Sapphire::World::Manager::LinkshellMgr::loadLinkshells() { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto res = pDb->query( "SELECT LinkshellId, MasterCharacterId, CharacterIdList, " "LinkshellName, LeaderIdList, InviteIdList " "FROM infolinkshell " diff --git a/src/world/Manager/LinkshellMgr.h b/src/world/Manager/LinkshellMgr.h index 639d64f2..034f7884 100644 --- a/src/world/Manager/LinkshellMgr.h +++ b/src/world/Manager/LinkshellMgr.h @@ -4,11 +4,12 @@ #include #include #include "ForwardsZone.h" +#include "BaseManager.h" namespace Sapphire::World::Manager { - class LinkshellMgr + class LinkshellMgr : public Manager::BaseManager { private: std::map< uint64_t, LinkshellPtr > m_linkshellIdMap; @@ -19,7 +20,7 @@ namespace Sapphire::World::Manager LinkshellPtr getLinkshellById( uint64_t lsId ); public: - LinkshellMgr(); + LinkshellMgr( FrameworkPtr pFw ); bool loadLinkshells(); }; diff --git a/src/world/Manager/PlayerMgr.cpp b/src/world/Manager/PlayerMgr.cpp index 0c030e82..23cc64e8 100644 --- a/src/world/Manager/PlayerMgr.cpp +++ b/src/world/Manager/PlayerMgr.cpp @@ -10,13 +10,18 @@ #include -extern Sapphire::Framework g_fw; using namespace Sapphire::World::Manager; +Sapphire::World::Manager::PlayerMgr::PlayerMgr( Sapphire::FrameworkPtr pFw ) : + BaseManager( pFw ) +{ + +} + void Sapphire::World::Manager::PlayerMgr::movePlayerToLandDestination( Sapphire::Entity::Player& player, uint32_t landId, uint16_t param ) { // check if we have one in the db first - auto terriMgr = g_fw.get< TerritoryMgr >(); + auto terriMgr = framework()->get< TerritoryMgr >(); if( !terriMgr ) return; @@ -28,7 +33,7 @@ void Sapphire::World::Manager::PlayerMgr::movePlayerToLandDestination( Sapphire: // check if its a housing zone, zoning is different here if( terriMgr->isHousingTerritory( terriPos->getTargetZoneId() ) ) { - auto housingMgr = g_fw.get< HousingMgr >(); + auto housingMgr = framework()->get< HousingMgr >(); auto landSetId = housingMgr->toLandSetId( terriPos->getTargetZoneId(), param ); auto housingZone = housingMgr->getHousingZoneByLandSetId( landSetId ); @@ -64,4 +69,4 @@ void Sapphire::World::Manager::PlayerMgr::movePlayerToLandDestination( Sapphire: if( terriMgr->movePlayer( destinationZone, player.getAsPlayer() ) ) player.sendZonePackets(); -} \ No newline at end of file +} diff --git a/src/world/Manager/PlayerMgr.h b/src/world/Manager/PlayerMgr.h index 37592972..0b0cbd13 100644 --- a/src/world/Manager/PlayerMgr.h +++ b/src/world/Manager/PlayerMgr.h @@ -1,10 +1,13 @@ #include "ForwardsZone.h" +#include "BaseManager.h" namespace Sapphire::World::Manager { - class PlayerMgr +class PlayerMgr : public Manager::BaseManager { public: + PlayerMgr( FrameworkPtr pFw ); + void movePlayerToLandDestination( Sapphire::Entity::Player& player, uint32_t landId, uint16_t param = 0 ); }; } \ No newline at end of file diff --git a/src/world/Manager/ShopMgr.cpp b/src/world/Manager/ShopMgr.cpp index 9eb4ed09..30470fa2 100644 --- a/src/world/Manager/ShopMgr.cpp +++ b/src/world/Manager/ShopMgr.cpp @@ -5,12 +5,17 @@ #include #include -extern Sapphire::Framework g_fw; using namespace Sapphire; +Sapphire::World::Manager::ShopMgr::ShopMgr( FrameworkPtr pFw ) : + BaseManager( pFw ) +{ + +} + bool Sapphire::World::Manager::ShopMgr::purchaseGilShopItem( Entity::Player& player, uint32_t shopId, uint16_t itemId, uint32_t quantity ) { - auto exdData = g_fw.get< Data::ExdDataGenerated >(); + auto exdData = framework()->get< Data::ExdDataGenerated >(); if( !exdData ) return false; @@ -33,4 +38,4 @@ bool Sapphire::World::Manager::ShopMgr::purchaseGilShopItem( Entity::Player& pla player.removeCurrency( Common::CurrencyType::Gil, price ); return true; -} \ No newline at end of file +} diff --git a/src/world/Manager/ShopMgr.h b/src/world/Manager/ShopMgr.h index 17f3c55f..6464d026 100644 --- a/src/world/Manager/ShopMgr.h +++ b/src/world/Manager/ShopMgr.h @@ -1,10 +1,12 @@ #include "ForwardsZone.h" +#include "BaseManager.h" namespace Sapphire::World::Manager { - class ShopMgr + class ShopMgr : public Manager::BaseManager { public: + ShopMgr( FrameworkPtr pFw ); bool purchaseGilShopItem( Sapphire::Entity::Player& player, uint32_t shopId, uint16_t itemId, uint32_t quantity ); }; } \ No newline at end of file diff --git a/src/world/Manager/TerritoryMgr.cpp b/src/world/Manager/TerritoryMgr.cpp index cd1a2301..18ca39e0 100644 --- a/src/world/Manager/TerritoryMgr.cpp +++ b/src/world/Manager/TerritoryMgr.cpp @@ -17,9 +17,8 @@ #include "Territory/House.h" #include "Territory/Housing/HousingInteriorTerritory.h" -extern Sapphire::Framework g_fw; - -Sapphire::World::Manager::TerritoryMgr::TerritoryMgr() : +Sapphire::World::Manager::TerritoryMgr::TerritoryMgr( Sapphire::FrameworkPtr pFw ) : + BaseManager( pFw ), m_lastInstanceId( 10000 ) { @@ -27,7 +26,7 @@ Sapphire::World::Manager::TerritoryMgr::TerritoryMgr() : void Sapphire::World::Manager::TerritoryMgr::loadTerritoryTypeDetailCache() { - auto pExdData = g_fw.get< Data::ExdDataGenerated >(); + auto pExdData = framework()->get< Data::ExdDataGenerated >(); auto idList = pExdData->getTerritoryTypeIdList(); for( auto id : idList ) @@ -137,8 +136,8 @@ bool Sapphire::World::Manager::TerritoryMgr::isHousingTerritory( uint32_t territ bool Sapphire::World::Manager::TerritoryMgr::createDefaultTerritories() { - auto pExdData = g_fw.get< Data::ExdDataGenerated >(); - auto pLog = g_fw.get< Logger >(); + auto pExdData = framework()->get< Data::ExdDataGenerated >(); + auto pLog = framework()->get< Logger >(); // for each entry in territoryTypeExd, check if it is a normal and if so, add the zone object for( const auto& territory : m_territoryTypeDetailCacheMap ) { @@ -179,8 +178,8 @@ bool Sapphire::World::Manager::TerritoryMgr::createDefaultTerritories() bool Sapphire::World::Manager::TerritoryMgr::createHousingTerritories() { //separate housing zones from default - auto pExdData = g_fw.get< Data::ExdDataGenerated >(); - auto pLog = g_fw.get< Logger >(); + auto pExdData = framework()->get< Data::ExdDataGenerated >(); + auto pLog = framework()->get< Logger >(); for( const auto& territory : m_territoryTypeDetailCacheMap ) { auto territoryTypeId = territory.first; @@ -232,8 +231,8 @@ Sapphire::ZonePtr Sapphire::World::Manager::TerritoryMgr::createTerritoryInstanc if( isInstanceContentTerritory( territoryTypeId ) ) return nullptr; - auto pExdData = g_fw.get< Data::ExdDataGenerated >(); - auto pLog = g_fw.get< Logger >(); + auto pExdData = framework()->get< Data::ExdDataGenerated >(); + auto pLog = framework()->get< Logger >(); auto pTeri = getTerritoryDetail( territoryTypeId ); auto pPlaceName = pExdData->get< Sapphire::Data::PlaceName >( pTeri->placeName ); @@ -256,7 +255,7 @@ Sapphire::ZonePtr Sapphire::World::Manager::TerritoryMgr::createTerritoryInstanc Sapphire::ZonePtr Sapphire::World::Manager::TerritoryMgr::createInstanceContent( uint32_t contentFinderConditionId ) { - auto pExdData = g_fw.get< Data::ExdDataGenerated >(); + auto pExdData = framework()->get< Data::ExdDataGenerated >(); auto pContentFinderCondition = pExdData->get< Sapphire::Data::ContentFinderCondition >( contentFinderConditionId ); if( !pContentFinderCondition ) return nullptr; @@ -274,7 +273,7 @@ Sapphire::ZonePtr Sapphire::World::Manager::TerritoryMgr::createInstanceContent( if( !pTeri || pInstanceContent->name.empty() ) return nullptr; - auto pLog = g_fw.get< Logger >(); + auto pLog = framework()->get< Logger >(); pLog->debug( "Starting instance for InstanceContent id: " + std::to_string( instanceContentId ) + " (" + pInstanceContent->name + ")" ); @@ -301,7 +300,7 @@ Sapphire::ZonePtr Sapphire::World::Manager::TerritoryMgr::findOrCreateHousingInt } // otherwise, create it - auto housingMgr = g_fw.get< Manager::HousingMgr >(); + auto housingMgr = framework()->get< Manager::HousingMgr >(); auto parentZone = std::dynamic_pointer_cast< HousingZone >( getZoneByLandSetId( housingMgr->toLandSetId( static_cast< uint16_t >( landIdent.territoryTypeId ), @@ -395,7 +394,7 @@ Sapphire::ZonePtr Sapphire::World::Manager::TerritoryMgr::getInstanceZonePtr( ui void Sapphire::World::Manager::TerritoryMgr::loadTerritoryPositionMap() { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto pQR = pDb->query( "SELECT id, target_zone_id, pos_x, pos_y, pos_z, pos_o, radius FROM zonepositions;" ); while( pQR->next() ) @@ -454,7 +453,7 @@ void Sapphire::World::Manager::TerritoryMgr::updateTerritoryInstances( uint32_t zone->update( currentTime ); } - auto pLog = g_fw.get< Logger >(); + auto pLog = framework()->get< Logger >(); // remove internal house zones with nobody in them for( auto it = m_landIdentToZonePtrMap.begin(); it != m_landIdentToZonePtrMap.end(); ) @@ -502,7 +501,7 @@ bool Sapphire::World::Manager::TerritoryMgr::movePlayer( uint32_t territoryTypeI bool Sapphire::World::Manager::TerritoryMgr::movePlayer( ZonePtr pZone, Sapphire::Entity::PlayerPtr pPlayer ) { - auto pLog = g_fw.get< Logger >(); + auto pLog = framework()->get< Logger >(); if( !pZone ) { pLog->error( "Zone not found on this server." ); diff --git a/src/world/Manager/TerritoryMgr.h b/src/world/Manager/TerritoryMgr.h index 794c87af..3560338a 100644 --- a/src/world/Manager/TerritoryMgr.h +++ b/src/world/Manager/TerritoryMgr.h @@ -2,6 +2,7 @@ #define SAPPHIRE_TERRITORYMGR_H #include "ForwardsZone.h" +#include "BaseManager.h" #include #include @@ -26,7 +27,7 @@ namespace Sapphire::World::Manager This class manages persistent and temporary instances alike. */ - class TerritoryMgr + class TerritoryMgr : public Manager::BaseManager { public: @@ -59,7 +60,7 @@ namespace Sapphire::World::Manager //Eureka = 41, // wat }; - TerritoryMgr(); + TerritoryMgr( FrameworkPtr pFw ); /*! initializes the territoryMgr */ bool init(); diff --git a/src/world/Network/GameConnection.cpp b/src/world/Network/GameConnection.cpp index 25c42c9b..6bec8a3f 100644 --- a/src/world/Network/GameConnection.cpp +++ b/src/world/Network/GameConnection.cpp @@ -12,7 +12,7 @@ #include "Network/PacketWrappers/InitUIPacket.h" -#include "DebugCommand/DebugCommandHandler.h" +#include "Manager/DebugCommandMgr.h" #include "GameConnection.h" #include "ServerMgr.h" @@ -397,7 +397,7 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network:: const std::vector< Sapphire::Network::Packets::FFXIVARR_PACKET_RAW >& packetData ) { auto pLog = g_fw.get< Logger >(); - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = g_fw.get< World::ServerMgr >(); // if a session is set, update the last time it recieved a game packet if( m_pSession ) m_pSession->updateLastDataTime(); diff --git a/src/world/Network/GameConnection.h b/src/world/Network/GameConnection.h index 3efbdde5..03d04014 100644 --- a/src/world/Network/GameConnection.h +++ b/src/world/Network/GameConnection.h @@ -47,7 +47,7 @@ namespace Sapphire::Network HandlerMap m_chatHandlerMap; HandlerStrMap m_chatHandlerStrMap; - SessionPtr m_pSession; + World::SessionPtr m_pSession; LockedQueue< Sapphire::Network::Packets::FFXIVARR_PACKET_RAW > m_inQueue; LockedQueue< Packets::FFXIVPacketBasePtr > m_outQueue; diff --git a/src/world/Network/Handlers/ActionHandler.cpp b/src/world/Network/Handlers/ActionHandler.cpp index b6e4f1db..22633834 100644 --- a/src/world/Network/Handlers/ActionHandler.cpp +++ b/src/world/Network/Handlers/ActionHandler.cpp @@ -17,7 +17,7 @@ #include "Network/PacketWrappers/PlayerStateFlagsPacket.h" -#include "DebugCommand/DebugCommandHandler.h" +#include "Manager/DebugCommandMgr.h" #include "Action/Action.h" #include "Action/ActionCast.h" diff --git a/src/world/Network/Handlers/ClientTriggerHandler.cpp b/src/world/Network/Handlers/ClientTriggerHandler.cpp index de7528c2..c1cb6ffb 100644 --- a/src/world/Network/Handlers/ClientTriggerHandler.cpp +++ b/src/world/Network/Handlers/ClientTriggerHandler.cpp @@ -22,7 +22,7 @@ #include "Network/PacketWrappers/ServerNoticePacket.h" #include "Network/PacketWrappers/ActorControlPacket142.h" -#include "DebugCommand/DebugCommandHandler.h" +#include "Manager/DebugCommandMgr.h" #include "Event/EventHelper.h" @@ -48,7 +48,7 @@ void examineHandler( Sapphire::Entity::Player& player, uint32_t targetId ) { using namespace Sapphire; - auto pSession = g_fw.get< Sapphire::ServerMgr >()->getSession( targetId ); + auto pSession = g_fw.get< World::ServerMgr >()->getSession( targetId ); if( pSession ) { auto pTarget = pSession->getPlayer(); diff --git a/src/world/Network/Handlers/GMCommandHandlers.cpp b/src/world/Network/Handlers/GMCommandHandlers.cpp index ce9992ea..d9b40299 100644 --- a/src/world/Network/Handlers/GMCommandHandlers.cpp +++ b/src/world/Network/Handlers/GMCommandHandlers.cpp @@ -552,7 +552,7 @@ void Sapphire::Network::GameConnection::gm2Handler( const Packets::FFXIVARR_PACK return; auto pLog = g_fw.get< Logger >(); - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = g_fw.get< World::ServerMgr >(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcGmCommand2 >( inPacket ); diff --git a/src/world/Network/Handlers/InventoryHandler.cpp b/src/world/Network/Handlers/InventoryHandler.cpp index 370d0d75..f16b6b0c 100644 --- a/src/world/Network/Handlers/InventoryHandler.cpp +++ b/src/world/Network/Handlers/InventoryHandler.cpp @@ -11,7 +11,7 @@ #include "Territory/Zone.h" #include "Territory/ZonePosition.h" -#include "DebugCommand/DebugCommandHandler.h" +#include "Manager/DebugCommandMgr.h" #include "Actor/Player.h" #include "Session.h" diff --git a/src/world/Network/Handlers/PacketHandlers.cpp b/src/world/Network/Handlers/PacketHandlers.cpp index 1d3f394a..3a6c6625 100644 --- a/src/world/Network/Handlers/PacketHandlers.cpp +++ b/src/world/Network/Handlers/PacketHandlers.cpp @@ -34,7 +34,7 @@ #include "Network/PacketWrappers/EventFinishPacket.h" #include "Network/PacketWrappers/PlayerStateFlagsPacket.h" -#include "DebugCommand/DebugCommandHandler.h" +#include "Manager/DebugCommandMgr.h" #include "Event/EventHelper.h" @@ -113,7 +113,7 @@ void Sapphire::Network::GameConnection::reqExamineSearchCommentHandler( const Pa { auto targetId = *reinterpret_cast< const uint32_t* >( &inPacket.data[ 0x10 ] ); - auto pSession = g_fw.get< Sapphire::ServerMgr >()->getSession( targetId ); + auto pSession = g_fw.get< World::ServerMgr >()->getSession( targetId ); g_fw.get< Sapphire::Logger >()->debug( std::to_string( targetId ) ); @@ -140,7 +140,7 @@ void Sapphire::Network::GameConnection::reqExamineFcInfo( const Packets::FFXIVAR { auto targetId = *reinterpret_cast< const uint32_t* >( &inPacket.data[ 0x18 ] ); - auto pSession = g_fw.get< Sapphire::ServerMgr >()->getSession( targetId ); + auto pSession = g_fw.get< World::ServerMgr >()->getSession( targetId ); g_fw.get< Sapphire::Logger >()->debug( std::to_string( targetId ) ); @@ -528,7 +528,7 @@ void Sapphire::Network::GameConnection::socialListHandler( const Packets::FFXIVA void Sapphire::Network::GameConnection::chatHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto pDebugCom = g_fw.get< DebugCommandHandler >(); + auto pDebugCom = g_fw.get< DebugCommandMgr >(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcChatHandler >( inPacket ); @@ -600,7 +600,7 @@ void Sapphire::Network::GameConnection::tellHandler( const Packets::FFXIVARR_PAC { const auto packet = ZoneChannelPacket< Client::FFXIVIpcTellHandler >( inPacket ); - auto pZoneServer = g_fw.get< ServerMgr >(); + auto pZoneServer = g_fw.get< World::ServerMgr >(); auto pSession = pZoneServer->getSession( packet.data().targetPCName ); diff --git a/src/world/ServerMgr.cpp b/src/world/ServerMgr.cpp index ec597356..1575af8c 100644 --- a/src/world/ServerMgr.cpp +++ b/src/world/ServerMgr.cpp @@ -33,17 +33,15 @@ #include "Manager/LinkshellMgr.h" #include "Manager/TerritoryMgr.h" #include "Manager/HousingMgr.h" -#include "DebugCommand/DebugCommandHandler.h" +#include "Manager/DebugCommandMgr.h" #include "Manager/PlayerMgr.h" #include "Manager/ShopMgr.h" #include "Manager/InventoryMgr.h" - -extern Sapphire::Framework g_fw; - using namespace Sapphire::World::Manager; -Sapphire::ServerMgr::ServerMgr( const std::string& configName ) : +Sapphire::World::ServerMgr::ServerMgr( const std::string& configName, FrameworkPtr pFw ) : + Manager::BaseManager( pFw ), m_configName( configName ), m_bRunning( true ), m_lastDBPingTime( 0 ), @@ -51,19 +49,19 @@ Sapphire::ServerMgr::ServerMgr( const std::string& configName ) : { } -Sapphire::ServerMgr::~ServerMgr() +Sapphire::World::ServerMgr::~ServerMgr() { } -size_t Sapphire::ServerMgr::getSessionCount() const +size_t Sapphire::World::ServerMgr::getSessionCount() const { return m_sessionMapById.size(); } -bool Sapphire::ServerMgr::loadSettings( int32_t argc, char* argv[] ) +bool Sapphire::World::ServerMgr::loadSettings( int32_t argc, char* argv[] ) { - auto pLog = g_fw.get< Sapphire::Logger >(); - auto pConfig = g_fw.get< Sapphire::ConfigMgr >(); + auto pLog = framework()->get< Sapphire::Logger >(); + auto pConfig = framework()->get< Sapphire::ConfigMgr >(); pLog->info( "Loading config " + m_configName ); @@ -80,7 +78,7 @@ bool Sapphire::ServerMgr::loadSettings( int32_t argc, char* argv[] ) return true; } -void Sapphire::ServerMgr::run( int32_t argc, char* argv[] ) +void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] ) { using namespace Sapphire; using namespace Sapphire::World; @@ -88,12 +86,12 @@ void Sapphire::ServerMgr::run( int32_t argc, char* argv[] ) auto pLog = std::make_shared< Logger >(); pLog->setLogPath( "log/world" ); pLog->init(); - g_fw.set< Logger >( pLog ); + framework()->set< Logger >( pLog ); printBanner(); auto pConfig = std::make_shared< ConfigMgr >(); - g_fw.set< ConfigMgr >( pConfig ); + framework()->set< ConfigMgr >( pConfig ); if( !loadSettings( argc, argv ) ) { pLog->fatal( "Unable to load settings!" ); @@ -109,7 +107,7 @@ void Sapphire::ServerMgr::run( int32_t argc, char* argv[] ) pLog->fatal( "DataPath: " + dataPath ); return; } - g_fw.set< Data::ExdDataGenerated >( pExdData ); + framework()->set< Data::ExdDataGenerated >( pExdData ); Sapphire::Db::ConnectionInfo info; info.password = pConfig->getValue< std::string >( "Database", "Password", "" ); @@ -128,16 +126,16 @@ void Sapphire::ServerMgr::run( int32_t argc, char* argv[] ) pLog->fatal( "Database not initialized properly!" ); return; } - g_fw.set< Db::DbWorkerPool< Db::ZoneDbConnection > >( pDb ); + framework()->set< Db::DbWorkerPool< Db::ZoneDbConnection > >( pDb ); pLog->info( "LinkshellMgr: Caching linkshells" ); - auto pLsMgr = std::make_shared< Manager::LinkshellMgr >(); + auto pLsMgr = std::make_shared< Manager::LinkshellMgr >( framework() ); if( !pLsMgr->loadLinkshells() ) { pLog->fatal( "Unable to load linkshells!" ); return; } - g_fw.set< Manager::LinkshellMgr >( pLsMgr ); + framework()->set< Manager::LinkshellMgr >( pLsMgr ); auto pScript = std::make_shared< Scripting::ScriptMgr >(); if( !pScript->init() ) @@ -145,13 +143,13 @@ void Sapphire::ServerMgr::run( int32_t argc, char* argv[] ) pLog->fatal( "Failed to setup scripts!" ); return; } - g_fw.set< Scripting::ScriptMgr >( pScript ); + framework()->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 ); + auto pTeriMgr = std::make_shared< Manager::TerritoryMgr >( framework() ); + auto pHousingMgr = std::make_shared< Manager::HousingMgr >( framework() ); + framework()->set< Manager::HousingMgr >( pHousingMgr ); + framework()->set< Manager::TerritoryMgr >( pTeriMgr ); if( !pTeriMgr->init() ) { pLog->fatal( "Failed to setup zones!" ); @@ -166,15 +164,15 @@ void Sapphire::ServerMgr::run( int32_t argc, char* argv[] ) std::vector< std::thread > thread_list; thread_list.emplace_back( std::thread( std::bind( &Network::Hive::Run, hive.get() ) ) ); - auto pDebugCom = std::make_shared< DebugCommandHandler >(); - auto pPlayerMgr = std::make_shared< Manager::PlayerMgr >(); - auto pShopMgr = std::make_shared< Manager::ShopMgr >(); + auto pDebugCom = std::make_shared< DebugCommandMgr >( framework() ); + auto pPlayerMgr = std::make_shared< Manager::PlayerMgr >( framework() ); + auto pShopMgr = std::make_shared< Manager::ShopMgr >( framework() ); auto pInventoryMgr = std::make_shared< Manager::InventoryMgr >(); - g_fw.set< DebugCommandHandler >( pDebugCom ); - g_fw.set< Manager::PlayerMgr >( pPlayerMgr ); - g_fw.set< Manager::ShopMgr >( pShopMgr ); - g_fw.set< Manager::InventoryMgr >( pInventoryMgr ); + framework()->set< DebugCommandMgr >( pDebugCom ); + framework()->set< Manager::PlayerMgr >( pPlayerMgr ); + framework()->set< Manager::ShopMgr >( pShopMgr ); + framework()->set< Manager::InventoryMgr >( pInventoryMgr ); pLog->info( "World server running on " + m_ip + ":" + std::to_string( m_port ) ); @@ -187,19 +185,19 @@ void Sapphire::ServerMgr::run( int32_t argc, char* argv[] ) } -uint16_t Sapphire::ServerMgr::getWorldId() const +uint16_t Sapphire::World::ServerMgr::getWorldId() const { return m_worldId; } -void Sapphire::ServerMgr::setWorldId( uint16_t worldId ) +void Sapphire::World::ServerMgr::setWorldId( uint16_t worldId ) { m_worldId = worldId; } -void Sapphire::ServerMgr::printBanner() const +void Sapphire::World::ServerMgr::printBanner() const { - auto pLog = g_fw.get< Sapphire::Logger >(); + auto pLog = framework()->get< Sapphire::Logger >(); pLog->info( "===========================================================" ); pLog->info( "Sapphire Server Project " ); @@ -209,12 +207,12 @@ void Sapphire::ServerMgr::printBanner() const pLog->info( "===========================================================" ); } -void Sapphire::ServerMgr::mainLoop() +void Sapphire::World::ServerMgr::mainLoop() { - auto pLog = g_fw.get< Logger >(); - auto pTeriMgr = g_fw.get< TerritoryMgr >(); - auto pScriptMgr = g_fw.get< Scripting::ScriptMgr >(); - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pLog = framework()->get< Logger >(); + auto pTeriMgr = framework()->get< TerritoryMgr >(); + auto pScriptMgr = framework()->get< Scripting::ScriptMgr >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); while( isRunning() ) { @@ -290,13 +288,13 @@ void Sapphire::ServerMgr::mainLoop() } } -bool Sapphire::ServerMgr::createSession( uint32_t sessionId ) +bool Sapphire::World::ServerMgr::createSession( uint32_t sessionId ) { - auto pLog = g_fw.get< Sapphire::Logger >(); + auto pLog = framework()->get< Sapphire::Logger >(); std::lock_guard< std::mutex > lock( m_sessionMutex ); - const std::string session_id_str = std::to_string( sessionId ); + const auto session_id_str = std::to_string( sessionId ); auto it = m_sessionMapById.find( sessionId ); @@ -323,15 +321,14 @@ bool Sapphire::ServerMgr::createSession( uint32_t sessionId ) } -void Sapphire::ServerMgr::removeSession( uint32_t sessionId ) +void Sapphire::World::ServerMgr::removeSession( uint32_t sessionId ) { m_sessionMapById.erase( sessionId ); } -Sapphire::SessionPtr Sapphire::ServerMgr::getSession( uint32_t id ) +Sapphire::World::SessionPtr Sapphire::World::ServerMgr::getSession( uint32_t id ) { //std::lock_guard lock( m_sessionMutex ); - auto it = m_sessionMapById.find( id ); if( it != m_sessionMapById.end() ) @@ -340,7 +337,7 @@ Sapphire::SessionPtr Sapphire::ServerMgr::getSession( uint32_t id ) return nullptr; } -Sapphire::SessionPtr Sapphire::ServerMgr::getSession( const std::string& playerName ) +Sapphire::World::SessionPtr Sapphire::World::ServerMgr::getSession( const std::string& playerName ) { //std::lock_guard lock( m_sessionMutex ); @@ -352,18 +349,18 @@ Sapphire::SessionPtr Sapphire::ServerMgr::getSession( const std::string& playerN return nullptr; } -void Sapphire::ServerMgr::removeSession( const std::string& playerName ) +void Sapphire::World::ServerMgr::removeSession( const std::string& playerName ) { m_sessionMapByName.erase( playerName ); } -bool Sapphire::ServerMgr::isRunning() const +bool Sapphire::World::ServerMgr::isRunning() const { return m_bRunning; } -std::string Sapphire::ServerMgr::getPlayerNameFromDb( uint32_t playerId, bool forceDbLoad ) +std::string Sapphire::World::ServerMgr::getPlayerNameFromDb( uint32_t playerId, bool forceDbLoad ) { if( !forceDbLoad ) { @@ -373,7 +370,7 @@ std::string Sapphire::ServerMgr::getPlayerNameFromDb( uint32_t playerId, bool fo return ( it->second ); } - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto res = pDb->query( "SELECT name FROM charainfo WHERE characterid = " + std::to_string( playerId ) ); if( !res->next() ) @@ -385,16 +382,16 @@ std::string Sapphire::ServerMgr::getPlayerNameFromDb( uint32_t playerId, bool fo return playerName; } -void Sapphire::ServerMgr::updatePlayerName( uint32_t playerId, const std::string & playerNewName ) +void Sapphire::World::ServerMgr::updatePlayerName( uint32_t playerId, const std::string & playerNewName ) { m_playerNameMapById[ playerId ] = playerNewName; } -void Sapphire::ServerMgr::loadBNpcTemplates() +void Sapphire::World::ServerMgr::loadBNpcTemplates() { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto pTeriMgr = g_fw.get< TerritoryMgr >(); - auto pLog = g_fw.get< Logger >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pTeriMgr = framework()->get< TerritoryMgr >(); + auto pLog = framework()->get< Logger >(); auto stmt = pDb->getPreparedStatement( Db::ZoneDbStatements::ZONE_SEL_BNPCTEMPLATES ); @@ -433,7 +430,7 @@ void Sapphire::ServerMgr::loadBNpcTemplates() } -Sapphire::Entity::BNpcTemplatePtr Sapphire::ServerMgr::getBNpcTemplate( const std::string& key ) +Sapphire::Entity::BNpcTemplatePtr Sapphire::World::ServerMgr::getBNpcTemplate( const std::string& key ) { auto it = m_bNpcTemplateMap.find( key ); @@ -443,7 +440,7 @@ Sapphire::Entity::BNpcTemplatePtr Sapphire::ServerMgr::getBNpcTemplate( const st return it->second; } -Sapphire::Entity::BNpcTemplatePtr Sapphire::ServerMgr::getBNpcTemplate( uint32_t id ) +Sapphire::Entity::BNpcTemplatePtr Sapphire::World::ServerMgr::getBNpcTemplate( uint32_t id ) { for( auto entry : m_bNpcTemplateMap ) { diff --git a/src/world/ServerMgr.h b/src/world/ServerMgr.h index 75a22263..a18e0c45 100644 --- a/src/world/ServerMgr.h +++ b/src/world/ServerMgr.h @@ -5,18 +5,18 @@ #include #include - #include "ForwardsZone.h" +#include "Manager/BaseManager.h" -namespace Sapphire +namespace Sapphire::World { - class ServerMgr + class ServerMgr : public Manager::BaseManager { public: - ServerMgr( const std::string& configName ); + ServerMgr( const std::string& configName, FrameworkPtr pFw ); - ~ServerMgr(); + ~ServerMgr() override; void run( int32_t argc, char* argv[] ); @@ -25,8 +25,8 @@ namespace Sapphire void removeSession( uint32_t sessionId ); void removeSession( const std::string& playerName ); - SessionPtr getSession( uint32_t id ); - SessionPtr getSession( const std::string& playerName ); + World::SessionPtr getSession( uint32_t id ); + World::SessionPtr getSession( const std::string& playerName ); size_t getSessionCount() const; diff --git a/src/world/Session.cpp b/src/world/Session.cpp index 144650e0..24085c9e 100644 --- a/src/world/Session.cpp +++ b/src/world/Session.cpp @@ -15,7 +15,7 @@ extern Sapphire::Framework g_fw; namespace fs = std::experimental::filesystem; -Sapphire::Session::Session( uint32_t sessionId ) : +Sapphire::World::Session::Session( uint32_t sessionId ) : m_sessionId( sessionId ), m_lastDataTime( Util::getTimeSeconds() ), m_lastSqlTime( Util::getTimeSeconds() ), @@ -23,34 +23,34 @@ Sapphire::Session::Session( uint32_t sessionId ) : { } -Sapphire::Session::~Session() +Sapphire::World::Session::~Session() { } -void Sapphire::Session::setZoneConnection( Network::GameConnectionPtr pZoneCon ) +void Sapphire::World::Session::setZoneConnection( Network::GameConnectionPtr pZoneCon ) { pZoneCon->m_conType = Network::ConnectionType::Zone; m_pZoneConnection = pZoneCon; } -void Sapphire::Session::setChatConnection( Network::GameConnectionPtr pChatCon ) +void Sapphire::World::Session::setChatConnection( Network::GameConnectionPtr pChatCon ) { pChatCon->m_conType = Network::ConnectionType::Chat; m_pChatConnection = pChatCon; } -Sapphire::Network::GameConnectionPtr Sapphire::Session::getZoneConnection() const +Sapphire::Network::GameConnectionPtr Sapphire::World::Session::getZoneConnection() const { return m_pZoneConnection; } -Sapphire::Network::GameConnectionPtr Sapphire::Session::getChatConnection() const +Sapphire::Network::GameConnectionPtr Sapphire::World::Session::getChatConnection() const { return m_pChatConnection; } -bool Sapphire::Session::loadPlayer() +bool Sapphire::World::Session::loadPlayer() { m_pPlayer = Entity::make_Player(); @@ -67,7 +67,7 @@ bool Sapphire::Session::loadPlayer() } -void Sapphire::Session::close() +void Sapphire::World::Session::close() { if( m_pZoneConnection ) m_pZoneConnection->Disconnect(); @@ -85,37 +85,37 @@ void Sapphire::Session::close() } } -uint32_t Sapphire::Session::getId() const +uint32_t Sapphire::World::Session::getId() const { return m_sessionId; } -int64_t Sapphire::Session::getLastDataTime() const +int64_t Sapphire::World::Session::getLastDataTime() const { return m_lastDataTime; } -int64_t Sapphire::Session::getLastSqlTime() const +int64_t Sapphire::World::Session::getLastSqlTime() const { return m_lastSqlTime; } -bool Sapphire::Session::isValid() const +bool Sapphire::World::Session::isValid() const { return m_isValid; } -void Sapphire::Session::updateLastDataTime() +void Sapphire::World::Session::updateLastDataTime() { m_lastDataTime = Util::getTimeSeconds(); } -void Sapphire::Session::updateLastSqlTime() +void Sapphire::World::Session::updateLastSqlTime() { m_lastSqlTime = Util::getTimeSeconds(); } -void Sapphire::Session::startReplay( const std::string& path ) +void Sapphire::World::Session::startReplay( const std::string& path ) { auto pLog = g_fw.get< Logger >(); if( !fs::exists( path ) ) @@ -161,13 +161,13 @@ void Sapphire::Session::startReplay( const std::string& path ) m_isReplaying = true; } -void Sapphire::Session::stopReplay() +void Sapphire::World::Session::stopReplay() { m_isReplaying = false; m_replayCache.clear(); } -void Sapphire::Session::processReplay() +void Sapphire::World::Session::processReplay() { int at = 0; for( const auto& set : m_replayCache ) @@ -185,7 +185,7 @@ void Sapphire::Session::processReplay() m_isReplaying = false; } -void Sapphire::Session::sendReplayInfo() +void Sapphire::World::Session::sendReplayInfo() { std::string message = std::to_string( m_replayCache.size() ) + " Sets left in cache, "; @@ -197,7 +197,7 @@ void Sapphire::Session::sendReplayInfo() getPlayer()->sendDebug( message ); } -void Sapphire::Session::update() +void Sapphire::World::Session::update() { if( m_isReplaying ) processReplay(); @@ -226,7 +226,7 @@ void Sapphire::Session::update() } -Sapphire::Entity::PlayerPtr Sapphire::Session::getPlayer() const +Sapphire::Entity::PlayerPtr Sapphire::World::Session::getPlayer() const { return m_pPlayer; } diff --git a/src/world/Session.h b/src/world/Session.h index c82fda41..910ee59e 100644 --- a/src/world/Session.h +++ b/src/world/Session.h @@ -5,69 +5,69 @@ #include "ForwardsZone.h" -namespace Sapphire { - -class Session : - public std::enable_shared_from_this< Session > +namespace Sapphire::World { -public: - Session( uint32_t sessionId ); - ~Session(); + class Session : public std::enable_shared_from_this< Session > + { + public: + Session( uint32_t sessionId ); - void setZoneConnection( Network::GameConnectionPtr zoneCon ); + ~Session(); - void setChatConnection( Network::GameConnectionPtr chatCon ); + void setZoneConnection( Network::GameConnectionPtr zoneCon ); - Network::GameConnectionPtr getZoneConnection() const; + void setChatConnection( Network::GameConnectionPtr chatCon ); - Network::GameConnectionPtr getChatConnection() const; + Network::GameConnectionPtr getZoneConnection() const; - int64_t getLastDataTime() const; + Network::GameConnectionPtr getChatConnection() const; - int64_t getLastSqlTime() const; + int64_t getLastDataTime() const; - void updateLastDataTime(); + int64_t getLastSqlTime() const; - void updateLastSqlTime(); + void updateLastDataTime(); - void startReplay( const std::string& folderpath ); + void updateLastSqlTime(); - void stopReplay(); + void startReplay( const std::string& folderpath ); - void processReplay(); + void stopReplay(); - void sendReplayInfo(); + void processReplay(); - void close(); + void sendReplayInfo(); - uint32_t getId() const; + void close(); - bool loadPlayer(); + uint32_t getId() const; - void update(); + bool loadPlayer(); - bool isValid() const; + void update(); - Entity::PlayerPtr getPlayer() const; + bool isValid() const; -private: - uint32_t m_sessionId; + Entity::PlayerPtr getPlayer() const; - Entity::PlayerPtr m_pPlayer; + private: + uint32_t m_sessionId; - int64_t m_lastDataTime; + Entity::PlayerPtr m_pPlayer; - int64_t m_lastSqlTime; - bool m_isValid; + int64_t m_lastDataTime; - bool m_isReplaying; - std::vector< std::tuple< uint64_t, std::string > > m_replayCache; + int64_t m_lastSqlTime; + bool m_isValid; - Network::GameConnectionPtr m_pZoneConnection; - Network::GameConnectionPtr m_pChatConnection; + bool m_isReplaying; + std::vector< std::tuple< uint64_t, std::string > > m_replayCache; -}; + Network::GameConnectionPtr m_pZoneConnection; + Network::GameConnectionPtr m_pChatConnection; + + }; } diff --git a/src/world/Territory/Zone.cpp b/src/world/Territory/Zone.cpp index eedbe037..3aaccd85 100644 --- a/src/world/Territory/Zone.cpp +++ b/src/world/Territory/Zone.cpp @@ -223,7 +223,7 @@ void Sapphire::Zone::pushActor( Entity::ActorPtr pActor ) { auto pPlayer = pActor->getAsPlayer(); - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = g_fw.get< World::ServerMgr >(); auto pSession = pServerZone->getSession( pPlayer->getId() ); if( pSession ) m_sessionSet.insert( pSession ); @@ -285,7 +285,7 @@ void Sapphire::Zone::queuePacketForRange( Entity::Player& sourcePlayer, uint32_t if( pTeriMgr->isPrivateTerritory( getTerritoryTypeId() ) ) return; - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = g_fw.get< World::ServerMgr >(); for( auto entry : m_playerMap ) { auto player = entry.second; @@ -311,7 +311,7 @@ void Sapphire::Zone::queuePacketForZone( Entity::Player& sourcePlayer, if( pTeriMgr->isPrivateTerritory( getTerritoryTypeId() ) ) return; - auto pServerZone = g_fw.get< ServerMgr >(); + auto pServerZone = g_fw.get< World::ServerMgr >(); for( auto entry : m_playerMap ) { auto player = entry.second; diff --git a/src/world/Territory/Zone.h b/src/world/Territory/Zone.h index 132b797d..2dbf08df 100644 --- a/src/world/Territory/Zone.h +++ b/src/world/Territory/Zone.h @@ -7,7 +7,7 @@ #include "Cell.h" #include "CellHandler.h" -#include "Forwards.h" +#include "ForwardsZone.h" #include #include @@ -19,11 +19,9 @@ namespace Sapphire { - class Session; - class ZonePosition; - using SessionSet = std::set< SessionPtr >; + using SessionSet = std::set< World::SessionPtr >; using FestivalPair = std::pair< uint16_t, uint16_t >; namespace Data diff --git a/src/world/mainGameServer.cpp b/src/world/mainGameServer.cpp index b2c110c3..e73fec68 100644 --- a/src/world/mainGameServer.cpp +++ b/src/world/mainGameServer.cpp @@ -12,7 +12,8 @@ using namespace Sapphire::World; bool setupFramework() { - auto pServer = std::make_shared< ServerMgr >( "config.ini" ); + auto pFramework = Sapphire::make_Framework(); + auto pServer = std::make_shared< ServerMgr >( "config.ini", pFramework ); g_fw.set< ServerMgr >( pServer ); return true; From f1c0512d282c5c385752b2230626827423a8e032 Mon Sep 17 00:00:00 2001 From: Mordred Date: Sun, 23 Dec 2018 03:53:08 +0100 Subject: [PATCH 3/6] Progress... --- src/api/main.cpp | 66 +++--- src/common/Database/DbConnection.cpp | 14 +- src/common/Database/DbLoader.cpp | 12 +- src/common/Database/DbWorkerPool.cpp | 27 +-- src/common/Forwards.h | 2 + src/common/Logging/Logger.cpp | 9 +- src/common/Logging/Logger.h | 15 +- src/common/Network/Connection.cpp | 6 +- src/common/Network/Connection.h | 14 +- src/dbm/main.cpp | 45 ++-- src/lobby/GameConnection.cpp | 12 +- src/lobby/GameConnection.h | 2 +- src/lobby/ServerLobby.cpp | 202 +++++++++--------- src/scripts/quest/ManFst001.cpp | 6 +- src/scripts/quest/ManFst002.cpp | 6 +- src/scripts/quest/ManFst003.cpp | 6 +- src/scripts/quest/ManFst004.cpp | 6 +- src/scripts/quest/ManSea001.cpp | 6 +- src/scripts/quest/ManSea002.cpp | 6 +- src/scripts/quest/ManSea003.cpp | 6 +- src/scripts/quest/ManWil001.cpp | 6 +- src/scripts/quest/ManWil002.cpp | 6 +- .../quest/subquest/gridania/SubFst001.cpp | 6 +- .../quest/subquest/gridania/SubFst002.cpp | 6 +- .../quest/subquest/gridania/SubFst003.cpp | 6 +- .../quest/subquest/gridania/SubFst004.cpp | 6 +- .../quest/subquest/gridania/SubFst008.cpp | 6 +- .../quest/subquest/gridania/SubFst009.cpp | 6 +- .../quest/subquest/gridania/SubFst010.cpp | 6 +- .../quest/subquest/gridania/SubFst011.cpp | 6 +- .../quest/subquest/gridania/SubFst013.cpp | 9 +- .../quest/subquest/gridania/SubFst014.cpp | 6 +- .../quest/subquest/gridania/SubFst015.cpp | 6 +- .../quest/subquest/gridania/SubFst019.cpp | 6 +- .../quest/subquest/gridania/SubFst026.cpp | 6 +- .../quest/subquest/gridania/SubFst029.cpp | 6 +- .../quest/subquest/gridania/SubFst030.cpp | 6 +- .../quest/subquest/gridania/SubFst041.cpp | 6 +- .../quest/subquest/limsa/SubSea001.cpp | 6 +- .../quest/subquest/uldah/SubWil000.cpp | 6 +- .../quest/subquest/uldah/SubWil001.cpp | 6 +- .../quest/subquest/uldah/SubWil002.cpp | 6 +- .../quest/subquest/uldah/SubWil004.cpp | 6 +- .../quest/subquest/uldah/SubWil006.cpp | 6 +- .../quest/subquest/uldah/SubWil007.cpp | 9 +- .../quest/subquest/uldah/SubWil018.cpp | 6 +- .../quest/subquest/uldah/SubWil019.cpp | 6 +- .../quest/subquest/uldah/SubWil021.cpp | 6 +- .../quest/subquest/uldah/SubWil022.cpp | 6 +- .../quest/subquest/uldah/SubWil027.cpp | 6 +- .../quest/subquest/uldah/SubWil028.cpp | 6 +- .../quest/subquest/uldah/SubWil029.cpp | 6 +- src/tools/exd_common_gen/main.cpp | 11 +- src/tools/exd_struct_gen/main.cpp | 15 +- src/tools/exd_struct_test/main.cpp | 19 +- src/tools/mob_parse/main.cpp | 77 +++---- src/tools/quest_parser/main.cpp | 15 +- src/world/Action/EventAction.cpp | 6 +- src/world/Action/EventItemAction.cpp | 8 +- src/world/Actor/EventObject.cpp | 7 +- src/world/Actor/Player.cpp | 10 +- src/world/Actor/PlayerEvent.cpp | 12 +- src/world/Actor/PlayerInventory.cpp | 2 - src/world/Actor/PlayerSql.cpp | 7 +- src/world/Event/EventHelper.h | 15 -- src/world/Inventory/ItemContainer.cpp | 8 +- src/world/Manager/DebugCommandMgr.cpp | 23 +- .../EventHelper.cpp => Manager/EventMgr.cpp} | 22 +- src/world/Manager/EventMgr.h | 23 ++ src/world/Manager/TerritoryMgr.cpp | 44 ++-- src/world/Network/GameConnection.cpp | 79 +++---- src/world/Network/GameConnection.h | 7 +- src/world/Network/Handlers/ActionHandler.cpp | 9 +- src/world/Network/Handlers/CFHandlers.cpp | 25 +-- .../Network/Handlers/ClientTriggerHandler.cpp | 53 +++-- src/world/Network/Handlers/EventHandlers.cpp | 89 ++++---- .../Network/Handlers/GMCommandHandlers.cpp | 34 +-- .../Network/Handlers/InventoryHandler.cpp | 9 +- src/world/Network/Handlers/PacketHandlers.cpp | 103 +++++---- src/world/Script/NativeScriptApi.h | 2 +- src/world/Script/NativeScriptMgr.cpp | 18 +- src/world/Script/NativeScriptMgr.h | 7 +- src/world/Script/ScriptLoader.cpp | 36 ++-- src/world/Script/ScriptLoader.h | 19 ++ src/world/Script/ScriptMgr.cpp | 47 ++-- src/world/Script/ScriptMgr.h | 5 +- src/world/ServerMgr.cpp | 72 +++---- src/world/Session.cpp | 3 +- src/world/Territory/Cell.cpp | 2 - src/world/Territory/House.cpp | 2 +- .../Housing/HousingInteriorTerritory.cpp | 3 +- src/world/Territory/HousingZone.cpp | 3 +- src/world/Territory/InstanceContent.cpp | 21 +- src/world/Territory/Land.cpp | 4 +- src/world/Territory/Zone.cpp | 11 +- 95 files changed, 860 insertions(+), 793 deletions(-) delete mode 100644 src/world/Event/EventHelper.h rename src/world/{Event/EventHelper.cpp => Manager/EventMgr.cpp} (85%) create mode 100644 src/world/Manager/EventMgr.h diff --git a/src/api/main.cpp b/src/api/main.cpp index 7b2dff21..b52f7824 100644 --- a/src/api/main.cpp +++ b/src/api/main.cpp @@ -27,13 +27,13 @@ #include #include +#include #include "Forwards.h" #include "SapphireAPI.h" Sapphire::Framework g_fw; -Sapphire::Logger g_log; Sapphire::Db::DbWorkerPool< Sapphire::Db::ZoneDbConnection > g_charaDb; Sapphire::Data::ExdDataGenerated g_exdDataGen; Sapphire::Network::SapphireAPI g_sapphireAPI; @@ -41,6 +41,7 @@ Sapphire::Network::SapphireAPI g_sapphireAPI; namespace fs = std::experimental::filesystem; using namespace std; +using namespace Sapphire; using HttpServer = SimpleWeb::Server< SimpleWeb::HTTP >; using HttpClient = SimpleWeb::Client< SimpleWeb::HTTP >; @@ -64,17 +65,17 @@ void reloadConfig() void print_request_info( shared_ptr< HttpServer::Request > request ) { - g_log.info( "Request from " + request->remote_endpoint_address + " (" + request->path + ")" ); + Logger::info( "Request from " + request->remote_endpoint_address + " (" + request->path + ")" ); } bool loadSettings( int32_t argc, char* argv[] ) { - g_log.info( "Loading config " + configPath ); + Logger::info( "Loading config " + configPath ); if( !m_pConfig->loadConfig( configPath ) ) { - g_log.fatal( "Error loading config " + configPath ); - g_log.fatal( "If this is the first time starting the server, we've copied the default one for your editing pleasure." ); + Logger::fatal( "Error loading config " + configPath ); + Logger::fatal( "If this is the first time starting the server, we've copied the default one for your editing pleasure." ); return false; } @@ -135,17 +136,17 @@ bool loadSettings( int32_t argc, char* argv[] ) } catch( ... ) { - g_log.error( "Error parsing argument: " + arg + " " + "value: " + val + "\n" ); - g_log.error( "Usage: \n" ); + Logger::error( "Error parsing argument: " + arg + " " + "value: " + val + "\n" ); + Logger::error( "Usage: \n" ); } } - g_log.info( "Setting up generated EXD data" ); + Logger::info( "Setting up generated EXD data" ); auto dataPath = m_pConfig->getValue< std::string >( "GlobalParameters", "DataPath", "" ); if( !g_exdDataGen.init( dataPath ) ) { - g_log.fatal( "Error setting up generated EXD data. Make sure that DataPath is set correctly in config.ini" ); - g_log.fatal( "DataPath: " + dataPath ); + Logger::fatal( "Error setting up generated EXD data. Make sure that DataPath is set correctly in config.ini" ); + Logger::fatal( "DataPath: " + dataPath ); return false; } @@ -168,7 +169,7 @@ bool loadSettings( int32_t argc, char* argv[] ) m_pConfig->getValue< std::string >( "RestNetwork", "ListenPort", "80" ) ) ); server.config.address = m_pConfig->getValue< std::string >( "RestNetwork", "ListenIp", "0.0.0.0" ); - g_log.info( "Database: Connected to " + info.host + ":" + std::to_string( info.port ) ); + Logger::info( "Database: Connected to " + info.host + ":" + std::to_string( info.port ) ); return true; } @@ -279,7 +280,7 @@ void createAccount( shared_ptr< HttpServer::Response > response, shared_ptr< Htt catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -313,7 +314,7 @@ void login( shared_ptr< HttpServer::Response > response, shared_ptr< HttpServer: catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -348,7 +349,7 @@ void deleteCharacter( shared_ptr< HttpServer::Response > response, shared_ptr< H catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -396,7 +397,7 @@ void createCharacter( shared_ptr< HttpServer::Response > response, shared_ptr< H catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -429,7 +430,7 @@ void insertSession( shared_ptr< HttpServer::Response > response, shared_ptr< Htt catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -464,7 +465,7 @@ void checkNameTaken( shared_ptr< HttpServer::Response > response, shared_ptr< Ht catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -506,7 +507,7 @@ void checkSession( shared_ptr< HttpServer::Response > response, shared_ptr< Http catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -536,7 +537,7 @@ void getNextCharId( shared_ptr< HttpServer::Response > response, shared_ptr< Htt catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -567,7 +568,7 @@ void getNextContentId( shared_ptr< HttpServer::Response > response, shared_ptr< catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -623,7 +624,7 @@ void getCharacterList( shared_ptr< HttpServer::Response > response, shared_ptr< catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -658,7 +659,7 @@ void get_init( shared_ptr< HttpServer::Response > response, shared_ptr< HttpServ catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -692,7 +693,7 @@ void get_headline_all( shared_ptr< HttpServer::Response > response, shared_ptr< catch( exception& e ) { *response << buildHttpResponse( 500 ); - g_log.error( e.what() ); + Logger::error( e.what() ); } } @@ -735,16 +736,13 @@ void defaultGet( shared_ptr< HttpServer::Response > response, shared_ptr< HttpSe int main( int argc, char* argv[] ) { - auto pLog = std::shared_ptr< Sapphire::Logger >( new Sapphire::Logger() ); - g_fw.set< Sapphire::Logger >( pLog ); - g_log.setLogPath( "log/SapphireAPI" ); - g_log.init(); + Logger::init( "log/SapphireAPI" ); - g_log.info( "===========================================================" ); - g_log.info( "Sapphire API Server " ); - g_log.info( "Version: 0.0.1" ); - g_log.info( "Compiled: " __DATE__ " " __TIME__ ); - g_log.info( "===========================================================" ); + Logger::info( "===========================================================" ); + Logger::info( "Sapphire API Server " ); + Logger::info( "Version: 0.0.1" ); + Logger::info( "Compiled: " __DATE__ " " __TIME__ ); + Logger::info( "===========================================================" ); if( !loadSettings( argc, argv ) ) throw std::exception(); @@ -771,8 +769,8 @@ int main( int argc, char* argv[] ) server.start(); } ); - g_log.info( "API server running on " + m_pConfig->getValue< std::string >( "RestNetwork", "ListenIp", "0.0.0.0" ) + ":" + - m_pConfig->getValue< std::string >( "RestNetwork", "ListenPort", "80" ) ); + Logger::info( "API server running on " + m_pConfig->getValue< std::string >( "RestNetwork", "ListenIp", "0.0.0.0" ) + ":" + + m_pConfig->getValue< std::string >( "RestNetwork", "ListenPort", "80" ) ); //Wait for server to start so that the client can connect this_thread::sleep_for( chrono::seconds( 1 ) ); diff --git a/src/common/Database/DbConnection.cpp b/src/common/Database/DbConnection.cpp index eb9c920e..eeb301a0 100644 --- a/src/common/Database/DbConnection.cpp +++ b/src/common/Database/DbConnection.cpp @@ -6,8 +6,6 @@ #include "PreparedStatement.h" #include "Framework.h" -extern Sapphire::Framework g_fw; - Sapphire::Db::DbConnection::DbConnection( ConnectionInfo& connInfo ) : m_reconnecting( false ), m_prepareError( false ), @@ -66,7 +64,7 @@ uint32_t Sapphire::Db::DbConnection::open() } catch( std::runtime_error& e ) { - g_fw.get< Logger >()->error( e.what() ); + Logger::error( e.what() ); return 1; } @@ -118,7 +116,7 @@ bool Sapphire::Db::DbConnection::execute( const std::string& sql ) } catch( std::runtime_error& e ) { - g_fw.get< Logger >()->error( e.what() ); + Logger::error( e.what() ); return false; } } @@ -133,7 +131,7 @@ std::shared_ptr< Mysql::ResultSet > Sapphire::Db::DbConnection::query( const std } catch( std::runtime_error& e ) { - g_fw.get< Logger >()->error( e.what() ); + Logger::error( e.what() ); return nullptr; } } @@ -170,7 +168,7 @@ Sapphire::Db::DbConnection::query( std::shared_ptr< Sapphire::Db::PreparedStatem } catch( std::runtime_error& e ) { - g_fw.get< Logger >()->error( e.what() ); + Logger::error( e.what() ); return nullptr; } @@ -196,7 +194,7 @@ bool Sapphire::Db::DbConnection::execute( std::shared_ptr< Sapphire::Db::Prepare } catch( std::runtime_error& e ) { - g_fw.get< Logger >()->error( e.what() ); + Logger::error( e.what() ); return false; } } @@ -232,7 +230,7 @@ void Sapphire::Db::DbConnection::prepareStatement( uint32_t index, const std::st } catch( std::runtime_error& e ) { - g_fw.get< Logger >()->error( e.what() ); + Logger::error( e.what() ); m_prepareError = true; } diff --git a/src/common/Database/DbLoader.cpp b/src/common/Database/DbLoader.cpp index 5479874e..1d6b52be 100644 --- a/src/common/Database/DbLoader.cpp +++ b/src/common/Database/DbLoader.cpp @@ -3,9 +3,6 @@ #include "ZoneDbConnection.h" #include "DbWorkerPool.h" #include "Logging/Logger.h" -#include "Framework.h" - -extern Sapphire::Framework g_fw; Sapphire::Db::DbLoader::DbLoader() { @@ -17,14 +14,12 @@ Sapphire::Db::DbLoader& Sapphire::Db::DbLoader::addDb( Sapphire::Db::DbWorkerPoo m_open.push( [ this, info, &pool ]()->bool { - - auto pLog = g_fw.get< Logger >(); const uint8_t asyncThreads = info.asyncThreads; const uint8_t synchThreads = info.syncThreads; if( asyncThreads < 1 || asyncThreads > 32 ) { - pLog->error( + Logger::error( "database: invalid number of worker threads specified. Please pick a value between 1 and 32." ); return false; } @@ -40,7 +35,7 @@ Sapphire::Db::DbLoader& Sapphire::Db::DbLoader::addDb( Sapphire::Db::DbWorkerPoo if( error ) { - pLog->error( "DatabasePool failed to open." ); + Logger::error( "DatabasePool failed to open." ); return false; } } @@ -55,8 +50,7 @@ Sapphire::Db::DbLoader& Sapphire::Db::DbLoader::addDb( Sapphire::Db::DbWorkerPoo { if( !pool.prepareStatements() ) { - auto pLog = g_fw.get< Logger >(); - pLog->error( "Could not prepare statements of the database, see log for details." ); + Logger::error( "Could not prepare statements of the database, see log for details." ); return false; } return true; diff --git a/src/common/Database/DbWorkerPool.cpp b/src/common/Database/DbWorkerPool.cpp index 9d154967..2b07acca 100644 --- a/src/common/Database/DbWorkerPool.cpp +++ b/src/common/Database/DbWorkerPool.cpp @@ -10,8 +10,6 @@ #include "Logging/Logger.h" #include -extern Sapphire::Framework g_fw; - class PingOperation : public Sapphire::Db::Operation { @@ -23,8 +21,7 @@ class PingOperation : }; template< class T > -Sapphire::Db::DbWorkerPool< T >::DbWorkerPool() - : +Sapphire::Db::DbWorkerPool< T >::DbWorkerPool() : m_queue( new Sapphire::LockedWaitQueue< std::shared_ptr< Operation > >() ), m_asyncThreads( 0 ), m_synchThreads( 0 ) @@ -39,8 +36,8 @@ Sapphire::Db::DbWorkerPool< T >::~DbWorkerPool() template< class T > void Sapphire::Db::DbWorkerPool< T >::setConnectionInfo( const ConnectionInfo& info, - uint8_t asyncThreads, - uint8_t synchThreads ) + uint8_t asyncThreads, + uint8_t synchThreads ) { m_connectionInfo = info; m_asyncThreads = asyncThreads; @@ -50,10 +47,9 @@ void Sapphire::Db::DbWorkerPool< T >::setConnectionInfo( const ConnectionInfo& i template< class T > uint32_t Sapphire::Db::DbWorkerPool< T >::open() { - auto pLog = g_fw.get< Logger >(); - pLog->info( "[DbPool] Opening DatabasePool " + getDatabaseName() + - " Asynchronous connections: " + std::to_string( m_asyncThreads ) + - " Synchronous connections: " + std::to_string( m_synchThreads ) ); + Logger::info( "[DbPool] Opening DatabasePool " + getDatabaseName() + + " Asynchronous connections: " + std::to_string( m_asyncThreads ) + + " Synchronous connections: " + std::to_string( m_synchThreads ) ); uint32_t error = openConnections( IDX_ASYNC, m_asyncThreads ); @@ -64,9 +60,9 @@ uint32_t Sapphire::Db::DbWorkerPool< T >::open() if( !error ) { - pLog->info( "[DbPool] DatabasePool " + getDatabaseName() + " opened successfully. " + - std::to_string( ( m_connections[ IDX_SYNCH ].size() + m_connections[ IDX_ASYNC ].size() ) ) + - " total connections running." ); + Logger::info( "[DbPool] DatabasePool " + getDatabaseName() + " opened successfully. " + + std::to_string( ( m_connections[ IDX_SYNCH ].size() + m_connections[ IDX_ASYNC ].size() ) ) + + " total connections running." ); } return error; @@ -75,11 +71,10 @@ uint32_t Sapphire::Db::DbWorkerPool< T >::open() template< class T > void Sapphire::Db::DbWorkerPool< T >::close() { - auto pLog = g_fw.get< Logger >(); - pLog->info( "[DbPool] Closing down DatabasePool " + getDatabaseName() ); + Logger::info( "[DbPool] Closing down DatabasePool " + getDatabaseName() ); m_connections[ IDX_ASYNC ].clear(); m_connections[ IDX_SYNCH ].clear(); - pLog->info( "[DbPool] All connections on DatabasePool " + getDatabaseName() + "closed." ); + Logger::info( "[DbPool] All connections on DatabasePool " + getDatabaseName() + "closed." ); } template< class T > diff --git a/src/common/Forwards.h b/src/common/Forwards.h index 797b70fe..1746b883 100644 --- a/src/common/Forwards.h +++ b/src/common/Forwards.h @@ -8,6 +8,8 @@ namespace Sapphire class ConfigMgr; using ConfigMgrPtr = std::shared_ptr< ConfigMgr >; + class Framework; + using FrameworkPtr = std::shared_ptr< Framework >; namespace Network { diff --git a/src/common/Logging/Logger.cpp b/src/common/Logging/Logger.cpp index 2282641f..1a599551 100644 --- a/src/common/Logging/Logger.cpp +++ b/src/common/Logging/Logger.cpp @@ -23,7 +23,7 @@ namespace Sapphire } - void Logger::setLogPath( const std::string& logPath ) + void Logger::init( const std::string& logPath ) { auto pos = logPath.find_last_of( '/' ); @@ -33,15 +33,10 @@ namespace Sapphire fs::create_directories( realPath ); } - m_logFile = logPath; - } - - void Logger::init() - { spdlog::init_thread_pool( 8192, 1 ); auto stdout_sink = std::make_shared< spdlog::sinks::stdout_color_sink_mt >(); - auto daily_sink = std::make_shared< spdlog::sinks::daily_file_sink_mt >( m_logFile + ".log", 0, 0 ); + auto daily_sink = std::make_shared< spdlog::sinks::daily_file_sink_mt >( logPath + ".log", 0, 0 ); std::vector< spdlog::sink_ptr > sinks { stdout_sink, daily_sink }; diff --git a/src/common/Logging/Logger.h b/src/common/Logging/Logger.h index 8c48aa69..876fadc3 100644 --- a/src/common/Logging/Logger.h +++ b/src/common/Logging/Logger.h @@ -11,23 +11,20 @@ namespace Sapphire private: std::string m_logFile; - - public: Logger(); - ~Logger(); - void init(); + public: - void error( const std::string& text ); + static void init( const std::string& logPath ); - void info( const std::string& text ); + static void error( const std::string& text ); - void debug( const std::string& text ); + static void info( const std::string& text ); - void fatal( const std::string& text ); + static void debug( const std::string& text ); - void setLogPath( const std::string& logPath ); + static void fatal( const std::string& text ); }; diff --git a/src/common/Network/Connection.cpp b/src/common/Network/Connection.cpp index 357155b6..c23165df 100644 --- a/src/common/Network/Connection.cpp +++ b/src/common/Network/Connection.cpp @@ -1,17 +1,19 @@ #include "Connection.h" #include "Hive.h" #include +#include "Framework.h" namespace Sapphire { namespace Network { //----------------------------------------------------------------------------- -Connection::Connection( HivePtr hive ) : +Connection::Connection( HivePtr hive, FrameworkPtr pFw ) : m_hive( hive ), m_socket( hive->GetService() ), m_io_strand( hive->GetService() ), m_receive_buffer_size( 32000 ), - m_error_state( 0 ) + m_error_state( 0 ), + m_pFw( pFw ) { } diff --git a/src/common/Network/Connection.h b/src/common/Network/Connection.h index 84aa76c7..72f23a0d 100644 --- a/src/common/Network/Connection.h +++ b/src/common/Network/Connection.h @@ -12,6 +12,12 @@ #include "Acceptor.h" #include +namespace Sapphire +{ + class Framework; + using FrameworkPtr = std::shared_ptr< Framework >; +} + namespace Sapphire::Network { @@ -38,9 +44,9 @@ namespace Sapphire::Network std::list< std::vector< uint8_t > > m_pending_sends; int32_t m_receive_buffer_size; std::atomic< uint32_t > m_error_state; + Sapphire::FrameworkPtr m_pFw; - - Connection( HivePtr hive ); + Connection( HivePtr hive, FrameworkPtr pFw ); virtual ~Connection(); @@ -144,13 +150,13 @@ namespace Sapphire::Network //----------------------------------------------------------------------------- template< class T > - std::shared_ptr< T > addServerToHive( const std::string& listenIp, uint32_t port, HivePtr pHive ) + std::shared_ptr< T > addServerToHive( const std::string& listenIp, uint32_t port, HivePtr pHive, FrameworkPtr pFw ) { try { AcceptorPtr acceptor( new Acceptor( pHive ) ); acceptor->Listen( listenIp, port ); - std::shared_ptr< T > connection( new T( pHive, acceptor ) ); + std::shared_ptr< T > connection( new T( pHive, acceptor, pFw ) ); acceptor->Accept( connection ); return connection; } diff --git a/src/dbm/main.cpp b/src/dbm/main.cpp index 378103c8..6cce2ac4 100644 --- a/src/dbm/main.cpp +++ b/src/dbm/main.cpp @@ -16,7 +16,7 @@ namespace filesys = std::experimental::filesystem; #include "DbManager.h" -Sapphire::Logger g_log; +using namespace Sapphire; std::vector< std::string > getAllFilesInDir( const std::string& dirPath, const std::vector< std::string > dirSkipList = {} ) @@ -77,20 +77,20 @@ std::string delChar( std::string &str, char del ) void printUsage() { - g_log.info( " Usage: sapphire_dbm " ); - g_log.info( "\t --mode" ); - g_log.info( "\t\t initialize -> Creates DB if not present and inserts default tables/data" ); - g_log.info( "\t\t check -> Checks if Sapphire DB-Version matches your DB-Version" ); - g_log.info( "\t\t update -> Updates your DB-Version to Sapphire DB-Version" ); - g_log.info( "\t\t clearchars -> Removes all character data from DB. Accounts will stay untouched" ); - g_log.info( "\t\t liquidate -> Removes all tables and deletes the DB" ); - g_log.info( "\t --user " ); - g_log.info( "\t --pass ( default empty )" ); - g_log.info( "\t --host ( default 127.0.0.1 )" ); - g_log.info( "\t --port ( default 3306 )" ); - g_log.info( "\t --database " ); - g_log.info( "\t --sfile ( default sql/schema/schema.sql )" ); - g_log.info( "\t --force ( skips user input / auto Yes )" ); + Logger::info( " Usage: sapphire_dbm " ); + Logger::info( "\t --mode" ); + Logger::info( "\t\t initialize -> Creates DB if not present and inserts default tables/data" ); + Logger::info( "\t\t check -> Checks if Sapphire DB-Version matches your DB-Version" ); + Logger::info( "\t\t update -> Updates your DB-Version to Sapphire DB-Version" ); + Logger::info( "\t\t clearchars -> Removes all character data from DB. Accounts will stay untouched" ); + Logger::info( "\t\t liquidate -> Removes all tables and deletes the DB" ); + Logger::info( "\t --user " ); + Logger::info( "\t --pass ( default empty )" ); + Logger::info( "\t --host ( default 127.0.0.1 )" ); + Logger::info( "\t --port ( default 3306 )" ); + Logger::info( "\t --database " ); + Logger::info( "\t --sfile ( default sql/schema/schema.sql )" ); + Logger::info( "\t --force ( skips user input / auto Yes )" ); } int main( int32_t argc, char* argv[] ) @@ -104,8 +104,7 @@ int main( int32_t argc, char* argv[] ) std::string database; std::string pass; - g_log.setLogPath( "log/SapphireDbm" ); - g_log.init(); + Logger::init( "log/SapphireDbm" ); std::string sFile; std::string iFile; @@ -181,23 +180,23 @@ int main( int32_t argc, char* argv[] ) } else { - g_log.fatal( "Not a valid mode: " + mode + " !" ); + Logger::fatal( "Not a valid mode: " + mode + " !" ); return 1; } - g_log.info( "Launching in " + mode + " mode..." ); + Logger::info( "Launching in " + mode + " mode..." ); if( !dbm.connect() ) { - g_log.fatal( "Could not connect to server!" ); - g_log.fatal( dbm.getLastError() ); + Logger::fatal( "Could not connect to server!" ); + Logger::fatal( dbm.getLastError() ); return 1; } if( !dbm.performAction() ) { - g_log.fatal( "Could not perform action!" ); - g_log.fatal( dbm.getLastError() ); + Logger::fatal( "Could not perform action!" ); + Logger::fatal( dbm.getLastError() ); return 1; } diff --git a/src/lobby/GameConnection.cpp b/src/lobby/GameConnection.cpp index 3f5e861e..c6485ef6 100644 --- a/src/lobby/GameConnection.cpp +++ b/src/lobby/GameConnection.cpp @@ -24,9 +24,11 @@ using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; Sapphire::Network::GameConnection::GameConnection( Sapphire::Network::HivePtr pHive, - Sapphire::Network::AcceptorPtr pAcceptor ) - : - Connection( pHive ), m_pAcceptor( pAcceptor ), m_bEncryptionInitialized( false ) + Sapphire::Network::AcceptorPtr pAcceptor, + FrameworkPtr pFw ) : + Connection( pHive, pFw ), + m_pAcceptor( pAcceptor ), + m_bEncryptionInitialized( false ) { } @@ -39,7 +41,7 @@ Sapphire::Network::GameConnection::~GameConnection() // overwrite the parents onConnect for our game socket needs void Sapphire::Network::GameConnection::OnAccept( const std::string& host, uint16_t port ) { - auto connection = make_GameConnection( m_hive, m_pAcceptor ); + auto connection = make_GameConnection( m_hive, m_pAcceptor, m_pFw ); m_pAcceptor->Accept( connection ); g_log.info( "Connect from " + m_socket.remote_endpoint().address().to_string() ); @@ -473,7 +475,7 @@ void Sapphire::Network::GameConnection::generateEncryptionKey( uint32_t key, con } void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::Packets::FFXIVARR_PACKET_HEADER& ipcHeader, - const std::vector< Sapphire::Network::Packets::FFXIVARR_PACKET_RAW >& packetData ) + const std::vector< Sapphire::Network::Packets::FFXIVARR_PACKET_RAW >& packetData ) { for( auto inPacket : packetData ) diff --git a/src/lobby/GameConnection.h b/src/lobby/GameConnection.h index d4626407..20945c7f 100644 --- a/src/lobby/GameConnection.h +++ b/src/lobby/GameConnection.h @@ -40,7 +40,7 @@ namespace Sapphire::Network LockedQueue< Packets::GamePacketPtr > m_outQueue; public: - GameConnection( HivePtr pHive, AcceptorPtr pAcceptor ); + GameConnection( HivePtr pHive, AcceptorPtr pAcceptor, FrameworkPtr pFw ); ~GameConnection(); diff --git a/src/lobby/ServerLobby.cpp b/src/lobby/ServerLobby.cpp index e084889a..dcdacee1 100644 --- a/src/lobby/ServerLobby.cpp +++ b/src/lobby/ServerLobby.cpp @@ -10,7 +10,7 @@ #include #include -//#include "LobbySession.h" +#include "Framework.h" #include "ServerLobby.h" @@ -21,124 +21,124 @@ #include -Sapphire::Logger g_log; Sapphire::Network::RestConnector g_restConnector; -namespace Sapphire { - - -ServerLobby::ServerLobby( const std::string& configPath ) : - m_configPath( configPath ), - m_numConnections( 0 ) +namespace Sapphire { - m_pConfig = std::shared_ptr< ConfigMgr >( new ConfigMgr ); -} -ServerLobby::~ServerLobby( void ) -{ -} -LobbySessionPtr ServerLobby::getSession( char* sessionId ) -{ - return g_restConnector.getSession( sessionId ); -} - -ConfigMgrPtr ServerLobby::getConfig() const -{ - return m_pConfig; -} - -void ServerLobby::run( int32_t argc, char* argv[] ) -{ - g_log.setLogPath( "log/SapphireLobby" ); - g_log.init(); - - g_log.info( "===========================================================" ); - g_log.info( "Sapphire Server Project " ); - g_log.info( "Version: " + Version::VERSION ); - g_log.info( "Git Hash: " + Version::GIT_HASH ); - g_log.info( "Compiled: " __DATE__ " " __TIME__ ); - g_log.info( "===========================================================" ); - - if( !loadSettings( argc, argv ) ) + ServerLobby::ServerLobby( const std::string& configPath ) : + m_configPath( configPath ), + m_numConnections( 0 ) { - g_log.fatal( "Error loading settings! " ); - return; + m_pConfig = std::shared_ptr< ConfigMgr >( new ConfigMgr ); } - Network::HivePtr hive( new Network::Hive() ); - Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive ); - - g_log.info( - "Lobby server running on " + m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenIp", "0.0.0.0" ) + ":" + - m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenPort", "80" ) ); - - std::vector< std::thread > threadGroup; - - threadGroup.emplace_back( std::bind( &Network::Hive::Run, hive.get() ) ); - - for( auto& thread : threadGroup ) - if( thread.joinable() ) - thread.join(); - -} - -bool ServerLobby::loadSettings( int32_t argc, char* argv[] ) -{ - g_log.info( "Loading config " + m_configPath ); - - if( !m_pConfig->loadConfig( m_configPath ) ) + ServerLobby::~ServerLobby( void ) { - g_log.fatal( "Error loading config " + m_configPath ); - g_log.fatal( "If this is the first time starting the server, we've copied the default one for your editing pleasure." ); - return false; } - std::vector< std::string > args( argv + 1, argv + argc ); - for( size_t i = 0; i + 1 < args.size(); i += 2 ) - { - std::string arg( "" ); - std::string val( "" ); - try + LobbySessionPtr ServerLobby::getSession( char* sessionId ) + { + return g_restConnector.getSession( sessionId ); + } + + ConfigMgrPtr ServerLobby::getConfig() const + { + return m_pConfig; + } + + void ServerLobby::run( int32_t argc, char* argv[] ) + { + Logger::init( "log/SapphireLobby" ); + + Logger::info( "===========================================================" ); + Logger::info( "Sapphire Server Project " ); + Logger::info( "Version: " + Version::VERSION ); + Logger::info( "Git Hash: " + Version::GIT_HASH ); + Logger::info( "Compiled: " __DATE__ " " __TIME__ ); + Logger::info( "===========================================================" ); + + if( !loadSettings( argc, argv ) ) { - std::transform( arg.begin(), arg.end(), arg.begin(), [](unsigned char c){ return std::tolower( c ); } ); - val = std::string( args[ i + 1 ] ); + Logger::fatal( "Error loading settings! " ); + return; + } - // trim '-' from start of arg - arg = arg.erase( 0, arg.find_first_not_of( '-' ) ); + auto pFw = std::make_shared< Framework >(); + Network::HivePtr hive( new Network::Hive() ); + Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive, pFw ); - if( arg == "ip" ) + Logger::info( + "Lobby server running on " + m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenIp", "0.0.0.0" ) + ":" + + m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenPort", "80" ) ); + + std::vector< std::thread > threadGroup; + + threadGroup.emplace_back( std::bind( &Network::Hive::Run, hive.get() ) ); + + for( auto& thread : threadGroup ) + if( thread.joinable() ) + thread.join(); + + } + + bool ServerLobby::loadSettings( int32_t argc, char* argv[] ) + { + Logger::info( "Loading config " + m_configPath ); + + if( !m_pConfig->loadConfig( m_configPath ) ) + { + Logger::fatal( "Error loading config " + m_configPath ); + Logger::fatal( "If this is the first time starting the server, we've copied the default one for your editing pleasure." ); + return false; + } + std::vector< std::string > args( argv + 1, argv + argc ); + for( size_t i = 0; i + 1 < args.size(); i += 2 ) + { + std::string arg( "" ); + std::string val( "" ); + + try { - // todo: ip addr in config - m_pConfig->setValue< std::string >( "LobbyNetwork.ListenIp", val ); + std::transform( arg.begin(), arg.end(), arg.begin(), [](unsigned char c){ return std::tolower( c ); } ); + 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 + m_pConfig->setValue< std::string >( "LobbyNetwork.ListenIp", val ); + } + else if( arg == "p" || arg == "port" ) + { + m_pConfig->setValue< std::string >( "LobbyNetwork.LobbyPort", val ); + } + else if( arg == "worldip" || arg == "worldip" ) + { + m_pConfig->setValue< std::string >( "GlobalNetwork.ZoneHost", val ); + } + else if( arg == "worldport" ) + { + m_pConfig->setValue< std::string >( "GlobalNetwork.ZonePort", val ); + } } - else if( arg == "p" || arg == "port" ) + catch( ... ) { - m_pConfig->setValue< std::string >( "LobbyNetwork.LobbyPort", val ); - } - else if( arg == "worldip" || arg == "worldip" ) - { - m_pConfig->setValue< std::string >( "GlobalNetwork.ZoneHost", val ); - } - else if( arg == "worldport" ) - { - m_pConfig->setValue< std::string >( "GlobalNetwork.ZonePort", val ); + Logger::error( "Error parsing argument: " + arg + " " + "value: " + val + "\n" ); + Logger::error( "Usage: \n" ); } } - catch( ... ) - { - g_log.error( "Error parsing argument: " + arg + " " + "value: " + val + "\n" ); - g_log.error( "Usage: \n" ); - } + + m_port = m_pConfig->getValue< uint16_t >( "LobbyNetwork", "ListenPort", 54994 ); + m_ip = m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenIp", "0.0.0.0" ); + + g_restConnector.restHost = m_pConfig->getValue< std::string >( "GlobalNetwork", "RestHost" ) + ":" + + m_pConfig->getValue< std::string >( "GlobalNetwork", "RestPort" ); + g_restConnector.serverSecret = m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" ); + + return true; } - - m_port = m_pConfig->getValue< uint16_t >( "LobbyNetwork", "ListenPort", 54994 ); - m_ip = m_pConfig->getValue< std::string >( "LobbyNetwork", "ListenIp", "0.0.0.0" ); - - g_restConnector.restHost = m_pConfig->getValue< std::string >( "GlobalNetwork", "RestHost" ) + ":" + - m_pConfig->getValue< std::string >( "GlobalNetwork", "RestPort" ); - g_restConnector.serverSecret = m_pConfig->getValue< std::string >( "GlobalParameters", "ServerSecret" ); - - return true; -} } diff --git a/src/scripts/quest/ManFst001.cpp b/src/scripts/quest/ManFst001.cpp index a6a1fc7f..3998ae38 100644 --- a/src/scripts/quest/ManFst001.cpp +++ b/src/scripts/quest/ManFst001.cpp @@ -1,7 +1,8 @@ #include #include -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" #include "Event/EventHandler.h" +#include "Framework.h" // Quest Script: ManFst001_00039 // Quest Name: Coming to Gridania @@ -95,7 +96,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == ACTOR0 ) Scene00000( player ); diff --git a/src/scripts/quest/ManFst002.cpp b/src/scripts/quest/ManFst002.cpp index 7f892de4..7d3fdc53 100644 --- a/src/scripts/quest/ManFst002.cpp +++ b/src/scripts/quest/ManFst002.cpp @@ -1,7 +1,8 @@ #include #include #include "Event/EventHandler.h" -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" +#include "Framework.h" // Quest Script: ManFst002_00124 // Quest Name: Close to Home @@ -192,7 +193,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == ACTOR0 ) Scene00000( player ); diff --git a/src/scripts/quest/ManFst003.cpp b/src/scripts/quest/ManFst003.cpp index 640b6107..4fd91806 100644 --- a/src/scripts/quest/ManFst003.cpp +++ b/src/scripts/quest/ManFst003.cpp @@ -1,6 +1,7 @@ #include -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" #include +#include "Framework.h" // Quest Script: ManFst003_00123 // Quest Name: Close to Home @@ -81,7 +82,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/ManFst004.cpp b/src/scripts/quest/ManFst004.cpp index e9e59439..f3738813 100644 --- a/src/scripts/quest/ManFst004.cpp +++ b/src/scripts/quest/ManFst004.cpp @@ -1,6 +1,7 @@ #include -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" #include +#include "Framework.h" // Quest Script: ManFst004_00124 // Quest Name: Close to Home @@ -81,7 +82,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == ManFst004::Actor0 ) { diff --git a/src/scripts/quest/ManSea001.cpp b/src/scripts/quest/ManSea001.cpp index db0e5628..c22ff0f7 100644 --- a/src/scripts/quest/ManSea001.cpp +++ b/src/scripts/quest/ManSea001.cpp @@ -1,6 +1,7 @@ #include -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" #include +#include "Framework.h" // Quest Script: ManSea001_00107 // Quest Name: Coming to Limsa Lominsa @@ -141,7 +142,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == ACTOR0 ) Scene00000( player ); diff --git a/src/scripts/quest/ManSea002.cpp b/src/scripts/quest/ManSea002.cpp index c2fd2f37..692e4d25 100644 --- a/src/scripts/quest/ManSea002.cpp +++ b/src/scripts/quest/ManSea002.cpp @@ -1,6 +1,7 @@ #include -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" #include +#include "Framework.h" // Quest Script: ManSea002_00108 // Quest Name: Close to Home @@ -47,7 +48,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == ACTOR0 ) { diff --git a/src/scripts/quest/ManSea003.cpp b/src/scripts/quest/ManSea003.cpp index f340937c..0f213e3f 100644 --- a/src/scripts/quest/ManSea003.cpp +++ b/src/scripts/quest/ManSea003.cpp @@ -1,6 +1,7 @@ #include -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" #include +#include "Framework.h" // Quest Script: ManSea003_00109 // Quest Name: Close to Home @@ -63,7 +64,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/ManWil001.cpp b/src/scripts/quest/ManWil001.cpp index cd9e3974..5c0de2b6 100644 --- a/src/scripts/quest/ManWil001.cpp +++ b/src/scripts/quest/ManWil001.cpp @@ -1,6 +1,7 @@ #include -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" #include +#include "Framework.h" // Quest Script: ManWil001_00594 // Quest Name: Coming to Ul'dah @@ -173,7 +174,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == ACTOR0 ) { diff --git a/src/scripts/quest/ManWil002.cpp b/src/scripts/quest/ManWil002.cpp index b2dd4db6..ddf46067 100644 --- a/src/scripts/quest/ManWil002.cpp +++ b/src/scripts/quest/ManWil002.cpp @@ -1,6 +1,7 @@ #include -#include +#include #include +#include "Framework.h" // Quest Script: ManWil002_00568 // Quest Name: Close to Home @@ -69,7 +70,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst001.cpp b/src/scripts/quest/subquest/gridania/SubFst001.cpp index 45c2bbf6..ee0a9c48 100644 --- a/src/scripts/quest/subquest/gridania/SubFst001.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst001.cpp @@ -1,6 +1,7 @@ #include -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" #include +#include "Framework.h" using namespace Sapphire; @@ -72,7 +73,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == ACTOR0 ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst002.cpp b/src/scripts/quest/subquest/gridania/SubFst002.cpp index 85722cde..d539d591 100644 --- a/src/scripts/quest/subquest/gridania/SubFst002.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst002.cpp @@ -1,6 +1,7 @@ #include -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" #include +#include "Framework.h" using namespace Sapphire; @@ -58,7 +59,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == ACTOR0 && !player.hasQuest( getId() ) ) Scene00000( player ); diff --git a/src/scripts/quest/subquest/gridania/SubFst003.cpp b/src/scripts/quest/subquest/gridania/SubFst003.cpp index e5d0aca7..d32ca94f 100644 --- a/src/scripts/quest/subquest/gridania/SubFst003.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst003.cpp @@ -1,6 +1,7 @@ #include -#include +#include #include +#include "Framework.h" using namespace Sapphire; @@ -51,7 +52,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst004.cpp b/src/scripts/quest/subquest/gridania/SubFst004.cpp index 7cf1a84d..53923c3f 100644 --- a/src/scripts/quest/subquest/gridania/SubFst004.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst004.cpp @@ -1,6 +1,7 @@ #include -#include +#include #include +#include "Framework.h" using namespace Sapphire; @@ -55,7 +56,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst008.cpp b/src/scripts/quest/subquest/gridania/SubFst008.cpp index c0193abc..d5828c7c 100644 --- a/src/scripts/quest/subquest/gridania/SubFst008.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst008.cpp @@ -1,6 +1,7 @@ #include -#include +#include #include +#include "Framework.h" using namespace Sapphire; @@ -55,7 +56,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst009.cpp b/src/scripts/quest/subquest/gridania/SubFst009.cpp index 0542f689..4d536487 100644 --- a/src/scripts/quest/subquest/gridania/SubFst009.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst009.cpp @@ -1,6 +1,7 @@ #include -#include +#include #include +#include "Framework.h" using namespace Sapphire; @@ -51,7 +52,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst010.cpp b/src/scripts/quest/subquest/gridania/SubFst010.cpp index a8a2defe..c6fd5854 100644 --- a/src/scripts/quest/subquest/gridania/SubFst010.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst010.cpp @@ -1,6 +1,7 @@ #include -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" #include +#include "Framework.h" using namespace Sapphire; @@ -54,7 +55,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == ACTOR0 ) Scene00000( player ); diff --git a/src/scripts/quest/subquest/gridania/SubFst011.cpp b/src/scripts/quest/subquest/gridania/SubFst011.cpp index ceadb3d4..a452c161 100644 --- a/src/scripts/quest/subquest/gridania/SubFst011.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst011.cpp @@ -1,6 +1,7 @@ #include -#include +#include #include +#include "Framework.h" using namespace Sapphire; @@ -48,7 +49,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 && !player.hasQuest( getId() ) ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst013.cpp b/src/scripts/quest/subquest/gridania/SubFst013.cpp index e813acab..5f485542 100644 --- a/src/scripts/quest/subquest/gridania/SubFst013.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst013.cpp @@ -1,6 +1,7 @@ #include #include -#include "Event/EventHelper.h" +#include "Manager/EventMgr.h" +#include "Framework.h" using namespace Sapphire; @@ -160,7 +161,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( !player.hasQuest( getId() ) ) { @@ -180,7 +182,8 @@ public: void onEmote( uint64_t actorId, uint32_t eventId, uint32_t emoteId, Entity::Player& player ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == ACTOR1 && emoteId == 5 && player.getQuestSeq( getId() ) == SEQ_1 ) Scene00100( player ); diff --git a/src/scripts/quest/subquest/gridania/SubFst014.cpp b/src/scripts/quest/subquest/gridania/SubFst014.cpp index 735f54a0..640f0f9d 100644 --- a/src/scripts/quest/subquest/gridania/SubFst014.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst014.cpp @@ -1,6 +1,7 @@ #include -#include +#include #include +#include "Framework.h" using namespace Sapphire; @@ -55,7 +56,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 && !player.hasQuest( getId() ) ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst015.cpp b/src/scripts/quest/subquest/gridania/SubFst015.cpp index bd0aa913..43edea60 100644 --- a/src/scripts/quest/subquest/gridania/SubFst015.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst015.cpp @@ -1,6 +1,7 @@ #include -#include +#include #include +#include "Framework.h" using namespace Sapphire; @@ -53,7 +54,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 && !player.hasQuest( getId() ) ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst019.cpp b/src/scripts/quest/subquest/gridania/SubFst019.cpp index 51701057..dff3948e 100644 --- a/src/scripts/quest/subquest/gridania/SubFst019.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst019.cpp @@ -1,6 +1,7 @@ #include -#include +#include #include +#include "Framework.h" using namespace Sapphire; @@ -48,7 +49,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst026.cpp b/src/scripts/quest/subquest/gridania/SubFst026.cpp index e5136621..a9733538 100644 --- a/src/scripts/quest/subquest/gridania/SubFst026.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst026.cpp @@ -1,6 +1,7 @@ #include -#include +#include #include +#include "Framework.h" using namespace Sapphire; @@ -50,7 +51,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 && !player.hasQuest( getId() ) ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst029.cpp b/src/scripts/quest/subquest/gridania/SubFst029.cpp index d2d6d65a..7f765458 100644 --- a/src/scripts/quest/subquest/gridania/SubFst029.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst029.cpp @@ -1,6 +1,7 @@ #include -#include +#include #include +#include "Framework.h" using namespace Sapphire; @@ -46,7 +47,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto actor = Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); + auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == SubFst029::Actor0 && !player.hasQuest( getId() ) ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst030.cpp b/src/scripts/quest/subquest/gridania/SubFst030.cpp index 9f7dedfe..4f789edf 100644 --- a/src/scripts/quest/subquest/gridania/SubFst030.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst030.cpp @@ -1,7 +1,8 @@ #include