diff --git a/src/api/main.cpp b/src/api/main.cpp index 32d4b794..edced26a 100644 --- a/src/api/main.cpp +++ b/src/api/main.cpp @@ -26,14 +26,13 @@ #include #include -#include #include #include "SapphireApi.h" #include -Sapphire::Common::Util::CrashHandler crashHandler; +[[maybe_unused]] Sapphire::Common::Util::CrashHandler crashHandler; Sapphire::Db::DbWorkerPool< Sapphire::Db::ZoneDbConnection > g_charaDb; Sapphire::Data::ExdDataGenerated g_exdDataGen; diff --git a/src/common/Database/DbConnection.cpp b/src/common/Database/DbConnection.cpp index f03b7f9e..7013d626 100644 --- a/src/common/Database/DbConnection.cpp +++ b/src/common/Database/DbConnection.cpp @@ -4,7 +4,6 @@ #include "Logging/Logger.h" #include "PreparedStatement.h" -#include "Framework.h" Sapphire::Db::DbConnection::DbConnection( ConnectionInfo& connInfo ) : m_reconnecting( false ), diff --git a/src/common/Database/DbWorkerPool.cpp b/src/common/Database/DbWorkerPool.cpp index 81b9d96d..09a24bfb 100644 --- a/src/common/Database/DbWorkerPool.cpp +++ b/src/common/Database/DbWorkerPool.cpp @@ -5,7 +5,6 @@ #include "StatementTask.h" #include "Operation.h" #include "ZoneDbConnection.h" -#include "Framework.h" #include "Logging/Logger.h" #include diff --git a/src/common/Framework.cpp b/src/common/Framework.cpp deleted file mode 100644 index 7243f69b..00000000 --- a/src/common/Framework.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "Framework.h" -#include "Logging/Logger.h" diff --git a/src/common/Framework.h b/src/common/Framework.h deleted file mode 100644 index 5714bdb3..00000000 --- a/src/common/Framework.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef _CORE_FRAMEWORK_H -#define _CORE_FRAMEWORK_H - -#include -#include -#include -#include -#include - -namespace Sapphire -{ - - class Framework - { - using TypenameToObject = std::map< std::type_index, std::shared_ptr< void > >; - TypenameToObject ObjectMap; - - public: - template< typename T > - std::shared_ptr< T > get() - { - auto iType = ObjectMap.find( typeid( T ) ); - assert( !( iType == ObjectMap.end() ) ); - return std::static_pointer_cast< T >( iType->second ); - } - - template< typename T > - void set( std::shared_ptr< T > value ) - { - assert( value ); // why would anyone store nullptrs.... - ObjectMap[ typeid( T ) ] = value; - } - }; - -} - -#endif // _CORE_FRAMEWORK_H diff --git a/src/common/Network/Connection.cpp b/src/common/Network/Connection.cpp index 1bc9054a..a2e71f38 100644 --- a/src/common/Network/Connection.cpp +++ b/src/common/Network/Connection.cpp @@ -1,17 +1,15 @@ #include "Connection.h" #include "Hive.h" #include -#include "Framework.h" using namespace Sapphire; -Network::Connection::Connection( HivePtr hive, FrameworkPtr pFw ) : +Network::Connection::Connection( HivePtr hive ) : m_hive( hive ), m_socket( hive->getService() ), m_io_strand( hive->getService() ), m_receive_buffer_size( 32000 ), - m_error_state( 0 ), - m_pFw( pFw ) + m_error_state( 0 ) { } diff --git a/src/common/Network/Connection.h b/src/common/Network/Connection.h index ef5c4070..91f86aea 100644 --- a/src/common/Network/Connection.h +++ b/src/common/Network/Connection.h @@ -35,9 +35,8 @@ 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; - FrameworkPtr m_pFw; - Connection( HivePtr hive, FrameworkPtr pFw ); + Connection( HivePtr hive ); virtual ~Connection(); @@ -141,13 +140,13 @@ namespace Sapphire::Network //----------------------------------------------------------------------------- template< class T > - std::shared_ptr< T > addServerToHive( const std::string& listenIp, uint32_t port, HivePtr pHive, FrameworkPtr pFw ) + std::shared_ptr< T > addServerToHive( const std::string& listenIp, uint32_t port, HivePtr pHive ) { try { AcceptorPtr acceptor( new Acceptor( pHive ) ); acceptor->listen( listenIp, port ); - std::shared_ptr< T > connection( new T( pHive, acceptor, pFw ) ); + std::shared_ptr< T > connection( new T( pHive, acceptor ) ); acceptor->accept( connection ); return connection; } diff --git a/src/common/Service.h b/src/common/Service.h new file mode 100644 index 00000000..8cbb43a1 --- /dev/null +++ b/src/common/Service.h @@ -0,0 +1,115 @@ +#ifndef SAPPHIRE_SERVICE_H +#define SAPPHIRE_SERVICE_H + +#include +#include +#include + +// stolen from: https://github.com/skypjack/entt/blob/master/src/entt/locator/locator.hpp + +namespace Sapphire::Common +{ + /** + * @brief Service locator, nothing more. + * + * A service locator can be used to do what it promises: locate services.
+ * Usually service locators are tightly bound to the services they expose and + * thus it's hard to define a general purpose class to do that. This template + * based implementation tries to fill the gap and to get rid of the burden of + * defining a different specific locator for each application. + * + * @tparam SvcType Type of service managed by the locator. + */ + template< typename SvcType > + struct Service + { + /*! @brief Type of service offered. */ + using ServiceType = SvcType; + + /*! @brief Default constructor, deleted on purpose. */ + Service() = delete; + + /*! @brief Default destructor, deleted on purpose. */ + ~Service() = delete; + + /** + * @brief Tests if a valid service implementation is set. + * @return True if the service is set, false otherwise. + */ + static bool empty() noexcept + { + return !static_cast< bool >( service ); + } + + /** + * @brief Returns a weak pointer to a service implementation, if any. + * + * Clients of a service shouldn't retain references to it. The recommended + * way is to retrieve the service implementation currently set each and + * every time the need of using it arises. Otherwise users can incur in + * unexpected behaviors. + * + * @return A reference to the service implementation currently set, if any. + */ + static std::weak_ptr< SvcType > get() noexcept + { + return service; + } + + /** + * @brief Returns a weak reference to a service implementation, if any. + * + * Clients of a service shouldn't retain references to it. The recommended + * way is to retrieve the service implementation currently set each and + * every time the need of using it arises. Otherwise users can incur in + * unexpected behaviors. + * + * @warning + * In case no service implementation has been set, a call to this function + * results in undefined behavior. + * + * @return A reference to the service implementation currently set, if any. + */ + static SvcType& ref() noexcept + { + return *service; + } + + /** + * @brief Sets or replaces a service. + * @tparam Impl Type of the new service to use. + * @tparam Args Types of arguments to use to construct the service. + * @param args Parameters to use to construct the service. + */ + template< typename Impl = SvcType, typename... Args > + static void set( Args&& ... args ) + { + service = std::make_shared< Impl >( std::forward< Args >( args )... ); + } + + /** + * @brief Sets or replaces a service. + * @param ptr Service to use to replace the current one. + */ + static void set( std::shared_ptr< SvcType > ptr ) + { + assert( static_cast< bool >( ptr ) ); + service = std::move( ptr ); + } + + /** + * @brief Resets a service. + * + * The service is no longer valid after a reset. + */ + static void reset() + { + service.reset(); + } + + private: + inline static std::shared_ptr< SvcType > service = nullptr; + }; +} + +#endif //SAPPHIRE_SERVICE_H diff --git a/src/dbm/main.cpp b/src/dbm/main.cpp index 990f500d..ed6c09d4 100644 --- a/src/dbm/main.cpp +++ b/src/dbm/main.cpp @@ -8,7 +8,7 @@ #include #include -Sapphire::Common::Util::CrashHandler crashHandler; +[[maybe_unused]] Sapphire::Common::Util::CrashHandler crashHandler; namespace fs = std::filesystem; diff --git a/src/lobby/Forwards.h b/src/lobby/Forwards.h index 1f54bcc7..2e2d4e36 100644 --- a/src/lobby/Forwards.h +++ b/src/lobby/Forwards.h @@ -12,11 +12,6 @@ x ## Ptr make_ ## x( Args &&...args ) { \ return std::make_shared< x >( std::forward< Args >( args ) ... ); }\ typedef std::vector< x > x ## PtrList; -namespace Sapphire -{ - TYPE_FORWARD( Framework ); -} - namespace Sapphire::Lobby { TYPE_FORWARD( LobbySession ); diff --git a/src/lobby/GameConnection.cpp b/src/lobby/GameConnection.cpp index b3d85ddb..6bc2e174 100644 --- a/src/lobby/GameConnection.cpp +++ b/src/lobby/GameConnection.cpp @@ -25,9 +25,8 @@ extern Lobby::ServerLobby g_serverLobby; extern Lobby::RestConnector g_restConnector; Lobby::GameConnection::GameConnection( Sapphire::Network::HivePtr pHive, - Sapphire::Network::AcceptorPtr pAcceptor, - FrameworkPtr pFw ) : - Sapphire::Network::Connection( pHive, pFw ), + Sapphire::Network::AcceptorPtr pAcceptor ) : + Sapphire::Network::Connection( pHive ), m_pAcceptor( pAcceptor ), m_bEncryptionInitialized( false ) { @@ -42,7 +41,7 @@ Lobby::GameConnection::~GameConnection() // overwrite the parents onConnect for our game socket needs void Lobby::GameConnection::onAccept( const std::string& host, uint16_t port ) { - auto connection = make_GameConnection( m_hive, m_pAcceptor, m_pFw ); + auto connection = make_GameConnection( m_hive, m_pAcceptor ); m_pAcceptor->accept( connection ); Logger::info( "Connect from {0}", m_socket.remote_endpoint().address().to_string() ); diff --git a/src/lobby/GameConnection.h b/src/lobby/GameConnection.h index fbed9386..a98c01c5 100644 --- a/src/lobby/GameConnection.h +++ b/src/lobby/GameConnection.h @@ -41,7 +41,7 @@ namespace Sapphire::Lobby std::vector< uint8_t > m_packets; public: - GameConnection( Network::HivePtr pHive, Network::AcceptorPtr pAcceptor, FrameworkPtr pFw ); + GameConnection( Network::HivePtr pHive, Network::AcceptorPtr pAcceptor ); ~GameConnection(); diff --git a/src/lobby/ServerLobby.cpp b/src/lobby/ServerLobby.cpp index b85380c9..97a252fa 100644 --- a/src/lobby/ServerLobby.cpp +++ b/src/lobby/ServerLobby.cpp @@ -10,7 +10,6 @@ #include #include -#include "Framework.h" #include "ServerLobby.h" @@ -65,9 +64,8 @@ namespace Sapphire::Lobby Logger::setLogLevel( m_config.global.general.logLevel ); - auto pFw = make_Framework(); auto hive = Network::make_Hive(); - Network::addServerToHive< GameConnection >( m_ip, m_port, hive, pFw ); + Network::addServerToHive< GameConnection >( m_ip, m_port, hive ); Logger::info( "Lobby server running on {0}:{1}", m_ip, m_port ); diff --git a/src/lobby/mainLobbyServer.cpp b/src/lobby/mainLobbyServer.cpp index eb3c7653..0b16ff26 100644 --- a/src/lobby/mainLobbyServer.cpp +++ b/src/lobby/mainLobbyServer.cpp @@ -2,7 +2,7 @@ #include -Sapphire::Common::Util::CrashHandler crashHandler; +[[maybe_unused]] Sapphire::Common::Util::CrashHandler crashHandler; Sapphire::Lobby::ServerLobby g_serverLobby( "lobby.ini" ); diff --git a/src/scripts/common/GilShop.cpp b/src/scripts/common/GilShop.cpp index 8e7afe0e..93b93d9f 100644 --- a/src/scripts/common/GilShop.cpp +++ b/src/scripts/common/GilShop.cpp @@ -1,8 +1,8 @@ #include #include -#include #include +#include using namespace Sapphire; @@ -31,9 +31,10 @@ private: // buy if( result.param2 == 1 ) { - auto shopMgr = framework()->get< Sapphire::World::Manager::ShopMgr >(); + auto& shopMgr = Common::Service< Sapphire::World::Manager::ShopMgr >::ref(); - shopMgr->purchaseGilShopItem( player, result.eventId, result.param3, result.param4 ); + + shopMgr.purchaseGilShopItem( player, result.eventId, result.param3, result.param4 ); } // sell diff --git a/src/scripts/common/aethernet/Aetheryte.cpp b/src/scripts/common/aethernet/Aetheryte.cpp index d7267d20..64acd0c5 100644 --- a/src/scripts/common/aethernet/Aetheryte.cpp +++ b/src/scripts/common/aethernet/Aetheryte.cpp @@ -1,9 +1,8 @@ #include #include -#include #include - +#include using namespace Sapphire; @@ -109,11 +108,9 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pExdData = framework()->get< Sapphire::Data::ExdDataGenerated >(); - if( !pExdData ) - return; + auto& exdData = Common::Service< Sapphire::Data::ExdDataGenerated >::ref(); - auto aetherInfo = pExdData->get< Sapphire::Data::Aetheryte >( eventId & 0xFFFF ); + auto aetherInfo = exdData.get< Sapphire::Data::Aetheryte >( eventId & 0xFFFF ); if( !aetherInfo ) return; diff --git a/src/scripts/common/aethernet/HousingAethernet.cpp b/src/scripts/common/aethernet/HousingAethernet.cpp index 5fcbbd04..1af780ad 100644 --- a/src/scripts/common/aethernet/HousingAethernet.cpp +++ b/src/scripts/common/aethernet/HousingAethernet.cpp @@ -1,10 +1,10 @@ #include #include -#include #include #include #include +#include using namespace Sapphire; @@ -21,16 +21,14 @@ public: { player.playScene( eventId, 0, HIDE_HOTBAR | NO_DEFAULT_CAMERA, [this, eventId]( Entity::Player& player, const Event::SceneResult& result ) { - auto pExdData = framework()->get< Sapphire::Data::ExdDataGenerated >(); - if( !pExdData ) - return; + auto& exdData = Common::Service< Sapphire::Data::ExdDataGenerated >::ref(); auto housingZone = std::dynamic_pointer_cast< HousingZone >( player.getCurrentTerritory() ); if( !housingZone ) return; // param2 is the index starting from 0 inside housingaethernet.exd, but the ID column starts at 0x001E0000........ wtf - auto pHousingAethernet = pExdData->get< Sapphire::Data::HousingAethernet >( getId() + result.param2 ); + auto pHousingAethernet = exdData.get< Sapphire::Data::HousingAethernet >( getId() + result.param2 ); if( !pHousingAethernet ) return; @@ -42,8 +40,8 @@ public: // moving a player inside an event will crash the game so we end it here player.eventFinish( eventId, 1 ); - auto playerMgr = framework()->get< Sapphire::World::Manager::PlayerMgr >(); - playerMgr->movePlayerToLandDestination( player, pHousingAethernet->level, housingZone->getWardNum() ); + auto& playerMgr = Common::Service< Sapphire::World::Manager::PlayerMgr >::ref(); + playerMgr.movePlayerToLandDestination( player, pHousingAethernet->level, housingZone->getWardNum() ); } ); } }; diff --git a/src/scripts/common/eobj/HousingEstateEntrance.cpp b/src/scripts/common/eobj/HousingEstateEntrance.cpp index e0447f31..2abc371b 100644 --- a/src/scripts/common/eobj/HousingEstateEntrance.cpp +++ b/src/scripts/common/eobj/HousingEstateEntrance.cpp @@ -1,11 +1,11 @@ #include #include +#include #include "Actor/EventObject.h" #include "Territory/HousingZone.h" #include "Manager/TerritoryMgr.h" #include "Territory/Land.h" -#include "Framework.h" using namespace Sapphire; @@ -26,9 +26,7 @@ public: if( result.param2 != 1 ) return; - auto terriMgr = framework()->get< Sapphire::World::Manager::TerritoryMgr >(); - if( !terriMgr ) - return; + auto& terriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); auto zone = std::dynamic_pointer_cast< HousingZone >( player.getCurrentTerritory() ); if( !zone ) @@ -40,7 +38,7 @@ public: ident.wardNum = zone->getWardNum(); ident.worldId = 67; - auto internalZone = terriMgr->findOrCreateHousingInterior( ident ); + auto internalZone = terriMgr.findOrCreateHousingInterior( ident ); if( !internalZone ) { // an error occurred during event movement @@ -60,6 +58,7 @@ public: switch( land->getSize() ) { + // todo: think there's actually a poprange for this? double czech case 0: { pos = { 0.1321167f, 0.f, 2.746273f }; diff --git a/src/scripts/common/housing/CmnDefHousingSignboard.cpp b/src/scripts/common/housing/CmnDefHousingSignboard.cpp index 21f13046..3de38035 100644 --- a/src/scripts/common/housing/CmnDefHousingSignboard.cpp +++ b/src/scripts/common/housing/CmnDefHousingSignboard.cpp @@ -5,7 +5,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -25,9 +25,6 @@ public: { auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result ) { - auto pFw = framework(); - if( !pFw ) - return LandPurchaseResult::ERR_INTERNAL; // Purchase Land if( result.param2 == 2 ) { @@ -36,9 +33,9 @@ public: auto pTerritory = player.getCurrentTerritory(); auto pHousing = std::dynamic_pointer_cast< HousingZone >( pTerritory ); - auto pHouMgr = pFw->get< HousingMgr >(); + auto& pHouMgr = Common::Service< HousingMgr >::ref(); - LandPurchaseResult res = pHouMgr->purchaseLand( player, activeLand.plot, + LandPurchaseResult res = pHouMgr.purchaseLand( player, activeLand.plot, static_cast< uint8_t >( result.param2 ) ); switch( res ) diff --git a/src/scripts/common/warptaxi/WarpTaxi.cpp b/src/scripts/common/warptaxi/WarpTaxi.cpp index dbf3b58d..8d88f6f4 100644 --- a/src/scripts/common/warptaxi/WarpTaxi.cpp +++ b/src/scripts/common/warptaxi/WarpTaxi.cpp @@ -7,8 +7,8 @@ #include "Territory/InstanceObjectCache.h" #include -#include #include +#include using namespace Sapphire; @@ -32,16 +32,16 @@ public: player.eventFinish( 1310721, 0 ); player.eventFinish( getId(), 1 ); - auto exdData = framework()->get< Sapphire::Data::ExdDataGenerated >(); - auto pPopRange = framework()->get< Sapphire::InstanceObjectCache >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto& popRange = Common::Service< Sapphire::InstanceObjectCache >::ref(); - auto warp = exdData->get< Sapphire::Data::Warp >( getId() ); + auto warp = exdData.get< Sapphire::Data::Warp >( getId() ); if( !warp ) return; - auto playerMgr = framework()->get< Sapphire::World::Manager::PlayerMgr >(); + auto& playerMgr = Common::Service< Sapphire::World::Manager::PlayerMgr >::ref(); - auto pPop = pPopRange->getPopRange( warp->territoryType, warp->popRange ); + auto pPop = popRange.getPopRange( warp->territoryType, warp->popRange ); if( !pPop ) { @@ -52,7 +52,7 @@ public: std::cout << "found!!"; } - playerMgr->movePlayerToLandDestination( player, warp->popRange, result.param3 ); + playerMgr.movePlayerToLandDestination( player, warp->popRange, result.param3 ); } else { @@ -75,11 +75,9 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto exdData = framework()->get< Sapphire::Data::ExdDataGenerated >(); - if( !exdData ) - return; + auto& exdData = Common::Service< Sapphire::Data::ExdDataGenerated >::ref(); - auto warp = exdData->get< Sapphire::Data::Warp >( eventId ); + auto warp = exdData.get< Sapphire::Data::Warp >( eventId ); if( !warp ) return; diff --git a/src/scripts/quest/ManFst001.cpp b/src/scripts/quest/ManFst001.cpp index 1411a0d9..684b77f8 100644 --- a/src/scripts/quest/ManFst001.cpp +++ b/src/scripts/quest/ManFst001.cpp @@ -2,7 +2,7 @@ #include #include "Manager/EventMgr.h" #include "Event/EventHandler.h" -#include "Framework.h" +#include // Quest Script: ManFst001_00039 // Quest Name: Coming to Gridania @@ -96,8 +96,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 e7a2b364..0d0a114a 100644 --- a/src/scripts/quest/ManFst002.cpp +++ b/src/scripts/quest/ManFst002.cpp @@ -2,7 +2,7 @@ #include #include "Event/EventHandler.h" #include "Manager/EventMgr.h" -#include "Framework.h" +#include // Quest Script: ManFst002_00124 // Quest Name: Close to Home @@ -193,8 +193,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 f9725a64..e3bc085e 100644 --- a/src/scripts/quest/ManFst003.cpp +++ b/src/scripts/quest/ManFst003.cpp @@ -1,7 +1,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include // Quest Script: ManFst003_00123 // Quest Name: Close to Home @@ -82,8 +82,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 6ec0b56a..79168cb3 100644 --- a/src/scripts/quest/ManFst004.cpp +++ b/src/scripts/quest/ManFst004.cpp @@ -1,7 +1,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include // Quest Script: ManFst004_00124 // Quest Name: Close to Home @@ -80,8 +80,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == ManFst004::Actor0 ) { diff --git a/src/scripts/quest/ManFst005.cpp b/src/scripts/quest/ManFst005.cpp index 1089248b..f9177bf8 100644 --- a/src/scripts/quest/ManFst005.cpp +++ b/src/scripts/quest/ManFst005.cpp @@ -2,7 +2,7 @@ #include "Manager/EventMgr.h" #include "Manager/TerritoryMgr.h" #include -#include "Framework.h" +#include // Quest Script: ManFst005_00445 // Quest Name: Chasing Shadows @@ -61,8 +61,8 @@ class ManFst005 : public Sapphire::ScriptAPI::EventScript // Event Handlers void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { @@ -142,11 +142,10 @@ class ManFst005 : public Sapphire::ScriptAPI::EventScript { if( result.param2 == 1 ) { - auto pTeriMgr = framework()->get< Sapphire::World::Manager::TerritoryMgr >(); - if( !pTeriMgr ) - return; + auto& pTeriMgr = Common::Service< Sapphire::World::Manager::TerritoryMgr >::ref(); + player.eventFinish( result.eventId, 0 ); - pTeriMgr->createAndJoinQuestBattle( player, Questbattle0 ); + pTeriMgr.createAndJoinQuestBattle( player, Questbattle0 ); } } ); } diff --git a/src/scripts/quest/ManSea001.cpp b/src/scripts/quest/ManSea001.cpp index 0c54a0e7..ddad3d00 100644 --- a/src/scripts/quest/ManSea001.cpp +++ b/src/scripts/quest/ManSea001.cpp @@ -1,7 +1,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include // Quest Script: ManSea001_00107 // Quest Name: Coming to Limsa Lominsa @@ -142,8 +142,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 e6153df2..a072b62f 100644 --- a/src/scripts/quest/ManSea002.cpp +++ b/src/scripts/quest/ManSea002.cpp @@ -1,7 +1,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include // Quest Script: ManSea002_00108 // Quest Name: Close to Home @@ -48,8 +48,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 2c9d712a..2032d990 100644 --- a/src/scripts/quest/ManSea003.cpp +++ b/src/scripts/quest/ManSea003.cpp @@ -1,7 +1,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include // Quest Script: ManSea003_00109 // Quest Name: Close to Home @@ -64,8 +64,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 55fa454e..20735575 100644 --- a/src/scripts/quest/ManWil001.cpp +++ b/src/scripts/quest/ManWil001.cpp @@ -1,7 +1,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include // Quest Script: ManWil001_00594 // Quest Name: Coming to Ul'dah @@ -174,8 +174,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 3c9a24bc..d340329c 100644 --- a/src/scripts/quest/ManWil002.cpp +++ b/src/scripts/quest/ManWil002.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include // Quest Script: ManWil002_00568 // Quest Name: Close to Home @@ -70,8 +70,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/ManWil003.cpp b/src/scripts/quest/ManWil003.cpp index 1380b9c0..c32b2d7a 100644 --- a/src/scripts/quest/ManWil003.cpp +++ b/src/scripts/quest/ManWil003.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include // Quest Script: ManWil003_00569 // Quest Name: Close to Home @@ -70,8 +70,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/ManWil004.cpp b/src/scripts/quest/ManWil004.cpp index aaa3b757..acbb5a53 100644 --- a/src/scripts/quest/ManWil004.cpp +++ b/src/scripts/quest/ManWil004.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include // Quest Script: ManWil004_00570 // Quest Name: Close to Home @@ -70,8 +70,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/classquest/ClsLnc000.cpp b/src/scripts/quest/classquest/ClsLnc000.cpp index 9cddc7a6..a73330a5 100644 --- a/src/scripts/quest/classquest/ClsLnc000.cpp +++ b/src/scripts/quest/classquest/ClsLnc000.cpp @@ -1,7 +1,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include using namespace Sapphire; @@ -57,8 +57,8 @@ class ClsLnc000 : public Sapphire::ScriptAPI::EventScript // Event Handlers void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = framework()->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 aa7ffdef..5dc93336 100644 --- a/src/scripts/quest/subquest/gridania/SubFst001.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst001.cpp @@ -1,7 +1,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include using namespace Sapphire; @@ -73,8 +73,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 e3d0661c..1ed0fc15 100644 --- a/src/scripts/quest/subquest/gridania/SubFst002.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst002.cpp @@ -1,7 +1,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include using namespace Sapphire; @@ -59,8 +59,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 84bc9655..87d4ff4e 100644 --- a/src/scripts/quest/subquest/gridania/SubFst003.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst003.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -52,8 +52,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 aa6b65f4..506b7cf9 100644 --- a/src/scripts/quest/subquest/gridania/SubFst004.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst004.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -56,8 +56,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst005.cpp b/src/scripts/quest/subquest/gridania/SubFst005.cpp index b401f66b..4846a063 100644 --- a/src/scripts/quest/subquest/gridania/SubFst005.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst005.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -48,8 +48,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 94613bbb..93bc374a 100644 --- a/src/scripts/quest/subquest/gridania/SubFst008.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst008.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -56,8 +56,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 5ff64741..424d4151 100644 --- a/src/scripts/quest/subquest/gridania/SubFst009.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst009.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -52,8 +52,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 ea07711e..9af037f8 100644 --- a/src/scripts/quest/subquest/gridania/SubFst010.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst010.cpp @@ -1,7 +1,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include using namespace Sapphire; @@ -55,8 +55,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 029e996e..42bb9db7 100644 --- a/src/scripts/quest/subquest/gridania/SubFst011.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst011.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -49,8 +49,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 bca98f07..f373eb69 100644 --- a/src/scripts/quest/subquest/gridania/SubFst013.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst013.cpp @@ -1,7 +1,7 @@ #include #include #include "Manager/EventMgr.h" -#include "Framework.h" +#include using namespace Sapphire; @@ -161,8 +161,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( !player.hasQuest( getId() ) ) { @@ -182,8 +182,8 @@ public: void onEmote( uint64_t actorId, uint32_t eventId, uint32_t emoteId, Entity::Player& player ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 45fc19c9..02908da6 100644 --- a/src/scripts/quest/subquest/gridania/SubFst014.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst014.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -56,8 +56,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 5690e82e..d7e8040b 100644 --- a/src/scripts/quest/subquest/gridania/SubFst015.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst015.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -54,8 +54,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 d5a2338c..5dd015a5 100644 --- a/src/scripts/quest/subquest/gridania/SubFst019.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst019.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -49,8 +49,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 05486014..8351ea51 100644 --- a/src/scripts/quest/subquest/gridania/SubFst026.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst026.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -51,8 +51,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 e14918e3..b22ee88a 100644 --- a/src/scripts/quest/subquest/gridania/SubFst029.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst029.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -47,8 +47,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + 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 c32245fa..cb542930 100644 --- a/src/scripts/quest/subquest/gridania/SubFst030.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst030.cpp @@ -2,7 +2,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include using namespace Sapphire; @@ -65,8 +65,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 && !player.hasQuest( getId() ) ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst034.cpp b/src/scripts/quest/subquest/gridania/SubFst034.cpp index a2604bf4..2c52e661 100644 --- a/src/scripts/quest/subquest/gridania/SubFst034.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst034.cpp @@ -2,7 +2,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include using namespace Sapphire; @@ -56,8 +56,8 @@ class SubFst034 : public Sapphire::ScriptAPI::EventScript // Event Handlers void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 && !player.hasQuest( getId() ) ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst039.cpp b/src/scripts/quest/subquest/gridania/SubFst039.cpp index c5fac2c9..f7ca9a56 100644 --- a/src/scripts/quest/subquest/gridania/SubFst039.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst039.cpp @@ -2,7 +2,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include using namespace Sapphire; @@ -42,8 +42,8 @@ class SubFst039 : public Sapphire::ScriptAPI::EventScript // Event Handlers void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 && !player.hasQuest( getId() ) ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst041.cpp b/src/scripts/quest/subquest/gridania/SubFst041.cpp index 6a983731..8c3512e4 100644 --- a/src/scripts/quest/subquest/gridania/SubFst041.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst041.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -57,8 +57,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/gridania/SubFst045.cpp b/src/scripts/quest/subquest/gridania/SubFst045.cpp index 095a485f..a8fbb691 100644 --- a/src/scripts/quest/subquest/gridania/SubFst045.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst045.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -47,8 +47,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast( actorId ) ); + auto pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if ( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/limsa/SubSea001.cpp b/src/scripts/quest/subquest/limsa/SubSea001.cpp index 65169946..8f198f34 100644 --- a/src/scripts/quest/subquest/limsa/SubSea001.cpp +++ b/src/scripts/quest/subquest/limsa/SubSea001.cpp @@ -2,7 +2,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include using namespace Sapphire; @@ -65,8 +65,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/limsa/SubSea012.cpp b/src/scripts/quest/subquest/limsa/SubSea012.cpp index 33855690..4dad6132 100644 --- a/src/scripts/quest/subquest/limsa/SubSea012.cpp +++ b/src/scripts/quest/subquest/limsa/SubSea012.cpp @@ -1,7 +1,7 @@ #include #include "Manager/EventMgr.h" #include -#include "Framework.h" +#include using namespace Sapphire; @@ -48,8 +48,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil000.cpp b/src/scripts/quest/subquest/uldah/SubWil000.cpp index 60ea8a7b..37f1adbc 100644 --- a/src/scripts/quest/subquest/uldah/SubWil000.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil000.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -48,8 +48,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil001.cpp b/src/scripts/quest/subquest/uldah/SubWil001.cpp index 45f60668..e34a38e1 100644 --- a/src/scripts/quest/subquest/uldah/SubWil001.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil001.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -49,8 +49,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil002.cpp b/src/scripts/quest/subquest/uldah/SubWil002.cpp index b0d110ae..d59112ef 100644 --- a/src/scripts/quest/subquest/uldah/SubWil002.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil002.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -53,8 +53,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil004.cpp b/src/scripts/quest/subquest/uldah/SubWil004.cpp index 86ce8440..abd78646 100644 --- a/src/scripts/quest/subquest/uldah/SubWil004.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil004.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -58,8 +58,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil006.cpp b/src/scripts/quest/subquest/uldah/SubWil006.cpp index 5b0dc867..1ce3fa26 100644 --- a/src/scripts/quest/subquest/uldah/SubWil006.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil006.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -51,8 +51,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil007.cpp b/src/scripts/quest/subquest/uldah/SubWil007.cpp index 9c65c4b1..c11572c5 100644 --- a/src/scripts/quest/subquest/uldah/SubWil007.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil007.cpp @@ -2,7 +2,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -55,8 +55,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 && !player.hasQuest( getId() ) ) { @@ -90,8 +90,8 @@ public: void onEmote( uint64_t actorId, uint32_t eventId, uint32_t emoteId, Entity::Player& player ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 && emoteId == 41 && player.getQuestSeq( getId() ) == Seq1 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil018.cpp b/src/scripts/quest/subquest/uldah/SubWil018.cpp index d29e33b7..f237a068 100644 --- a/src/scripts/quest/subquest/uldah/SubWil018.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil018.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -55,8 +55,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 && !player.hasQuest( getId() ) ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil019.cpp b/src/scripts/quest/subquest/uldah/SubWil019.cpp index 77a54877..257ca62d 100644 --- a/src/scripts/quest/subquest/uldah/SubWil019.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil019.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -47,8 +47,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil020.cpp b/src/scripts/quest/subquest/uldah/SubWil020.cpp index e29f8d05..588dfefe 100644 --- a/src/scripts/quest/subquest/uldah/SubWil020.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil020.cpp @@ -2,7 +2,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -63,8 +63,8 @@ class SubWil020 : public Sapphire::ScriptAPI::EventScript // Event Handlers void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); /*player.setQuestUI8BH( getId(), 0 ); player.setQuestUI8AL( getId(), 0 ); diff --git a/src/scripts/quest/subquest/uldah/SubWil021.cpp b/src/scripts/quest/subquest/uldah/SubWil021.cpp index 4de1484d..f4c73c11 100644 --- a/src/scripts/quest/subquest/uldah/SubWil021.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil021.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -52,8 +52,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil022.cpp b/src/scripts/quest/subquest/uldah/SubWil022.cpp index da169d97..a852601d 100644 --- a/src/scripts/quest/subquest/uldah/SubWil022.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil022.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -52,8 +52,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil027.cpp b/src/scripts/quest/subquest/uldah/SubWil027.cpp index 2dee104f..a19f7c2c 100644 --- a/src/scripts/quest/subquest/uldah/SubWil027.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil027.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -46,8 +46,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil028.cpp b/src/scripts/quest/subquest/uldah/SubWil028.cpp index 45bb3fc2..f52a9e63 100644 --- a/src/scripts/quest/subquest/uldah/SubWil028.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil028.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -48,8 +48,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/scripts/quest/subquest/uldah/SubWil029.cpp b/src/scripts/quest/subquest/uldah/SubWil029.cpp index 77fab777..f5734318 100644 --- a/src/scripts/quest/subquest/uldah/SubWil029.cpp +++ b/src/scripts/quest/subquest/uldah/SubWil029.cpp @@ -1,7 +1,7 @@ #include #include #include -#include "Framework.h" +#include using namespace Sapphire; @@ -51,8 +51,8 @@ public: void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override { - auto pEventMgr = m_framework->get< World::Manager::EventMgr >(); - auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); + auto& pEventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto actor = pEventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ); if( actor == Actor0 ) { diff --git a/src/tools/event_object_parser/main.cpp b/src/tools/event_object_parser/main.cpp index 8d86dbb7..f1529fcb 100644 --- a/src/tools/event_object_parser/main.cpp +++ b/src/tools/event_object_parser/main.cpp @@ -28,7 +28,7 @@ #include -Sapphire::Common::Util::CrashHandler crashHandler; +[[maybe_unused]] Sapphire::Common::Util::CrashHandler crashHandler; Sapphire::Data::ExdDataGenerated g_exdData; using namespace Sapphire; diff --git a/src/tools/exd_struct_test/main.cpp b/src/tools/exd_struct_test/main.cpp index e2beba0e..cb997b6f 100644 --- a/src/tools/exd_struct_test/main.cpp +++ b/src/tools/exd_struct_test/main.cpp @@ -24,7 +24,7 @@ #include -Sapphire::Common::Util::CrashHandler crashHandler; +[[maybe_unused]] Sapphire::Common::Util::CrashHandler crashHandler; Sapphire::Data::ExdDataGenerated g_exdData; xiv::dat::GameData* gameData = nullptr; diff --git a/src/tools/quest_parser/main.cpp b/src/tools/quest_parser/main.cpp index 9efc2cba..44d60f05 100644 --- a/src/tools/quest_parser/main.cpp +++ b/src/tools/quest_parser/main.cpp @@ -27,8 +27,8 @@ using namespace Sapphire; const std::string onTalkStr( " void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override\n" " {\n" - " auto pEventMgr = m_framework->get< World::Manager::EventMgr >();\n" - " auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );\n" + " auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref();\n" + " auto actor = eventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );\n" " }\n\n" ); @@ -41,8 +41,8 @@ const std::string onWithinRangeStr( const std::string onEmoteStr( " void onEmote( uint32_t eventId, Entity::Player& player, uint64_t actorId, uint32_t emoteId ) override\n" " {\n" - " auto pEventMgr = m_framework->get< World::Manager::EventMgr >();\n" - " auto actor = pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );\n" + " auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref();\n" + " auto actor = eventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) );\n" " }\n\n" ); @@ -86,7 +86,7 @@ createScript( std::shared_ptr< Sapphire::Data::Quest >& pQuestData, std::set< st "#include \n" "#include \"Manager/EventMgr.h\"\n" "#include \n" - "#include \"Framework.h\"\n\n" + "#include \n\n" ); std::size_t splitPos( pQuestData->id.find( "_" ) ); diff --git a/src/tools/questbattle_bruteforce/main.cpp b/src/tools/questbattle_bruteforce/main.cpp index 7aa34fbd..d8c1c6d4 100644 --- a/src/tools/questbattle_bruteforce/main.cpp +++ b/src/tools/questbattle_bruteforce/main.cpp @@ -20,7 +20,7 @@ #include -Sapphire::Common::Util::CrashHandler crashHandler; +[[maybe_unused]] Sapphire::Common::Util::CrashHandler crashHandler; Sapphire::Data::ExdDataGenerated g_exdData; xiv::dat::GameData* gameData = nullptr; diff --git a/src/world/Action/Action.cpp b/src/world/Action/Action.cpp index aa9a3b28..fbf08757 100644 --- a/src/world/Action/Action.cpp +++ b/src/world/Action/Action.cpp @@ -4,7 +4,6 @@ #include #include -#include "Framework.h" #include "Script/ScriptMgr.h" #include @@ -23,6 +22,7 @@ #include #include +#include using namespace Sapphire; using namespace Sapphire::Common; @@ -36,15 +36,14 @@ using namespace Sapphire::World; Action::Action::Action() = default; Action::Action::~Action() = default; -Action::Action::Action( Entity::CharaPtr caster, uint32_t actionId, uint16_t sequence, FrameworkPtr fw ) : - Action( std::move( caster ), actionId, sequence, nullptr, std::move( fw ) ) +Action::Action::Action( Entity::CharaPtr caster, uint32_t actionId, uint16_t sequence) : + Action( std::move( caster ), actionId, sequence, nullptr ) { } Action::Action::Action( Entity::CharaPtr caster, uint32_t actionId, uint16_t sequence, - Data::ActionPtr actionData, FrameworkPtr fw ) : + Data::ActionPtr actionData ) : m_pSource( std::move( caster ) ), - m_pFw( std::move( fw ) ), m_actionData( std::move( actionData ) ), m_id( actionId ), m_targetId( 0 ), @@ -64,10 +63,9 @@ bool Action::Action::init() if( !m_actionData ) { // need to get actionData - auto exdData = m_pFw->get< Data::ExdDataGenerated >(); - assert( exdData ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - auto actionData = exdData->get< Data::Action >( m_id ); + auto actionData = exdData.get< Data::Action >( m_id ); assert( actionData ); m_actionData = actionData; @@ -290,10 +288,10 @@ void Action::Action::start() m_recastTimeMs / 10 ); player->queuePacket( actionStartPkt ); - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); // check the lut too and see if we have something usable, otherwise cancel the cast - if( !pScriptMgr->onStart( *this ) && !ActionLut::validEntryExists( static_cast< uint16_t >( getId() ) ) ) + if( !scriptMgr.onStart( *this ) && !ActionLut::validEntryExists( static_cast< uint16_t >( getId() ) ) ) { // script not implemented and insufficient lut data (no potencies) interrupt(); @@ -342,8 +340,8 @@ void Action::Action::interrupt() m_pSource->sendToInRangeSet( control, true ); } - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onInterrupt( *this ); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + scriptMgr.onInterrupt( *this ); } void Action::Action::execute() @@ -357,7 +355,7 @@ void Action::Action::execute() return; } - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); if( hasCastTime() ) { @@ -385,7 +383,7 @@ void Action::Action::execute() } else if( auto player = m_pSource->getAsPlayer() ) { - pScriptMgr->onEObjHit( *player, m_targetId, getId() ); + scriptMgr.onEObjHit( *player, m_targetId, getId() ); } // set currently casted action as the combo action if it interrupts a combo @@ -455,10 +453,10 @@ void Action::Action::buildEffects() { snapshotAffectedActors( m_hitActors ); - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); auto hasLutEntry = hasValidLutEntry(); - if( !pScriptMgr->onExecute( *this ) && !hasLutEntry ) + if( !scriptMgr.onExecute( *this ) && !hasLutEntry ) { if( auto player = m_pSource->getAsPlayer() ) { @@ -577,10 +575,9 @@ bool Action::Action::playerPreCheck( Entity::Player& player ) if( actionClass != Common::ClassJob::Adventurer && currentClass != actionClass && !m_actionData->isRoleAction ) { // check if not a base class action - auto exdData = m_pFw->get< Data::ExdDataGenerated >(); - assert( exdData ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - auto classJob = exdData->get< Data::ClassJob >( static_cast< uint8_t >( currentClass ) ); + auto classJob = exdData.get< Data::ClassJob >( static_cast< uint8_t >( currentClass ) ); if( !classJob ) return false; diff --git a/src/world/Action/Action.h b/src/world/Action/Action.h index 04142f3b..0b62f856 100644 --- a/src/world/Action/Action.h +++ b/src/world/Action/Action.h @@ -22,8 +22,8 @@ namespace Sapphire::World::Action public: Action(); - Action( Entity::CharaPtr caster, uint32_t actionId, uint16_t sequence, FrameworkPtr fw ); - Action( Entity::CharaPtr caster, uint32_t actionId, uint16_t sequence, Data::ActionPtr actionData, FrameworkPtr fw ); + Action( Entity::CharaPtr caster, uint32_t actionId, uint16_t sequence ); + Action( Entity::CharaPtr caster, uint32_t actionId, uint16_t sequence, Data::ActionPtr actionData ); virtual ~Action(); @@ -183,7 +183,6 @@ namespace Sapphire::World::Action Common::ActionInterruptType m_interruptType; - FrameworkPtr m_pFw; Data::ActionPtr m_actionData; Common::FFXIVARR_POSITION3 m_pos; diff --git a/src/world/Action/EventAction.cpp b/src/world/Action/EventAction.cpp index 8c742ded..f524f33e 100644 --- a/src/world/Action/EventAction.cpp +++ b/src/world/Action/EventAction.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "Network/PacketWrappers/ActorControlPacket.h" #include "Network/PacketWrappers/ActorControlSelfPacket.h" @@ -9,7 +10,6 @@ #include "Actor/Player.h" #include "EventAction.h" -#include "Framework.h" using namespace Sapphire; using namespace Sapphire::World; @@ -20,15 +20,13 @@ using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::ActorControl; Action::EventAction::EventAction( Entity::CharaPtr pActor, uint32_t eventId, uint16_t action, - ActionCallback finishRef, ActionCallback interruptRef, uint64_t additional, - FrameworkPtr pFw ) + ActionCallback finishRef, ActionCallback interruptRef, uint64_t additional ) { m_additional = additional; m_eventId = eventId; m_id = action; - m_pFw = pFw; - auto pExdData = pFw->get< Data::ExdDataGenerated >(); - m_castTimeMs = pExdData->get< Sapphire::Data::EventAction >( action )->castTime * 1000; // TODO: Add security checks. + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + m_castTimeMs = exdData.get< Sapphire::Data::EventAction >( action )->castTime * 1000; // TODO: Add security checks. m_onActionFinishClb = std::move( finishRef ); m_onActionInterruptClb = std::move( interruptRef ); m_pSource = std::move( pActor ); diff --git a/src/world/Action/EventAction.h b/src/world/Action/EventAction.h index 4a9bb50a..b4c00085 100644 --- a/src/world/Action/EventAction.h +++ b/src/world/Action/EventAction.h @@ -16,7 +16,7 @@ public: virtual ~EventAction(); EventAction( Entity::CharaPtr pActor, uint32_t eventId, uint16_t action, - ActionCallback finishRef, ActionCallback interruptRef, uint64_t additional, FrameworkPtr pFw ); + ActionCallback finishRef, ActionCallback interruptRef, uint64_t additional ); void start() override; diff --git a/src/world/Action/ItemAction.cpp b/src/world/Action/ItemAction.cpp index efbef2f4..96971e8b 100644 --- a/src/world/Action/ItemAction.cpp +++ b/src/world/Action/ItemAction.cpp @@ -10,14 +10,13 @@ using namespace Sapphire::World::Action; ItemAction::ItemAction( Sapphire::Entity::CharaPtr source, uint32_t itemId, Sapphire::Data::ItemActionPtr itemActionData, uint16_t itemSourceSlot, - uint16_t itemSourceContainer, Sapphire::FrameworkPtr fw ) : + uint16_t itemSourceContainer ) : m_itemAction( std::move( itemActionData ) ), m_itemSourceSlot( itemSourceSlot ), m_itemSourceContainer( itemSourceContainer ) { m_id = itemId; m_pSource = std::move( source ); - m_pFw = std::move( fw ); } void ItemAction::start() diff --git a/src/world/Action/ItemAction.h b/src/world/Action/ItemAction.h index f0f7c24f..4d60d8ff 100644 --- a/src/world/Action/ItemAction.h +++ b/src/world/Action/ItemAction.h @@ -15,7 +15,7 @@ namespace Sapphire::World::Action { public: ItemAction( Entity::CharaPtr source, uint32_t itemId, Data::ItemActionPtr itemActionData, - uint16_t itemSourceSlot, uint16_t itemSourceContainer, FrameworkPtr fw ); + uint16_t itemSourceSlot, uint16_t itemSourceContainer ); virtual ~ItemAction() = default; void start() override; diff --git a/src/world/Action/MountAction.cpp b/src/world/Action/MountAction.cpp index 7b01f870..39b928d3 100644 --- a/src/world/Action/MountAction.cpp +++ b/src/world/Action/MountAction.cpp @@ -15,8 +15,8 @@ using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::ActorControl; using namespace Sapphire::World::Action; -MountAction::MountAction( Sapphire::Entity::CharaPtr source, uint16_t mountId, uint16_t sequence, Data::ActionPtr actionData, Sapphire::FrameworkPtr fw ) : - Action::Action( source, 4, sequence, actionData, fw ), +MountAction::MountAction( Sapphire::Entity::CharaPtr source, uint16_t mountId, uint16_t sequence, Data::ActionPtr actionData ) : + Action::Action( source, 4, sequence, actionData ), m_mountId( mountId ) { } diff --git a/src/world/Action/MountAction.h b/src/world/Action/MountAction.h index 1b095b47..6b79113d 100644 --- a/src/world/Action/MountAction.h +++ b/src/world/Action/MountAction.h @@ -8,7 +8,7 @@ namespace Sapphire::World::Action class MountAction : public Action { public: - MountAction( Entity::CharaPtr source, uint16_t mountId, uint16_t sequence, Data::ActionPtr actionData, FrameworkPtr fw ); + MountAction( Entity::CharaPtr source, uint16_t mountId, uint16_t sequence, Data::ActionPtr actionData ); virtual ~MountAction() = default; bool preCheck() override; diff --git a/src/world/Actor/BNpc.cpp b/src/world/Actor/BNpc.cpp index ca7e9a80..09b96793 100644 --- a/src/world/Actor/BNpc.cpp +++ b/src/world/Actor/BNpc.cpp @@ -35,26 +35,26 @@ #include "BNpcTemplate.h" #include "Common.h" -#include "Framework.h" #include #include #include #include +#include using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::ActorControl; -Sapphire::Entity::BNpc::BNpc( FrameworkPtr pFw ) : - Npc( ObjKind::BattleNpc, pFw ) +Sapphire::Entity::BNpc::BNpc() : + Npc( ObjKind::BattleNpc ) { } Sapphire::Entity::BNpc::BNpc( uint32_t id, BNpcTemplatePtr pTemplate, float posX, float posY, float posZ, float rot, - uint8_t level, uint32_t maxHp, TerritoryPtr pZone, FrameworkPtr pFw ) : - Npc( ObjKind::BattleNpc, pFw ) + uint8_t level, uint32_t maxHp, TerritoryPtr pZone ) : + Npc( ObjKind::BattleNpc ) { m_id = id; m_modelChara = pTemplate->getModelChara(); @@ -99,18 +99,17 @@ Sapphire::Entity::BNpc::BNpc( uint32_t id, BNpcTemplatePtr pTemplate, float posX memcpy( m_customize, pTemplate->getCustomize(), sizeof( m_customize ) ); memcpy( m_modelEquip, pTemplate->getModelEquip(), sizeof( m_modelEquip ) ); - auto exdData = m_pFw->get< Data::ExdDataGenerated >(); - assert( exdData ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - auto bNpcBaseData = exdData->get< Data::BNpcBase >( m_bNpcBaseId ); + auto bNpcBaseData = exdData.get< Data::BNpcBase >( m_bNpcBaseId ); assert( bNpcBaseData ); m_radius = bNpcBaseData->scale; - auto modelChara = exdData->get< Data::ModelChara >( bNpcBaseData->modelChara ); + auto modelChara = exdData.get< Data::ModelChara >( bNpcBaseData->modelChara ); if( modelChara ) { - auto modelSkeleton = exdData->get< Data::ModelSkeleton >( modelChara->model ); + auto modelSkeleton = exdData.get< Data::ModelSkeleton >( modelChara->model ); if( modelSkeleton ) m_radius *= modelSkeleton->radius; } @@ -359,8 +358,8 @@ bool Sapphire::Entity::BNpc::hateListHasActor( Sapphire::Entity::CharaPtr pChara void Sapphire::Entity::BNpc::aggro( Sapphire::Entity::CharaPtr pChara ) { - auto pRNGMgr = m_pFw->get< World::Manager::RNGMgr >(); - auto variation = static_cast< uint32_t >( pRNGMgr->getRandGenerator< float >( 500, 1000 ).next() ); + auto& pRNGMgr = Common::Service< World::Manager::RNGMgr >::ref(); + auto variation = static_cast< uint32_t >( pRNGMgr.getRandGenerator< float >( 500, 1000 ).next() ); m_lastAttack = Util::getTimeMs() + variation; hateListUpdate( pChara, 1 ); @@ -692,7 +691,6 @@ void Sapphire::Entity::BNpc::autoAttack( CharaPtr pTarget ) m_lastAttack = tick; srand( static_cast< uint32_t >( tick ) ); - auto pRNGMgr = m_pFw->get< World::Manager::RNGMgr >(); auto damage = Math::CalcStats::calcAutoAttackDamage( *this ); auto effectPacket = std::make_shared< Server::EffectPacket >( getId(), pTarget->getId(), 7 ); @@ -716,10 +714,10 @@ void Sapphire::Entity::BNpc::calculateStats() uint8_t level = getLevel(); uint8_t job = static_cast< uint8_t >( getClass() ); - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - auto classInfo = pExdData->get< Sapphire::Data::ClassJob >( job ); - auto paramGrowthInfo = pExdData->get< Sapphire::Data::ParamGrow >( level ); + auto classInfo = exdData.get< Sapphire::Data::ClassJob >( job ); + auto paramGrowthInfo = exdData.get< Sapphire::Data::ParamGrow >( level ); float base = Math::CalcStats::calculateBaseStat( *this ); diff --git a/src/world/Actor/BNpc.h b/src/world/Actor/BNpc.h index c76f8e99..aea42d48 100644 --- a/src/world/Actor/BNpc.h +++ b/src/world/Actor/BNpc.h @@ -49,9 +49,9 @@ namespace Sapphire::Entity { public: - BNpc( FrameworkPtr pFw ); + BNpc(); BNpc( uint32_t id, BNpcTemplatePtr pTemplate, float posX, float posY, float posZ, float rot, - uint8_t level, uint32_t maxHp, TerritoryPtr pZone,FrameworkPtr pFw ); + uint8_t level, uint32_t maxHp, TerritoryPtr pZone ); virtual ~BNpc() override; diff --git a/src/world/Actor/Chara.cpp b/src/world/Actor/Chara.cpp index 35e1155e..c62c268c 100644 --- a/src/world/Actor/Chara.cpp +++ b/src/world/Actor/Chara.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "Forwards.h" @@ -25,7 +26,6 @@ #include "Chara.h" #include "Player.h" #include "Manager/TerritoryMgr.h" -#include "Framework.h" #include "Common.h" using namespace Sapphire::Common; @@ -33,11 +33,10 @@ using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::ActorControl; -Sapphire::Entity::Chara::Chara( ObjKind type, FrameworkPtr pFw ) : +Sapphire::Entity::Chara::Chara( ObjKind type ) : Actor( type ), m_pose( 0 ), m_targetId( INVALID_GAME_OBJECT_ID64 ), - m_pFw( std::move( std::move( pFw ) ) ), m_directorId( 0 ), m_radius( 1.f ) { @@ -557,7 +556,7 @@ void Sapphire::Entity::Chara::addStatusEffect( StatusEffect::StatusEffectPtr pEf /*! \param StatusEffectPtr to be applied to the actor */ void Sapphire::Entity::Chara::addStatusEffectById( uint32_t id, int32_t duration, Entity::Chara& source, uint16_t param ) { - auto effect = StatusEffect::make_StatusEffect( id, source.getAsChara(), getAsChara(), duration, 3000, m_pFw ); + auto effect = StatusEffect::make_StatusEffect( id, source.getAsChara(), getAsChara(), duration, 3000 ); effect->setParam( param ); addStatusEffect( effect ); } @@ -569,7 +568,7 @@ void Sapphire::Entity::Chara::addStatusEffectByIdIfNotExist( uint32_t id, int32_ if( hasStatusEffect( id ) ) return; - auto effect = StatusEffect::make_StatusEffect( id, source.getAsChara(), getAsChara(), duration, 3000, m_pFw ); + auto effect = StatusEffect::make_StatusEffect( id, source.getAsChara(), getAsChara(), duration, 3000 ); effect->setParam( param ); addStatusEffect( effect ); @@ -763,10 +762,9 @@ float Sapphire::Entity::Chara::getRadius() const Sapphire::Common::BaseParam Sapphire::Entity::Chara::getPrimaryStat() const { - auto exdData = m_pFw->get< Data::ExdDataGenerated >(); - assert( exdData ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - auto classJob = exdData->get< Data::ClassJob >( static_cast< uint16_t >( getClass() ) ); + auto classJob = exdData.get< Data::ClassJob >( static_cast< uint16_t >( getClass() ) ); assert( classJob ); return static_cast< Sapphire::Common::BaseParam >( classJob->primaryStat ); diff --git a/src/world/Actor/Chara.h b/src/world/Actor/Chara.h index f423507e..aab58dec 100644 --- a/src/world/Actor/Chara.h +++ b/src/world/Actor/Chara.h @@ -126,7 +126,6 @@ namespace Sapphire::Entity std::queue< uint8_t > m_statusEffectFreeSlotQueue; std::vector< std::pair< uint8_t, uint32_t > > m_statusEffectList; std::map< uint8_t, StatusEffect::StatusEffectPtr > m_statusEffectMap; - FrameworkPtr m_pFw; /*! Detour Crowd AgentId */ uint32_t m_agentId; @@ -135,7 +134,7 @@ namespace Sapphire::Entity float m_radius; public: - Chara( Common::ObjKind type, FrameworkPtr pFw ); + Chara( Common::ObjKind type ); virtual ~Chara() override; diff --git a/src/world/Actor/Npc.cpp b/src/world/Actor/Npc.cpp index d795aabb..e5427b6d 100644 --- a/src/world/Actor/Npc.cpp +++ b/src/world/Actor/Npc.cpp @@ -25,7 +25,6 @@ #include "Player.h" #include "Npc.h" #include "Manager/TerritoryMgr.h" -#include "Framework.h" #include "Common.h" using namespace Sapphire::Common; @@ -33,8 +32,8 @@ using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::ActorControl; -Sapphire::Entity::Npc::Npc( ObjKind type, FrameworkPtr pFw ) : - Chara( type, pFw ) +Sapphire::Entity::Npc::Npc( ObjKind type ) : + Chara( type ) { } diff --git a/src/world/Actor/Npc.h b/src/world/Actor/Npc.h index d7505364..bf7cb4f2 100644 --- a/src/world/Actor/Npc.h +++ b/src/world/Actor/Npc.h @@ -21,7 +21,7 @@ namespace Sapphire::Entity { public: - Npc( Common::ObjKind type, FrameworkPtr pFw ); + Npc( Common::ObjKind type ); virtual ~Npc() override; diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index 8677d001..e949afab 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include "Session.h" #include "Player.h" @@ -45,7 +46,6 @@ #include "Math/CalcBattle.h" #include "ServerMgr.h" -#include "Framework.h" using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; @@ -58,8 +58,8 @@ using InvSlotPair = std::pair< uint16_t, int8_t >; using InvSlotPairVec = std::vector< InvSlotPair >; // player constructor -Sapphire::Entity::Player::Player( FrameworkPtr pFw ) : - Chara( ObjKind::Player, pFw ), +Sapphire::Entity::Player::Player() : + Chara( ObjKind::Player ), m_lastWrite( 0 ), m_lastPing( 0 ), m_bIsLogin( false ), @@ -114,8 +114,8 @@ Sapphire::Entity::Player::~Player() void Sapphire::Entity::Player::injectPacket( const std::string& path ) { - auto pServerZone = m_pFw->get< World::ServerMgr >(); - auto session = pServerZone->getSession( getId() ); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + auto session = serverMgr.getSession( getId() ); if( session ) session->getZoneConnection()->injectPacket( path, *this ); } @@ -200,9 +200,7 @@ bool Sapphire::Entity::Player::isMarkedForRemoval() const Sapphire::Common::OnlineStatus Sapphire::Entity::Player::getOnlineStatus() const { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - if( !pExdData ) - return OnlineStatus::Online; + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); uint32_t statusDisplayOrder = 0xFF14; uint32_t applicableStatus = static_cast< uint32_t >( OnlineStatus::Online ); @@ -214,7 +212,7 @@ Sapphire::Common::OnlineStatus Sapphire::Entity::Player::getOnlineStatus() const if( !bit ) continue; - auto pOnlineStatus = pExdData->get< Data::OnlineStatus >( i ); + auto pOnlineStatus = exdData.get< Data::OnlineStatus >( i ); if( !pOnlineStatus ) continue; @@ -255,11 +253,11 @@ void Sapphire::Entity::Player::calculateStats() uint8_t level = getLevel(); uint8_t job = static_cast< uint8_t >( getClass() ); - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - auto classInfo = pExdData->get< Sapphire::Data::ClassJob >( job ); - auto tribeInfo = pExdData->get< Sapphire::Data::Tribe >( tribe ); - auto paramGrowthInfo = pExdData->get< Sapphire::Data::ParamGrow >( level ); + auto classInfo = exdData.get< Sapphire::Data::ClassJob >( job ); + auto tribeInfo = exdData.get< Sapphire::Data::Tribe >( tribe ); + auto paramGrowthInfo = exdData.get< Sapphire::Data::ParamGrow >( level ); float base = Math::CalcStats::calculateBaseStat( *this ); @@ -292,7 +290,7 @@ void Sapphire::Entity::Player::calculateStats() m_baseStats.max_mp = 10000; - m_baseStats.max_hp = Math::CalcStats::calculateMaxHp( getAsPlayer(), m_pFw ); + m_baseStats.max_hp = Math::CalcStats::calculateMaxHp( getAsPlayer() ); if( m_mp > m_baseStats.max_mp ) m_mp = m_baseStats.max_mp; @@ -343,18 +341,18 @@ void Sapphire::Entity::Player::sendStats() void Sapphire::Entity::Player::teleport( uint16_t aetheryteId, uint8_t type ) { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - auto pTeriMgr = m_pFw->get< TerritoryMgr >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto& terriMgr = Common::Service< TerritoryMgr >::ref(); - auto data = pExdData->get< Sapphire::Data::Aetheryte >( aetheryteId ); + auto data = exdData.get< Sapphire::Data::Aetheryte >( aetheryteId ); if( data == nullptr ) return; setStateFlag( PlayerStateFlag::BetweenAreas ); - auto pInstanceObjectCache = m_pFw->get< InstanceObjectCache >(); - auto pop = pInstanceObjectCache->getPopRange( data->territory, data->level[ 0 ] ); + auto& instanceObjectCache = Common::Service< InstanceObjectCache >::ref(); + auto pop = instanceObjectCache.getPopRange( data->territory, data->level[ 0 ] ); Common::FFXIVARR_POSITION3 pos; pos.x = 0; @@ -377,8 +375,8 @@ void Sapphire::Entity::Player::teleport( uint16_t aetheryteId, uint8_t type ) } sendDebug( "Teleport: {0} {1} ({2})", - pExdData->get< Sapphire::Data::PlaceName >( data->placeName )->name, - pExdData->get< Sapphire::Data::PlaceName >( data->aethernetName )->name, + exdData.get< Sapphire::Data::PlaceName >( data->placeName )->name, + exdData.get< Sapphire::Data::PlaceName >( data->aethernetName )->name, data->territory ); // TODO: this should be simplified and a type created in server_common/common.h. @@ -420,16 +418,16 @@ void Sapphire::Entity::Player::returnToHomepoint() void Sapphire::Entity::Player::setZone( uint32_t zoneId ) { - auto pTeriMgr = m_pFw->get< TerritoryMgr >(); + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); m_onEnterEventDone = false; - if( !pTeriMgr->movePlayer( zoneId, getAsPlayer() ) ) + if( !teriMgr.movePlayer( zoneId, getAsPlayer() ) ) { // todo: this will require proper handling, for now just return the player to their previous area m_pos = m_prevPos; m_rot = m_prevRot; m_territoryTypeId = m_prevTerritoryTypeId; - if( !pTeriMgr->movePlayer( m_territoryTypeId, getAsPlayer() ) ) + if( !teriMgr.movePlayer( m_territoryTypeId, getAsPlayer() ) ) return; } @@ -438,9 +436,9 @@ void Sapphire::Entity::Player::setZone( uint32_t zoneId ) bool Sapphire::Entity::Player::setInstance( uint32_t instanceContentId ) { m_onEnterEventDone = false; - auto pTeriMgr = m_pFw->get< TerritoryMgr >(); + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); - auto instance = pTeriMgr->getTerritoryByGuId( instanceContentId ); + auto instance = teriMgr.getTerritoryByGuId( instanceContentId ); if( !instance ) return false; @@ -453,7 +451,7 @@ bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance ) if( !instance ) return false; - auto pTeriMgr = m_pFw->get< TerritoryMgr >(); + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); auto currentZone = getCurrentTerritory(); // zoning within the same zone won't cause the prev data to be overwritten @@ -465,7 +463,7 @@ bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance ) m_prevTerritoryId = getTerritoryId(); } - return pTeriMgr->movePlayer( instance, getAsPlayer() ); + return teriMgr.movePlayer( instance, getAsPlayer() ); } bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance, Common::FFXIVARR_POSITION3 pos ) @@ -474,7 +472,7 @@ bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance, Common::FFXIV if( !instance ) return false; - auto pTeriMgr = m_pFw->get< TerritoryMgr >(); + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); auto currentZone = getCurrentTerritory(); // zoning within the same zone won't cause the prev data to be overwritten @@ -486,7 +484,7 @@ bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance, Common::FFXIV m_prevTerritoryId = getTerritoryId(); } - if( pTeriMgr->movePlayer( instance, getAsPlayer() ) ) + if( teriMgr.movePlayer( instance, getAsPlayer() ) ) { m_pos = pos; return true; @@ -497,7 +495,7 @@ bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance, Common::FFXIV bool Sapphire::Entity::Player::exitInstance() { - auto pTeriMgr = m_pFw->get< TerritoryMgr >(); + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); auto pZone = getCurrentTerritory(); auto pInstance = pZone->getAsInstanceContent(); @@ -506,14 +504,14 @@ bool Sapphire::Entity::Player::exitInstance() resetMp(); // check if housing zone - if( pTeriMgr->isHousingTerritory( m_prevTerritoryTypeId ) ) + if( teriMgr.isHousingTerritory( m_prevTerritoryTypeId ) ) { - if( !pTeriMgr->movePlayer( pTeriMgr->getZoneByLandSetId( m_prevTerritoryId ), getAsPlayer() ) ) + if( !teriMgr.movePlayer( teriMgr.getZoneByLandSetId( m_prevTerritoryId ), getAsPlayer() ) ) return false; } else { - if( !pTeriMgr->movePlayer( m_prevTerritoryTypeId, getAsPlayer() ) ) + if( !teriMgr.movePlayer( m_prevTerritoryTypeId, getAsPlayer() ) ) return false; } @@ -601,12 +599,12 @@ void Sapphire::Entity::Player::discover( int16_t map_id, int16_t sub_id ) // section to starts at 320 - 4 bytes long - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); int32_t offset = 4; - auto info = pExdData->get< Sapphire::Data::Map >( - pExdData->get< Sapphire::Data::TerritoryType >( getCurrentTerritory()->getTerritoryTypeId() )->map ); + auto info = exdData.get< Sapphire::Data::Map >( + exdData.get< Sapphire::Data::TerritoryType >( getCurrentTerritory()->getTerritoryTypeId() )->map ); if( info->discoveryArrayByte ) offset = 5 + 2 * info->discoveryIndex; else @@ -621,7 +619,7 @@ void Sapphire::Entity::Player::discover( int16_t map_id, int16_t sub_id ) uint16_t level = getLevel(); - uint32_t exp = ( pExdData->get< Sapphire::Data::ParamGrow >( level )->expToNext * 5 / 100 ); + uint32_t exp = ( exdData.get< Sapphire::Data::ParamGrow >( level )->expToNext * 5 / 100 ); gainExp( exp ); @@ -705,11 +703,11 @@ void Sapphire::Entity::Player::gainExp( uint32_t amount ) return; } - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - uint32_t neededExpToLevel = pExdData->get< Sapphire::Data::ParamGrow >( level )->expToNext; + uint32_t neededExpToLevel = exdData.get< Sapphire::Data::ParamGrow >( level )->expToNext; - uint32_t neededExpToLevelplus1 = pExdData->get< Sapphire::Data::ParamGrow >( level + 1 )->expToNext; + uint32_t neededExpToLevelplus1 = exdData.get< Sapphire::Data::ParamGrow >( level + 1 )->expToNext; queuePacket( makeActorControlSelf( getId(), GainExpMsg, static_cast< uint8_t >( getClass() ), amount ) ); @@ -777,15 +775,15 @@ void Sapphire::Entity::Player::sendStatusUpdate() uint8_t Sapphire::Entity::Player::getLevel() const { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - uint8_t classJobIndex = pExdData->get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( getClass() ) )->expArrayIndex; + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + uint8_t classJobIndex = exdData.get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( getClass() ) )->expArrayIndex; return static_cast< uint8_t >( m_classArray[ classJobIndex ] ); } uint8_t Sapphire::Entity::Player::getLevelForClass( Common::ClassJob pClass ) const { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - uint8_t classJobIndex = pExdData->get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( pClass ) )->expArrayIndex; + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + uint8_t classJobIndex = exdData.get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( pClass ) )->expArrayIndex; return static_cast< uint8_t >( m_classArray[ classJobIndex ] ); } @@ -797,15 +795,15 @@ bool Sapphire::Entity::Player::isClassJobUnlocked( Common::ClassJob classJob ) c uint32_t Sapphire::Entity::Player::getExp() const { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - uint8_t classJobIndex = pExdData->get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( getClass() ) )->expArrayIndex; + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + uint8_t classJobIndex = exdData.get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( getClass() ) )->expArrayIndex; return m_expArray[ classJobIndex ]; } void Sapphire::Entity::Player::setExp( uint32_t amount ) { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - uint8_t classJobIndex = pExdData->get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( getClass() ) )->expArrayIndex; + auto exdData = Common::Service< Data::ExdDataGenerated >::ref(); + uint8_t classJobIndex = exdData.get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( getClass() ) )->expArrayIndex; m_expArray[ classJobIndex ] = amount; } @@ -846,15 +844,15 @@ void Sapphire::Entity::Player::setClassJob( Common::ClassJob classJob ) void Sapphire::Entity::Player::setLevel( uint8_t level ) { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - uint8_t classJobIndex = pExdData->get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( getClass() ) )->expArrayIndex; + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + uint8_t classJobIndex = exdData.get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( getClass() ) )->expArrayIndex; m_classArray[ classJobIndex ] = level; } void Sapphire::Entity::Player::setLevelForClass( uint8_t level, Common::ClassJob classjob ) { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - uint8_t classJobIndex = pExdData->get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( classjob ) )->expArrayIndex; + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + uint8_t classJobIndex = exdData.get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( classjob ) )->expArrayIndex; if( m_classArray[ classJobIndex ] == 0 ) insertDbClass( classJobIndex ); @@ -996,8 +994,8 @@ const uint8_t* Sapphire::Entity::Player::getStateFlags() const bool Sapphire::Entity::Player::actionHasCastTime( uint32_t actionId ) //TODO: Add logic for special cases { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - auto actionInfoPtr = pExdData->get< Sapphire::Data::Action >( actionId ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto actionInfoPtr = exdData.get< Sapphire::Data::Action >( actionId ); if( actionInfoPtr->preservesCombo ) return false; @@ -1148,8 +1146,8 @@ void Sapphire::Entity::Player::update( uint64_t tickCount ) void Sapphire::Entity::Player::onMobKill( uint16_t nameId ) { - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onBNpcKill( *getAsPlayer(), nameId ); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + scriptMgr.onBNpcKill( *getAsPlayer(), nameId ); if( isActionLearned( static_cast< uint8_t >( Common::UnlockEntry::HuntingLog ) ) ) { @@ -1257,8 +1255,8 @@ const uint8_t* Sapphire::Entity::Player::getGcRankArray() const void Sapphire::Entity::Player::queuePacket( Network::Packets::FFXIVPacketBasePtr pPacket ) { - auto pServerZone = m_pFw->get< World::ServerMgr >(); - auto pSession = pServerZone->getSession( m_id ); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + auto pSession = serverMgr.getSession( m_id ); if( !pSession ) return; @@ -1272,8 +1270,8 @@ void Sapphire::Entity::Player::queuePacket( Network::Packets::FFXIVPacketBasePtr void Sapphire::Entity::Player::queueChatPacket( Network::Packets::FFXIVPacketBasePtr pPacket ) { - auto pServerZone = m_pFw->get< World::ServerMgr >(); - auto pSession = pServerZone->getSession( m_id ); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + auto pSession = serverMgr.getSession( m_id ); if( !pSession ) return; @@ -1534,10 +1532,9 @@ void Sapphire::Entity::Player::dismount() void Sapphire::Entity::Player::spawnCompanion( uint16_t id ) { - auto exdData = m_pFw->get< Data::ExdDataGenerated >(); - assert( exdData ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - auto companion = exdData->get< Data::Companion >( id ); + auto companion = exdData.get< Data::Companion >( id ); if( !id ) return; @@ -1574,8 +1571,8 @@ void Sapphire::Entity::Player::autoAttack( CharaPtr pTarget ) //uint64_t tick = Util::getTimeMs(); //srand(static_cast< uint32_t >(tick)); - auto pRNGMgr = m_pFw->get< World::Manager::RNGMgr >(); - auto variation = static_cast< uint32_t >( pRNGMgr->getRandGenerator< float >( 0, 3 ).next() ); + auto& RNGMgr = Common::Service< World::Manager::RNGMgr >::ref(); + auto variation = static_cast< uint32_t >( RNGMgr.getRandGenerator< float >( 0, 3 ).next() ); auto damage = Math::CalcStats::calcAutoAttackDamage( *this ); @@ -1689,8 +1686,8 @@ void Sapphire::Entity::Player::sendZonePackets() if( isLogin() ) { //Update player map in servermgr - in case player name has been changed - auto pServerMgr = m_pFw->get< World::ServerMgr >(); - pServerMgr->updatePlayerName( getId(), getName() ); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + serverMgr.updatePlayerName( getId(), getName() ); } getCurrentTerritory()->onBeforePlayerZoneIn( *this ); @@ -1740,8 +1737,8 @@ void Sapphire::Entity::Player::sendZonePackets() sendItemLevel(); } - auto pHousingMgr = m_pFw->get< HousingMgr >(); - if( Sapphire::LandPtr pLand = pHousingMgr->getLandByOwnerId( getId() ) ) + auto& housingMgr = Common::Service< HousingMgr >::ref(); + if( Sapphire::LandPtr pLand = housingMgr.getLandByOwnerId( getId() ) ) { uint32_t state = 0; @@ -1868,14 +1865,14 @@ void Sapphire::Entity::Player::emoteInterrupt() void Sapphire::Entity::Player::teleportQuery( uint16_t aetheryteId ) { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); // TODO: only register this action if enough gil is in possession - auto targetAetheryte = pExdData->get< Sapphire::Data::Aetheryte >( aetheryteId ); + auto targetAetheryte = exdData.get< Sapphire::Data::Aetheryte >( aetheryteId ); if( targetAetheryte ) { - auto fromAetheryte = pExdData->get< Sapphire::Data::Aetheryte >( - pExdData->get< Sapphire::Data::TerritoryType >( getZoneId() )->aetheryte ); + auto fromAetheryte = exdData.get< Sapphire::Data::Aetheryte >( + exdData.get< Sapphire::Data::TerritoryType >( getZoneId() )->aetheryte ); // calculate cost - does not apply for favorite points or homepoints neither checks for aether tickets auto cost = static_cast< uint16_t > ( @@ -2019,7 +2016,7 @@ Sapphire::Common::HuntingLogEntry& Sapphire::Entity::Player::getHuntingLogEntry( void Sapphire::Entity::Player::sendHuntingLog() { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); uint8_t count = 0; for( const auto& entry : m_huntingLogEntries ) { @@ -2036,7 +2033,7 @@ void Sapphire::Entity::Player::sendHuntingLog() bool allComplete = true; auto monsterNoteId = ( count + 1 ) * 10000 + entry.rank * 10 + i; - auto monsterNote = pExdData->get< Data::MonsterNote >( monsterNoteId ); + auto monsterNote = exdData.get< Data::MonsterNote >( monsterNoteId ); if( !monsterNote ) continue; @@ -2065,7 +2062,7 @@ void Sapphire::Entity::Player::updateHuntingLog( uint16_t id ) { std::vector< uint32_t > rankRewards{ 2500, 10000, 20000, 30000, 40000 }; const auto maxRank = 4; - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); + auto& pExdData = Common::Service< Data::ExdDataGenerated >::ref(); auto& logEntry = m_huntingLogEntries[ static_cast< uint8_t >( getClass() ) - 1 ]; @@ -2073,7 +2070,7 @@ void Sapphire::Entity::Player::updateHuntingLog( uint16_t id ) // make sure we get the matching base-class if a job is being used auto currentClass = static_cast< uint8_t >( getClass() ); - auto classJobInfo = pExdData->get< Sapphire::Data::ClassJob >( currentClass ); + auto classJobInfo = pExdData.get< Sapphire::Data::ClassJob >( currentClass ); if( !classJobInfo ) return; @@ -2083,7 +2080,7 @@ void Sapphire::Entity::Player::updateHuntingLog( uint16_t id ) bool sectionComplete = true; bool sectionChanged = false; uint32_t monsterNoteId = static_cast< uint32_t >( classJobInfo->classJobParent * 10000 + logEntry.rank * 10 + i ); - auto note = pExdData->get< Sapphire::Data::MonsterNote >( monsterNoteId ); + auto note = pExdData.get< Sapphire::Data::MonsterNote >( monsterNoteId ); // for classes that don't have entries, if the first fails the rest will fail if( !note ) @@ -2091,7 +2088,7 @@ void Sapphire::Entity::Player::updateHuntingLog( uint16_t id ) for( auto x = 0; x < 4; ++x ) { - auto note1 = pExdData->get< Sapphire::Data::MonsterNoteTarget >( note->monsterNoteTarget[ x ] ); + auto note1 = pExdData.get< Sapphire::Data::MonsterNoteTarget >( note->monsterNoteTarget[ x ] ); if( note1->bNpcName == id && logEntry.entries[ i - 1 ][ x ] < note->count[ x ] ) { logEntry.entries[ i - 1 ][ x ]++; diff --git a/src/world/Actor/Player.h b/src/world/Actor/Player.h index 7dd294db..003c85d0 100644 --- a/src/world/Actor/Player.h +++ b/src/world/Actor/Player.h @@ -41,7 +41,7 @@ namespace Sapphire::Entity { public: /*! Contructor */ - Player( FrameworkPtr pFw ); + Player(); /*! Destructor */ ~Player(); diff --git a/src/world/Actor/PlayerEvent.cpp b/src/world/Actor/PlayerEvent.cpp index 08f830e4..a0189b8b 100644 --- a/src/world/Actor/PlayerEvent.cpp +++ b/src/world/Actor/PlayerEvent.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "Network/GameConnection.h" #include "Network/PacketWrappers/ActorControlPacket.h" @@ -13,7 +14,6 @@ #include "Territory/Territory.h" #include "ServerMgr.h" -#include "Framework.h" #include "Action/EventAction.h" @@ -299,7 +299,7 @@ void Sapphire::Entity::Player::eventActionStart( uint32_t eventId, uint64_t additional ) { auto pEventAction = World::Action::make_EventAction( getAsChara(), eventId, action, - finishCallback, interruptCallback, additional, m_pFw ); + finishCallback, interruptCallback, additional ); auto pEvent = getEvent( eventId ); @@ -341,8 +341,9 @@ void Sapphire::Entity::Player::eventItemActionStart( uint32_t eventId, void Sapphire::Entity::Player::onLogin() { - auto pServerMgr = m_pFw->get< Sapphire::World::ServerMgr >(); - auto motd = pServerMgr->getConfig().motd; + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + + auto motd = serverMgr.getConfig().motd; std::istringstream ss( motd ); std::string msg; diff --git a/src/world/Actor/PlayerInventory.cpp b/src/world/Actor/PlayerInventory.cpp index 963830ae..d10c7c66 100644 --- a/src/world/Actor/PlayerInventory.cpp +++ b/src/world/Actor/PlayerInventory.cpp @@ -14,7 +14,6 @@ #include "Player.h" -#include "Framework.h" #include @@ -30,8 +29,7 @@ #include "Manager/InventoryMgr.h" #include "Manager/ItemMgr.h" -#include "Framework.h" -#include +#include using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; @@ -43,7 +41,7 @@ void Sapphire::Entity::Player::initInventory() { auto setupContainer = [ this ]( InventoryType type, uint8_t maxSize, const std::string& tableName, bool isMultiStorage, bool isPersistentStorage = true ) - { m_storageMap[ type ] = make_ItemContainer( type, maxSize, tableName, isMultiStorage, m_pFw, isPersistentStorage ); }; + { m_storageMap[ type ] = make_ItemContainer( type, maxSize, tableName, isMultiStorage, isPersistentStorage ); }; // main bags setupContainer( Bag0, 34, "charaiteminventory", true ); @@ -114,13 +112,11 @@ void Sapphire::Entity::Player::sendItemLevel() void Sapphire::Entity::Player::equipWeapon( ItemPtr pItem, bool updateClass ) { - auto exdData = m_pFw->get< Sapphire::Data::ExdDataGenerated >(); - if( !exdData ) - return; + auto& exdData = Common::Service< Sapphire::Data::ExdDataGenerated >::ref(); - auto itemInfo = exdData->get< Sapphire::Data::Item >( pItem->getId() ); + auto itemInfo = exdData.get< Sapphire::Data::Item >( pItem->getId() ); auto itemClassJob = itemInfo->classJobUse; - auto classJobInfo = exdData->get< Sapphire::Data::ClassJob >( static_cast< uint32_t >( getClass() ) ); + auto classJobInfo = exdData.get< Sapphire::Data::ClassJob >( static_cast< uint32_t >( getClass() ) ); auto currentParentClass = static_cast< ClassJob >( classJobInfo->classJobParent ); auto newClassJob = static_cast< ClassJob >( itemClassJob ); @@ -135,11 +131,9 @@ void Sapphire::Entity::Player::equipWeapon( ItemPtr pItem, bool updateClass ) void Sapphire::Entity::Player::equipSoulCrystal( ItemPtr pItem, bool updateJob ) { - auto exdData = m_pFw->get< Sapphire::Data::ExdDataGenerated >(); - if ( !exdData ) - return; + auto& exdData = Common::Service< Sapphire::Data::ExdDataGenerated >::ref(); - auto itemInfo = exdData->get< Sapphire::Data::Item >( pItem->getId() ); + auto itemInfo = exdData.get< Sapphire::Data::Item >( pItem->getId() ); auto itemClassJob = itemInfo->classJobUse; auto newClassJob = static_cast< ClassJob >( itemClassJob ); @@ -296,11 +290,9 @@ void Sapphire::Entity::Player::unequipItem( Common::GearSetSlot equipSlotId, Ite void Sapphire::Entity::Player::unequipSoulCrystal( ItemPtr pItem ) { - auto exdData = m_pFw->get< Sapphire::Data::ExdDataGenerated >(); - if ( !exdData ) - return; + auto& exdData = Common::Service< Sapphire::Data::ExdDataGenerated >::ref(); - auto currentClassJob = exdData->get< Sapphire::Data::ClassJob >( static_cast< uint32_t >( getClass() ) ); + auto currentClassJob = exdData.get< Sapphire::Data::ClassJob >( static_cast< uint32_t >( getClass() ) ); auto parentClass = static_cast< ClassJob >( currentClassJob->classJobParent ); setClassJob( parentClass ); } @@ -406,11 +398,11 @@ void Sapphire::Entity::Player::removeCrystal( Common::CrystalType type, uint32_t void Sapphire::Entity::Player::sendInventory() { - auto pInvMgr = m_pFw->get< World::Manager::InventoryMgr >(); + auto& invMgr = Common::Service< World::Manager::InventoryMgr >::ref(); for( auto it = m_storageMap.begin(); it != m_storageMap.end(); ++it ) { - pInvMgr->sendInventoryContainer( *this, it->second ); + invMgr.sendInventoryContainer( *this, it->second ); } } @@ -474,7 +466,7 @@ uint32_t Sapphire::Entity::Player::getCrystal( CrystalType type ) void Sapphire::Entity::Player::writeInventory( InventoryType type ) { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); auto storage = m_storageMap[ type ]; @@ -498,13 +490,13 @@ void Sapphire::Entity::Player::writeInventory( InventoryType type ) if( storage->isMultiStorage() ) query += " AND storageId = " + std::to_string( static_cast< uint16_t >( type ) ); - pDb->execute( query ); + db.execute( query ); } void Sapphire::Entity::Player::writeItem( Sapphire::ItemPtr pItem ) const { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto stmt = pDb->getPreparedStatement( Db::CHARA_ITEMGLOBAL_UP ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmt = db.getPreparedStatement( Db::CHARA_ITEMGLOBAL_UP ); // todo: add more fields stmt->setInt( 1, pItem->getStackSize() ); @@ -513,17 +505,17 @@ void Sapphire::Entity::Player::writeItem( Sapphire::ItemPtr pItem ) const stmt->setInt64( 4, pItem->getUId() ); - pDb->directExecute( stmt ); + db.directExecute( stmt ); } void Sapphire::Entity::Player::deleteItemDb( Sapphire::ItemPtr item ) const { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto stmt = pDb->getPreparedStatement( Db::CHARA_ITEMGLOBAL_DELETE ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmt = db.getPreparedStatement( Db::CHARA_ITEMGLOBAL_DELETE ); stmt->setInt64( 1, item->getUId() ); - pDb->directExecute( stmt ); + db.directExecute( stmt ); } @@ -536,9 +528,8 @@ bool Sapphire::Entity::Player::isObtainable( uint32_t catalogId, uint8_t quantit Sapphire::ItemPtr Sapphire::Entity::Player::addItem( uint32_t catalogId, uint32_t quantity, bool isHq, bool silent, bool canMerge ) { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - auto itemInfo = pExdData->get< Sapphire::Data::Item >( catalogId ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto itemInfo = exdData.get< Sapphire::Data::Item >( catalogId ); // if item data doesn't exist or it's a blank field if( !itemInfo || itemInfo->levelItem == 0 ) diff --git a/src/world/Actor/PlayerQuest.cpp b/src/world/Actor/PlayerQuest.cpp index 444569b0..854cdc13 100644 --- a/src/world/Actor/PlayerQuest.cpp +++ b/src/world/Actor/PlayerQuest.cpp @@ -2,12 +2,12 @@ #include #include #include +#include #include "Network/GameConnection.h" #include "Network/PacketWrappers/QuestMessagePacket.h" #include "Session.h" -#include "Framework.h" using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; @@ -1036,15 +1036,15 @@ void Sapphire::Entity::Player::removeQuestsCompleted( uint32_t questId ) bool Sapphire::Entity::Player::giveQuestRewards( uint32_t questId, uint32_t optionalChoice ) { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); uint32_t playerLevel = getLevel(); - auto questInfo = pExdData->get< Sapphire::Data::Quest >( questId ); + auto questInfo = exdData.get< Sapphire::Data::Quest >( questId ); if( !questInfo ) return false; - auto paramGrowth = pExdData->get< Sapphire::Data::ParamGrow >( questInfo->classJobLevel0 ); + auto paramGrowth = exdData.get< Sapphire::Data::ParamGrow >( questInfo->classJobLevel0 ); // TODO: use the correct formula, this one is wrong uint32_t exp = diff --git a/src/world/Actor/PlayerSql.cpp b/src/world/Actor/PlayerSql.cpp index 5a8edafb..1547e744 100644 --- a/src/world/Actor/PlayerSql.cpp +++ b/src/world/Actor/PlayerSql.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include "Network/GameConnection.h" #include "Network/PacketWrappers/PlayerSetupPacket.h" @@ -19,7 +20,6 @@ #include "Manager/ItemMgr.h" #include "ServerMgr.h" -#include "Framework.h" using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; @@ -29,16 +29,16 @@ using namespace Sapphire::World::Manager; // load player from the db bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession ) { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto pTeriMgr = m_pFw->get< TerritoryMgr >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); m_pSession = pSession; const std::string char_id_str = std::to_string( charId ); - auto stmt = pDb->getPreparedStatement( Db::ZoneDbStatements::CHARA_SEL ); + auto stmt = db.getPreparedStatement( Db::ZoneDbStatements::CHARA_SEL ); stmt->setUInt( 1, charId ); - auto res = pDb->query( stmt ); + auto res = db.query( stmt ); if( !res->next() ) return false; @@ -67,10 +67,10 @@ bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession TerritoryPtr pCurrZone = nullptr; // if the zone is an instanceContent zone, we need to actually find the instance - if( pTeriMgr->isInstanceContentTerritory( zoneId ) ) + if( teriMgr.isInstanceContentTerritory( zoneId ) ) { // try to find an instance actually linked to this player - pCurrZone = pTeriMgr->getLinkedInstance( m_id ); + pCurrZone = teriMgr.getLinkedInstance( m_id ); // if none found, revert to previous zone and position if( !pCurrZone ) { @@ -79,13 +79,13 @@ bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession m_pos.y = m_prevPos.y; m_pos.z = m_prevPos.z; setRot( m_prevRot ); - pCurrZone = pTeriMgr->getZoneByTerritoryTypeId( zoneId ); + pCurrZone = teriMgr.getZoneByTerritoryTypeId( zoneId ); } } - else if( pTeriMgr->isInternalEstateTerritory( zoneId ) ) + else if( teriMgr.isInternalEstateTerritory( zoneId ) ) { // todo: this needs to go to the area just outside of the plot door - pCurrZone = pTeriMgr->getZoneByLandSetId( m_prevTerritoryId ); + pCurrZone = teriMgr.getZoneByLandSetId( m_prevTerritoryId ); zoneId = m_prevTerritoryTypeId; m_pos.x = m_prevPos.x; @@ -93,13 +93,13 @@ bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession m_pos.z = m_prevPos.z; setRot( m_prevRot ); } - else if( pTeriMgr->isHousingTerritory( zoneId ) ) + else if( teriMgr.isHousingTerritory( zoneId ) ) { - pCurrZone = pTeriMgr->getZoneByLandSetId( m_territoryId ); + pCurrZone = teriMgr.getZoneByLandSetId( m_territoryId ); } else { - pCurrZone = pTeriMgr->getZoneByTerritoryTypeId( zoneId ); + pCurrZone = teriMgr.getZoneByTerritoryTypeId( zoneId ); } m_territoryTypeId = zoneId; @@ -113,7 +113,7 @@ bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession // default to new gridania // TODO: should probably just abort and mark character as corrupt - pCurrZone = pTeriMgr->getZoneByTerritoryTypeId( 132 ); + pCurrZone = teriMgr.getZoneByTerritoryTypeId( 132 ); m_pos.x = 0.0f; m_pos.y = 0.0f; @@ -250,7 +250,7 @@ bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession initSpawnIdQueue(); - if( !pTeriMgr->movePlayer( pCurrZone, getAsPlayer() ) ) + if( !teriMgr.movePlayer( pCurrZone, getAsPlayer() ) ) return false; return true; @@ -258,11 +258,11 @@ bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession bool Sapphire::Entity::Player::loadActiveQuests() { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto stmt = pDb->getPreparedStatement( Db::ZoneDbStatements::CHARA_SEL_QUEST ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmt = db.getPreparedStatement( Db::ZoneDbStatements::CHARA_SEL_QUEST ); stmt->setUInt( 1, m_id ); - auto res = pDb->query( stmt ); + auto res = db.query( stmt ); while( res->next() ) { @@ -294,11 +294,11 @@ bool Sapphire::Entity::Player::loadActiveQuests() bool Sapphire::Entity::Player::loadClassData() { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); // ClassIdx, Exp, Lvl - auto stmt = pDb->getPreparedStatement( Db::ZoneDbStatements::CHARA_CLASS_SEL ); + auto stmt = db.getPreparedStatement( Db::ZoneDbStatements::CHARA_CLASS_SEL ); stmt->setUInt( 1, m_id ); - auto res = pDb->query( stmt ); + auto res = db.query( stmt ); while( res->next() ) { @@ -315,10 +315,10 @@ bool Sapphire::Entity::Player::loadClassData() bool Sapphire::Entity::Player::loadSearchInfo() { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto stmt = pDb->getPreparedStatement( Db::ZoneDbStatements::CHARA_SEL_SEARCHINFO ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmt = db.getPreparedStatement( Db::ZoneDbStatements::CHARA_SEL_SEARCHINFO ); stmt->setUInt( 1, m_id ); - auto res = pDb->query( stmt ); + auto res = db.query( stmt ); if( !res->next() ) { @@ -340,10 +340,10 @@ bool Sapphire::Entity::Player::loadSearchInfo() bool Sapphire::Entity::Player::loadHuntingLog() { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto stmt = pDb->getPreparedStatement( Db::ZoneDbStatements::CHARA_MONSTERNOTE_SEL ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmt = db.getPreparedStatement( Db::ZoneDbStatements::CHARA_MONSTERNOTE_SEL ); stmt->setUInt( 1, m_id ); - auto res = pDb->query( stmt ); + auto res = db.query( stmt ); if( !res->next() ) { @@ -363,7 +363,7 @@ bool Sapphire::Entity::Player::loadHuntingLog() void Sapphire::Entity::Player::updateSql() { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); /*"Hp 1, Mp 2, Tp 3, Gp 4, Mode 5, Mount 6, InvincibleGM 7, Voice 8, " "Customize 9, ModelMainWeapon 10, ModelSubWeapon 11, ModelSystemWeapon 12, " "ModelEquip 13, EmoteModeType 14, Language 15, IsNewGame 16, IsNewAdventurer 17, " @@ -377,7 +377,7 @@ void Sapphire::Entity::Player::updateSql() - auto stmt = pDb->getPreparedStatement( Db::ZoneDbStatements::CHARA_UP ); + auto stmt = db.getPreparedStatement( Db::ZoneDbStatements::CHARA_UP ); stmt->setInt( 1, getHp() ); stmt->setInt( 2, getMp() ); @@ -490,7 +490,7 @@ void Sapphire::Entity::Player::updateSql() stmt->setInt( 57, m_id ); - pDb->execute( stmt ); + db.execute( stmt ); ////// Searchinfo updateDbSearchInfo(); @@ -508,24 +508,24 @@ void Sapphire::Entity::Player::updateSql() void Sapphire::Entity::Player::updateDbClass() const { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - uint8_t classJobIndex = pExdData->get< Sapphire::Data::ClassJob >( static_cast( getClass() ) )->expArrayIndex; + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + uint8_t classJobIndex = exdData.get< Sapphire::Data::ClassJob >( static_cast( getClass() ) )->expArrayIndex; //Exp = ?, Lvl = ? WHERE CharacterId = ? AND ClassIdx = ? - auto stmtS = pDb->getPreparedStatement( Db::CHARA_CLASS_UP ); + auto stmtS = db.getPreparedStatement( Db::CHARA_CLASS_UP ); stmtS->setInt( 1, getExp() ); stmtS->setInt( 2, getLevel() ); stmtS->setInt( 3, m_id ); stmtS->setInt( 4, classJobIndex ); - pDb->execute( stmtS ); + db.execute( stmtS ); } void Sapphire::Entity::Player::updateDbMonsterNote() { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); // Category_0-11 - auto stmt = pDb->getPreparedStatement( Db::CHARA_MONSTERNOTE_UP ); + auto stmt = db.getPreparedStatement( Db::CHARA_MONSTERNOTE_UP ); //std::array< std::vector< uint8_t >, 12 > vectors; std::vector< uint8_t > vector( 41 ); for( std::size_t i = 0; i < m_huntingLogEntries.size(); ++i ) @@ -538,48 +538,48 @@ void Sapphire::Entity::Player::updateDbMonsterNote() stmt->setBinary( i + 1, vector ); } stmt->setInt( 13, m_id ); - pDb->execute( stmt ); + db.execute( stmt ); } void Sapphire::Entity::Player::insertDbClass( const uint8_t classJobIndex ) const { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto stmtClass = pDb->getPreparedStatement( Db::CHARA_CLASS_INS ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmtClass = db.getPreparedStatement( Db::CHARA_CLASS_INS ); stmtClass->setInt( 1, getId() ); stmtClass->setInt( 2, classJobIndex ); stmtClass->setInt( 3, 0 ); stmtClass->setInt( 4, 1 ); - pDb->directExecute( stmtClass ); + db.directExecute( stmtClass ); } void Sapphire::Entity::Player::updateDbSearchInfo() const { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto stmtS = pDb->getPreparedStatement( Db::CHARA_SEARCHINFO_UP_SELECTCLASS ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmtS = db.getPreparedStatement( Db::CHARA_SEARCHINFO_UP_SELECTCLASS ); stmtS->setInt( 1, m_searchSelectClass ); stmtS->setInt( 2, m_id ); - pDb->execute( stmtS ); + db.execute( stmtS ); - auto stmtS1 = pDb->getPreparedStatement( Db::CHARA_SEARCHINFO_UP_SELECTREGION ); + auto stmtS1 = db.getPreparedStatement( Db::CHARA_SEARCHINFO_UP_SELECTREGION ); stmtS1->setInt( 1, m_searchSelectRegion ); stmtS1->setInt( 2, m_id ); - pDb->execute( stmtS1 ); + db.execute( stmtS1 ); - auto stmtS2 = pDb->getPreparedStatement( Db::CHARA_SEARCHINFO_UP_SEARCHCOMMENT ); + auto stmtS2 = db.getPreparedStatement( Db::CHARA_SEARCHINFO_UP_SEARCHCOMMENT ); stmtS2->setString( 1, std::string( m_searchMessage ) ); stmtS2->setInt( 2, m_id ); - pDb->execute( stmtS2 ); + db.execute( stmtS2 ); } void Sapphire::Entity::Player::updateDbAllQuests() const { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); for( int32_t i = 0; i < 30; i++ ) { if( !m_activeQuests[ i ] ) continue; - auto stmtS3 = pDb->getPreparedStatement( Db::CHARA_QUEST_UP ); + auto stmtS3 = db.getPreparedStatement( Db::CHARA_QUEST_UP ); stmtS3->setInt( 1, m_activeQuests[ i ]->c.sequence ); stmtS3->setInt( 2, m_activeQuests[ i ]->c.flags ); stmtS3->setInt( 3, m_activeQuests[ i ]->c.UI8A ); @@ -591,24 +591,24 @@ void Sapphire::Entity::Player::updateDbAllQuests() const stmtS3->setInt( 9, m_activeQuests[ i ]->c.padding1 ); stmtS3->setInt( 10, m_id ); stmtS3->setInt( 11, m_activeQuests[ i ]->c.questId ); - pDb->execute( stmtS3 ); + db.execute( stmtS3 ); } } void Sapphire::Entity::Player::deleteQuest( uint16_t questId ) const { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto stmt = pDb->getPreparedStatement( Db::CHARA_QUEST_DEL ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmt = db.getPreparedStatement( Db::CHARA_QUEST_DEL ); stmt->setInt( 1, m_id ); stmt->setInt( 2, questId ); - pDb->execute( stmt ); + db.execute( stmt ); } void Sapphire::Entity::Player::insertQuest( uint16_t questId, uint8_t index, uint8_t seq ) const { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto stmt = pDb->getPreparedStatement( Db::CHARA_QUEST_INS ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmt = db.getPreparedStatement( Db::CHARA_QUEST_INS ); stmt->setInt( 1, m_id ); stmt->setInt( 2, index ); stmt->setInt( 3, questId ); @@ -621,15 +621,16 @@ void Sapphire::Entity::Player::insertQuest( uint16_t questId, uint8_t index, uin stmt->setInt( 10, 0 ); stmt->setInt( 11, 0 ); stmt->setInt( 12, 0 ); - pDb->execute( stmt ); + db.execute( stmt ); } Sapphire::ItemPtr Sapphire::Entity::Player::createItem( uint32_t catalogId, uint32_t quantity ) { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto itemInfo = pExdData->get< Sapphire::Data::Item >( catalogId ); - auto itemMgr = m_pFw->get< World::Manager::ItemMgr >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto& itemMgr = Common::Service< World::Manager::ItemMgr >::ref(); + + auto itemInfo = exdData.get< Sapphire::Data::Item >( catalogId ); if( !itemInfo ) return nullptr; @@ -639,27 +640,27 @@ Sapphire::ItemPtr Sapphire::Entity::Player::createItem( uint32_t catalogId, uint uint8_t flags = 0; - ItemPtr pItem = make_Item( itemMgr->getNextUId(), catalogId, m_pFw ); + ItemPtr pItem = make_Item( itemMgr.getNextUId(), catalogId ); pItem->setStackSize( quantity ); - pDb->execute( "INSERT INTO charaglobalitem ( CharacterId, itemId, catalogId, stack, flags ) VALUES ( " + - std::to_string( getId() ) + ", " + - std::to_string( pItem->getUId() ) + ", " + - std::to_string( pItem->getId() ) + ", " + - std::to_string( quantity ) + ", " + - std::to_string( flags ) + ");" ); + db.execute( "INSERT INTO charaglobalitem ( CharacterId, itemId, catalogId, stack, flags ) VALUES ( " + + std::to_string( getId() ) + ", " + + std::to_string( pItem->getUId() ) + ", " + + std::to_string( pItem->getId() ) + ", " + + std::to_string( quantity ) + ", " + + std::to_string( flags ) + ");" ); return pItem; } bool Sapphire::Entity::Player::loadInventory() { - auto itemMgr = m_pFw->get< World::Manager::ItemMgr >(); - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& itemMgr = Common::Service< World::Manager::ItemMgr >::ref(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); ////////////////////////////////////////////////////////////////////////////////////////////////////// // load active gearset - auto res = pDb->query( "SELECT storageId, container_0, container_1, container_2, container_3, " + auto res = db.query( "SELECT storageId, container_0, container_1, container_2, container_3, " "container_4, container_5, container_6, container_7, " "container_8, container_9, container_10, container_11, " "container_12, container_13 " @@ -677,7 +678,7 @@ bool Sapphire::Entity::Player::loadInventory() if( uItemId == 0 ) continue; - ItemPtr pItem = itemMgr->loadItem( uItemId ); + ItemPtr pItem = itemMgr.loadItem( uItemId ); if( pItem == nullptr ) continue; @@ -689,7 +690,7 @@ bool Sapphire::Entity::Player::loadInventory() /////////////////////////////////////////////////////////////////////////////////////////////////////// // Load everything - auto bagRes = pDb->query( "SELECT storageId, " + auto bagRes = db.query( "SELECT storageId, " "container_0, container_1, container_2, container_3, container_4, " "container_5, container_6, container_7, container_8, container_9, " "container_10, container_11, container_12, container_13, container_14, " @@ -710,7 +711,7 @@ bool Sapphire::Entity::Player::loadInventory() if( uItemId == 0 ) continue; - ItemPtr pItem = itemMgr->loadItem( uItemId ); + ItemPtr pItem = itemMgr.loadItem( uItemId ); if( pItem == nullptr ) continue; diff --git a/src/world/ForwardsZone.h b/src/world/ForwardsZone.h index db366d35..13b6b489 100644 --- a/src/world/ForwardsZone.h +++ b/src/world/ForwardsZone.h @@ -29,7 +29,6 @@ TYPE_FORWARD( ItemContainer ); TYPE_FORWARD( ZonePosition ); TYPE_FORWARD( Land ); TYPE_FORWARD( Linkshell ); -TYPE_FORWARD( Framework ); namespace World { diff --git a/src/world/Inventory/HousingItem.cpp b/src/world/Inventory/HousingItem.cpp index f4fe35da..954c9053 100644 --- a/src/world/Inventory/HousingItem.cpp +++ b/src/world/Inventory/HousingItem.cpp @@ -1,7 +1,7 @@ #include "HousingItem.h" -Sapphire::Inventory::HousingItem::HousingItem( uint64_t uId, uint32_t catalogId, FrameworkPtr pFw ) : - Sapphire::Item( uId, catalogId, pFw, false ) +Sapphire::Inventory::HousingItem::HousingItem( uint64_t uId, uint32_t catalogId ) : + Sapphire::Item( uId, catalogId, false ) { m_stackSize = 1; m_spiritBond = 1; diff --git a/src/world/Inventory/HousingItem.h b/src/world/Inventory/HousingItem.h index ba208ddc..279a7910 100644 --- a/src/world/Inventory/HousingItem.h +++ b/src/world/Inventory/HousingItem.h @@ -8,7 +8,7 @@ namespace Sapphire::Inventory class HousingItem : public Item { public: - HousingItem( uint64_t uId, uint32_t catalogId, FrameworkPtr pFw ); + HousingItem( uint64_t uId, uint32_t catalogId ); virtual ~HousingItem() = default; void setRot( float rot ); diff --git a/src/world/Inventory/Item.cpp b/src/world/Inventory/Item.cpp index 1b75fcaf..ac41926c 100644 --- a/src/world/Inventory/Item.cpp +++ b/src/world/Inventory/Item.cpp @@ -1,22 +1,21 @@ #include #include #include +#include -#include "Framework.h" #include "Item.h" -Sapphire::Item::Item( uint64_t uId, uint32_t catalogId, FrameworkPtr pFw, bool isHq ) : +Sapphire::Item::Item( uint64_t uId, uint32_t catalogId, bool isHq ) : m_id( catalogId ), m_uId( uId ), m_isHq( isHq ), m_stain( 0 ), m_durability( 30000 ), m_spiritBond( 0 ), - m_reservedFlag( 0 ), - m_pFw( pFw ) + m_reservedFlag( 0 ) { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - auto itemInfo = pExdData->get< Sapphire::Data::Item >( catalogId ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto itemInfo = exdData.get< Sapphire::Data::Item >( catalogId ); m_delayMs = itemInfo->delayms; m_physicalDmg = itemInfo->damagePhys; diff --git a/src/world/Inventory/Item.h b/src/world/Inventory/Item.h index 35c11286..dff845cc 100644 --- a/src/world/Inventory/Item.h +++ b/src/world/Inventory/Item.h @@ -18,7 +18,7 @@ namespace Sapphire int16_t value; }; - Item( uint64_t uId, uint32_t catalogId, FrameworkPtr pFw, bool isHq = false ); + Item( uint64_t uId, uint32_t catalogId, bool isHq = false ); virtual ~Item() = default; @@ -116,7 +116,6 @@ namespace Sapphire uint32_t m_defense; uint32_t m_defenseMag; - FrameworkPtr m_pFw; uint32_t m_additionalData; BaseParamStruct m_baseParam[6]; diff --git a/src/world/Inventory/ItemContainer.cpp b/src/world/Inventory/ItemContainer.cpp index 6afb81a1..46bedfb5 100644 --- a/src/world/Inventory/ItemContainer.cpp +++ b/src/world/Inventory/ItemContainer.cpp @@ -1,21 +1,20 @@ #include #include #include +#include #include "Actor/Player.h" #include "Item.h" -#include "Framework.h" #include "Forwards.h" #include "ItemContainer.h" Sapphire::ItemContainer::ItemContainer( uint16_t storageId, uint8_t maxSize, const std::string& tableName, - bool isMultiStorage, FrameworkPtr pFw, bool isPersistentStorage ) : + bool isMultiStorage, bool isPersistentStorage ) : m_id( storageId ), m_size( maxSize ), m_tableName( tableName ), m_bMultiStorage( isMultiStorage ), - m_pFw( pFw ), m_isPersistentStorage( isPersistentStorage ) { @@ -38,13 +37,13 @@ uint8_t Sapphire::ItemContainer::getEntryCount() const void Sapphire::ItemContainer::removeItem( uint8_t slotId, bool removeFromDb ) { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); auto it = m_itemMap.find( slotId ); if( it != m_itemMap.end() ) { if( m_isPersistentStorage && removeFromDb ) - pDb->execute( "DELETE FROM charaglobalitem WHERE itemId = " + std::to_string( it->second->getUId() ) ); + db.execute( "DELETE FROM charaglobalitem WHERE itemId = " + std::to_string( it->second->getUId() ) ); m_itemMap.erase( it ); diff --git a/src/world/Inventory/ItemContainer.h b/src/world/Inventory/ItemContainer.h index 140393ae..5e830335 100644 --- a/src/world/Inventory/ItemContainer.h +++ b/src/world/Inventory/ItemContainer.h @@ -15,7 +15,7 @@ namespace Sapphire public: ItemContainer( uint16_t storageId, uint8_t maxSize, const std::string& tableName, bool isMultiStorage, - FrameworkPtr pFw, bool isPersistentStorage = true ); + bool isPersistentStorage = true ); ~ItemContainer(); @@ -48,7 +48,6 @@ namespace Sapphire uint8_t m_size; std::string m_tableName; bool m_bMultiStorage; - FrameworkPtr m_pFw; bool m_isPersistentStorage; ItemMap m_itemMap; Entity::PlayerPtr m_pOwner; diff --git a/src/world/Manager/ActionMgr.cpp b/src/world/Manager/ActionMgr.cpp index aaa723c9..22280a1a 100644 --- a/src/world/Manager/ActionMgr.cpp +++ b/src/world/Manager/ActionMgr.cpp @@ -7,18 +7,11 @@ #include "Actor/Player.h" #include -#include "Framework.h" #include using namespace Sapphire; -World::Manager::ActionMgr::ActionMgr( Sapphire::FrameworkPtr pFw ) : - BaseManager( pFw ) -{ - -} - void World::Manager::ActionMgr::handlePlacedPlayerAction( Entity::Player& player, uint32_t actionId, Data::ActionPtr actionData, Common::FFXIVARR_POSITION3 pos, uint16_t sequence ) @@ -26,7 +19,7 @@ void World::Manager::ActionMgr::handlePlacedPlayerAction( Entity::Player& player player.sendDebug( "got aoe act: {0}", actionData->name ); - auto action = Action::make_Action( player.getAsPlayer(), actionId, sequence, actionData, framework() ); + auto action = Action::make_Action( player.getAsPlayer(), actionId, sequence, actionData ); action->setPos( pos ); @@ -47,7 +40,7 @@ void World::Manager::ActionMgr::handleTargetedPlayerAction( Entity::Player& play Data::ActionPtr actionData, uint64_t targetId, uint16_t sequence ) { - auto action = Action::make_Action( player.getAsPlayer(), actionId, sequence, actionData, framework() ); + auto action = Action::make_Action( player.getAsPlayer(), actionId, sequence, actionData ); action->setTargetId( targetId ); @@ -73,7 +66,7 @@ void World::Manager::ActionMgr::handleItemAction( Sapphire::Entity::Player& play player.sendDebug( "got item act: {0}, slot: {1}, container: {2}", itemId, itemSourceSlot, itemSourceContainer ); auto action = Action::make_ItemAction( player.getAsChara(), itemId, itemActionData, - itemSourceSlot, itemSourceContainer, framework() ); + itemSourceSlot, itemSourceContainer ); // todo: item actions don't have cast times? if so we can just start it and we're good action->start(); @@ -85,7 +78,7 @@ void World::Manager::ActionMgr::handleMountAction( Entity::Player& player, uint1 { player.sendDebug( "mount: {0}", mountId ); - auto action = Action::make_MountAction( player.getAsPlayer(), mountId, sequence, actionData, framework() ); + auto action = Action::make_MountAction( player.getAsPlayer(), mountId, sequence, actionData ); action->setTargetId( targetId ); diff --git a/src/world/Manager/ActionMgr.h b/src/world/Manager/ActionMgr.h index dd1d5f40..af58dc1d 100644 --- a/src/world/Manager/ActionMgr.h +++ b/src/world/Manager/ActionMgr.h @@ -1,7 +1,6 @@ #ifndef SAPPHIRE_ACTIONMGR_H #define SAPPHIRE_ACTIONMGR_H -#include "BaseManager.h" #include "ForwardsZone.h" namespace Sapphire::Data @@ -15,10 +14,10 @@ namespace Sapphire::Data namespace Sapphire::World::Manager { - class ActionMgr : public Manager::BaseManager + class ActionMgr { public: - explicit ActionMgr( FrameworkPtr pFw ); + ActionMgr() = default; ~ActionMgr() = default; void handleTargetedPlayerAction( Entity::Player& player, uint32_t actionId, diff --git a/src/world/Manager/BaseManager.h b/src/world/Manager/BaseManager.h deleted file mode 100644 index 4cd87a03..00000000 --- a/src/world/Manager/BaseManager.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef SAPPHIRE_MANAGER_H -#define SAPPHIRE_MANAGER_H - -#include "ForwardsZone.h" - -namespace Sapphire::World::Manager -{ - - class BaseManager - { - public: - explicit BaseManager( FrameworkPtr pFw ) : m_pFw( std::move( 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/Manager/DebugCommandMgr.cpp b/src/world/Manager/DebugCommandMgr.cpp index bba8c523..54be2fdb 100644 --- a/src/world/Manager/DebugCommandMgr.cpp +++ b/src/world/Manager/DebugCommandMgr.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include "DebugCommand/DebugCommand.h" #include "DebugCommandMgr.h" @@ -37,7 +38,6 @@ #include "ServerMgr.h" #include "Session.h" -#include "Framework.h" using namespace Sapphire::Network; using namespace Sapphire::Network::Packets; @@ -45,8 +45,7 @@ using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::World::Manager; // instanciate and initialize commands -Sapphire::World::Manager::DebugCommandMgr::DebugCommandMgr( FrameworkPtr pFw ) : - BaseManager( pFw ) +Sapphire::World::Manager::DebugCommandMgr::DebugCommandMgr() { // Push all commands onto the register map ( command name - function - description - required GM level ) registerCommand( "set", &DebugCommandMgr::set, "Executes SET commands.", 1 ); @@ -143,8 +142,8 @@ void Sapphire::World::Manager::DebugCommandMgr::help( char* data, Entity::Player void Sapphire::World::Manager::DebugCommandMgr::set( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) { - auto pTerriMgr = framework()->get< TerritoryMgr >(); - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& terriMgr = Common::Service< TerritoryMgr >::ref(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); std::string subCommand = ""; std::string params = ""; @@ -292,11 +291,11 @@ void Sapphire::World::Manager::DebugCommandMgr::set( char* data, Entity::Player& sscanf( params.c_str(), "%hu %hu", &festivalId, &additionalId ); - pTerriMgr->setCurrentFestival( festivalId, additionalId ); + terriMgr.setCurrentFestival( festivalId, additionalId ); } else if( subCommand == "festivaldisable" ) { - pTerriMgr->disableCurrentFestival(); + terriMgr.disableCurrentFestival(); } else if( subCommand == "BitFlag" ) { @@ -372,6 +371,8 @@ void Sapphire::World::Manager::DebugCommandMgr::set( char* data, Entity::Player& void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) { + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + std::string subCommand; std::string params = ""; @@ -403,7 +404,7 @@ void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player& sscanf( params.c_str(), "%d %d %hu", &id, &duration, ¶m ); auto effect = StatusEffect::make_StatusEffect( id, player.getAsPlayer(), player.getAsPlayer(), - duration, 3000, framework() ); + duration, 3000 ); effect->setParam( param ); player.addStatusEffect( effect ); @@ -418,9 +419,7 @@ void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player& } else if( subCommand == "bnpc" ) { - auto serverZone = framework()->get< World::ServerMgr >(); - - auto bNpcTemplate = serverZone->getBNpcTemplate( params ); + auto bNpcTemplate = serverMgr.getBNpcTemplate( params ); if( !bNpcTemplate ) { @@ -434,7 +433,7 @@ void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player& player.getPos().y, player.getPos().z, player.getRot(), - 1, 1000, playerZone, framework() ); + 1, 1000, playerZone ); @@ -536,7 +535,7 @@ void Sapphire::World::Manager::DebugCommandMgr::add( char* data, Entity::Player& void Sapphire::World::Manager::DebugCommandMgr::get( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) { - auto pExdData = framework()->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); std::string subCommand; std::string params = ""; @@ -560,7 +559,7 @@ void Sapphire::World::Manager::DebugCommandMgr::get( char* data, Entity::Player& if( ( subCommand == "pos" ) ) { - int16_t map_id = pExdData->get< Sapphire::Data::TerritoryType >( player.getCurrentTerritory()->getTerritoryTypeId() )->map; + int16_t map_id = exdData.get< Sapphire::Data::TerritoryType >( player.getCurrentTerritory()->getTerritoryTypeId() )->map; player.sendNotice( "Pos:\n {0}\n {1}\n {2}\n {3}\n MapId: {4}\n ZoneId:{5}", player.getPos().x, player.getPos().y, player.getPos().z, @@ -577,8 +576,9 @@ void Sapphire::World::Manager::DebugCommandMgr::injectPacket( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) { - auto pServerZone = framework()->get< World::ServerMgr >(); - auto pSession = pServerZone->getSession( player.getId() ); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + + auto pSession = serverMgr.getSession( player.getId() ); if( pSession ) pSession->getZoneConnection()->injectPacket( data + 7, player ); } @@ -586,8 +586,9 @@ Sapphire::World::Manager::DebugCommandMgr::injectPacket( char* data, Entity::Pla void Sapphire::World::Manager::DebugCommandMgr::injectChatPacket( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) { - auto pServerZone = framework()->get< World::ServerMgr >(); - auto pSession = pServerZone->getSession( player.getId() ); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + + auto pSession = serverMgr.getSession( player.getId() ); if( pSession ) pSession->getChatConnection()->injectPacket( data + 8, player ); } @@ -595,7 +596,8 @@ void Sapphire::World::Manager::DebugCommandMgr::injectChatPacket( char* data, En void Sapphire::World::Manager::DebugCommandMgr::replay( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) { - auto pServerZone = framework()->get< World::ServerMgr >(); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + std::string subCommand; std::string params = ""; @@ -620,19 +622,19 @@ void Sapphire::World::Manager::DebugCommandMgr::replay( char* data, Entity::Play if( subCommand == "start" ) { - auto pSession = pServerZone->getSession( player.getId() ); + auto pSession = serverMgr.getSession( player.getId() ); if( pSession ) pSession->startReplay( params ); } else if( subCommand == "stop" ) { - auto pSession = pServerZone->getSession( player.getId() ); + auto pSession = serverMgr.getSession( player.getId() ); if( pSession ) pSession->stopReplay(); } else if( subCommand == "info" ) { - auto pSession = pServerZone->getSession( player.getId() ); + auto pSession = serverMgr.getSession( player.getId() ); if( pSession ) pSession->sendReplayInfo(); } @@ -695,16 +697,17 @@ void Sapphire::World::Manager::DebugCommandMgr::serverInfo( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) { - auto pServerZone = framework()->get< World::ServerMgr >(); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + player.sendDebug( "SapphireZone {0} \nRev: {1}", Version::VERSION, Version::GIT_HASH ); player.sendDebug( "Compiled: " __DATE__ " " __TIME__ ); - player.sendDebug( "Sessions: {0}", pServerZone->getSessionCount() ); + player.sendDebug( "Sessions: {0}", serverMgr.getSessionCount() ); } void Sapphire::World::Manager::DebugCommandMgr::script( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) { - auto pScriptMgr = framework()->get< Scripting::ScriptMgr >(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); std::string subCommand; std::string params = ""; @@ -730,7 +733,7 @@ void Sapphire::World::Manager::DebugCommandMgr::script( char* data, Entity::Play { if( subCommand == params ) player.sendDebug( "Command failed: requires name of script" ); - else if( pScriptMgr->getNativeScriptHandler().unloadScript( params ) ) + else if( scriptMgr.getNativeScriptHandler().unloadScript( params ) ) player.sendDebug( "Unloaded script successfully." ); else player.sendDebug( "Failed to unload script: {0}", params ); @@ -742,7 +745,7 @@ void Sapphire::World::Manager::DebugCommandMgr::script( char* data, Entity::Play else { std::set< Sapphire::Scripting::ScriptInfo* > scripts; - pScriptMgr->getNativeScriptHandler().findScripts( scripts, params ); + scriptMgr.getNativeScriptHandler().findScripts( scripts, params ); if( !scripts.empty() ) { @@ -764,7 +767,7 @@ void Sapphire::World::Manager::DebugCommandMgr::script( char* data, Entity::Play player.sendDebug( "Command failed: requires relative path to script" ); else { - if( pScriptMgr->getNativeScriptHandler().loadScript( params ) ) + if( scriptMgr.getNativeScriptHandler().loadScript( params ) ) player.sendDebug( "Loaded '{0}' successfully", params ); else player.sendDebug( "Failed to load '{0}'", params ); @@ -777,7 +780,7 @@ void Sapphire::World::Manager::DebugCommandMgr::script( char* data, Entity::Play player.sendDebug( "Command failed: requires name of script to reload" ); else { - pScriptMgr->getNativeScriptHandler().queueScriptReload( params ); + scriptMgr.getNativeScriptHandler().queueScriptReload( params ); player.sendDebug( "Queued script reload for script: {0}", params ); } } @@ -790,7 +793,7 @@ void Sapphire::World::Manager::DebugCommandMgr::script( char* data, Entity::Play void Sapphire::World::Manager::DebugCommandMgr::instance( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) { - auto pTeriMgr = framework()->get< TerritoryMgr >(); + auto& terriMgr = Common::Service< TerritoryMgr >::ref(); std::string cmd( data ), params, subCommand; auto cmdPos = cmd.find_first_of( ' ' ); @@ -814,7 +817,7 @@ void Sapphire::World::Manager::DebugCommandMgr::instance( char* data, Entity::Pl uint32_t contentFinderConditionId; sscanf( params.c_str(), "%d", &contentFinderConditionId ); - auto instance = pTeriMgr->createInstanceContent( contentFinderConditionId ); + auto instance = terriMgr.createInstanceContent( contentFinderConditionId ); if( instance ) player.sendDebug( "Created instance with id#{0} -> {1}", instance->getGuId(), instance->getName() ); else @@ -825,7 +828,7 @@ void Sapphire::World::Manager::DebugCommandMgr::instance( char* data, Entity::Pl uint32_t instanceId; sscanf( params.c_str(), "%d", &instanceId ); - auto terri = pTeriMgr->getTerritoryByGuId( instanceId ); + auto terri = terriMgr.getTerritoryByGuId( instanceId ); if( terri ) { auto pInstanceContent = terri->getAsInstanceContent(); @@ -848,7 +851,7 @@ void Sapphire::World::Manager::DebugCommandMgr::instance( char* data, Entity::Pl uint32_t instanceId; sscanf( params.c_str(), "%d", &instanceId ); - auto instance = pTeriMgr->getTerritoryByGuId( instanceId ); + auto instance = terriMgr.getTerritoryByGuId( instanceId ); if( !instance ) { player.sendDebug( "Unknown instance with id#{0} ", instanceId ); @@ -870,7 +873,7 @@ void Sapphire::World::Manager::DebugCommandMgr::instance( char* data, Entity::Pl uint32_t zoneId; sscanf( params.c_str(), "%d", &zoneId ); - auto instance = pTeriMgr->createTerritoryInstance( zoneId ); + auto instance = terriMgr.createTerritoryInstance( zoneId ); if( instance ) player.sendDebug( "Created instance with id: " + std::to_string( instance->getGuId() ) + " -> " + instance->getName() ); @@ -882,7 +885,7 @@ void Sapphire::World::Manager::DebugCommandMgr::instance( char* data, Entity::Pl uint32_t terriId; sscanf( params.c_str(), "%d", &terriId ); - if( pTeriMgr->removeTerritoryInstance( terriId ) ) + if( terriMgr.removeTerritoryInstance( terriId ) ) player.sendDebug( "Removed instance with id#{0}", terriId ); else player.sendDebug( "Failed to remove instance with id#{0}", terriId ); @@ -1010,7 +1013,7 @@ void Sapphire::World::Manager::DebugCommandMgr::instance( char* data, Entity::Pl void Sapphire::World::Manager::DebugCommandMgr::questBattle( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) { - auto pTeriMgr = framework()->get< TerritoryMgr >(); + auto& terriMgr = Common::Service< TerritoryMgr >::ref(); std::string cmd( data ), params, subCommand; auto cmdPos = cmd.find_first_of( ' ' ); @@ -1034,7 +1037,7 @@ void Sapphire::World::Manager::DebugCommandMgr::questBattle( char* data, Entity: uint32_t contentFinderConditionId; sscanf( params.c_str(), "%d", &contentFinderConditionId ); - auto instance = pTeriMgr->createQuestBattle( contentFinderConditionId ); + auto instance = terriMgr.createQuestBattle( contentFinderConditionId ); if( instance ) player.sendDebug( "Created instance with id#{0} -> {1}", instance->getGuId(), instance->getName() ); else @@ -1065,7 +1068,7 @@ void Sapphire::World::Manager::DebugCommandMgr::questBattle( char* data, Entity: uint32_t zoneId; sscanf( params.c_str(), "%d", &zoneId ); - auto instance = pTeriMgr->createTerritoryInstance( zoneId ); + auto instance = terriMgr.createTerritoryInstance( zoneId ); if( instance ) player.sendDebug( "Created instance with id: " + std::to_string( instance->getGuId() ) + " -> " + instance->getName() ); @@ -1077,7 +1080,7 @@ void Sapphire::World::Manager::DebugCommandMgr::questBattle( char* data, Entity: uint32_t terriId; sscanf( params.c_str(), "%d", &terriId ); - if( pTeriMgr->removeTerritoryInstance( terriId ) ) + if( terriMgr.removeTerritoryInstance( terriId ) ) player.sendDebug( "Removed instance with id#{0}", terriId ); else player.sendDebug( "Failed to remove instance with id#{0}", terriId ); @@ -1205,7 +1208,7 @@ void Sapphire::World::Manager::DebugCommandMgr::questBattle( char* data, Entity: void Sapphire::World::Manager::DebugCommandMgr::housing( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) { - auto pTeriMgr = framework()->get< TerritoryMgr >(); + auto& terriMgr = Common::Service< TerritoryMgr >::ref(); std::string cmd( data ), params, subCommand; auto cmdPos = cmd.find_first_of( ' ' ); @@ -1232,7 +1235,7 @@ void Sapphire::World::Manager::DebugCommandMgr::housing( char* data, Entity::Pla // if ( permissionSet < 5 ) // { // auto pZone = player.getCurrentTerritory(); -// if( pTeriMgr->isHousingTerritory( pZone->getTerritoryTypeId() ) ) +// if( terriMgr.isHousingTerritory( pZone->getTerritoryTypeId() ) ) // { // auto pHousing = std::dynamic_pointer_cast< HousingZone >( pZone ); // if( pHousing ) diff --git a/src/world/Manager/DebugCommandMgr.h b/src/world/Manager/DebugCommandMgr.h index 160d7380..25921312 100644 --- a/src/world/Manager/DebugCommandMgr.h +++ b/src/world/Manager/DebugCommandMgr.h @@ -6,20 +6,19 @@ #include "DebugCommand/DebugCommand.h" #include "ForwardsZone.h" -#include "BaseManager.h" namespace Sapphire::World::Manager { // handler for in game commands - class DebugCommandMgr : public Manager::BaseManager + class DebugCommandMgr { private: // container mapping command string to command object std::map< std::string, std::shared_ptr< DebugCommand > > m_commandMap; public: - DebugCommandMgr( FrameworkPtr pFw ); + DebugCommandMgr(); ~DebugCommandMgr(); diff --git a/src/world/Manager/EventMgr.cpp b/src/world/Manager/EventMgr.cpp index 6794325b..007a2003 100644 --- a/src/world/Manager/EventMgr.cpp +++ b/src/world/Manager/EventMgr.cpp @@ -1,22 +1,16 @@ #include #include #include +#include -#include "Framework.h" #include "EventMgr.h" #include "Event/EventHandler.h" using namespace Sapphire::Common; -Sapphire::World::Manager::EventMgr::EventMgr( Sapphire::FrameworkPtr pFw ) : - BaseManager( pFw ) -{ - -} - std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId ) { - auto pExdData = framework()->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); uint16_t eventType = eventId >> 16; auto unknown = std::string{ "unknown" }; @@ -25,7 +19,7 @@ std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId ) { case Event::EventHandler::EventHandlerType::Quest: { - auto questInfo = pExdData->get< Sapphire::Data::Quest >( eventId ); + auto questInfo = exdData.get< Sapphire::Data::Quest >( eventId ); if( !questInfo ) return unknown + "Quest"; @@ -36,7 +30,7 @@ std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId ) } case Event::EventHandler::EventHandlerType::CustomTalk: { - auto customTalkInfo = pExdData->get< Sapphire::Data::CustomTalk >( eventId ); + auto customTalkInfo = exdData.get< Sapphire::Data::CustomTalk >( eventId ); if( !customTalkInfo ) return unknown + "CustomTalk"; @@ -47,14 +41,14 @@ std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId ) } case Event::EventHandler::EventHandlerType::Opening: { - auto openingInfo = pExdData->get< Sapphire::Data::Opening >( eventId ); + auto openingInfo = exdData.get< Sapphire::Data::Opening >( eventId ); if( openingInfo ) return openingInfo->name; return unknown + "Opening"; } case Event::EventHandler::EventHandlerType::Aetheryte: { - auto aetherInfo = pExdData->get< Sapphire::Data::Aetheryte >( eventId & 0xFFFF ); + auto aetherInfo = exdData.get< Sapphire::Data::Aetheryte >( eventId & 0xFFFF ); if( aetherInfo->isAetheryte ) return "Aetheryte"; return "Aethernet"; @@ -67,10 +61,10 @@ std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId ) case Event::EventHandler::EventHandlerType::QuestBattleDirector: { - auto qbInfo = pExdData->get< Sapphire::Data::QuestBattle >( eventId & 0xFFFF ); + auto qbInfo = exdData.get< Sapphire::Data::QuestBattle >( eventId & 0xFFFF ); if( !qbInfo ) return "unknown"; - auto questInfo = pExdData->get< Sapphire::Data::Quest >( qbInfo->quest ); + auto questInfo = exdData.get< Sapphire::Data::Quest >( qbInfo->quest ); if( !questInfo ) return "unknown"; @@ -84,7 +78,7 @@ std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId ) case Event::EventHandler::EventHandlerType::Warp: { - auto warpInfo = pExdData->get< Sapphire::Data::Warp >( eventId ); + auto warpInfo = exdData.get< Sapphire::Data::Warp >( eventId ); if( warpInfo ) return "WarpTaxi"; return unknown + "ChocoboWarp"; //who know @@ -92,7 +86,7 @@ std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId ) case Event::EventHandler::EventHandlerType::Shop: { - auto shopInfo = pExdData->get< Sapphire::Data::GilShop >( eventId ); + auto shopInfo = exdData.get< Sapphire::Data::GilShop >( eventId ); return "GilShop" + std::to_string( eventId ); /*if( shopInfo ) @@ -112,8 +106,8 @@ std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId ) uint32_t Sapphire::World::Manager::EventMgr::mapEventActorToRealActor( uint32_t eventActorId ) { - auto pExdData = framework()->get< Data::ExdDataGenerated >(); - auto levelInfo = pExdData->get< Sapphire::Data::Level >( eventActorId ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto levelInfo = exdData.get< Sapphire::Data::Level >( eventActorId ); if( levelInfo ) return levelInfo->object; diff --git a/src/world/Manager/EventMgr.h b/src/world/Manager/EventMgr.h index 1a69ac02..a8bb036d 100644 --- a/src/world/Manager/EventMgr.h +++ b/src/world/Manager/EventMgr.h @@ -3,15 +3,14 @@ #include #include -#include "Manager/BaseManager.h" namespace Sapphire::World::Manager { - class EventMgr : public BaseManager + class EventMgr { public: - EventMgr( FrameworkPtr pFw ); + EventMgr() = default; std::string getEventName( uint32_t eventId ); diff --git a/src/world/Manager/HousingMgr.cpp b/src/world/Manager/HousingMgr.cpp index 43d697ee..9cd612bb 100644 --- a/src/world/Manager/HousingMgr.cpp +++ b/src/world/Manager/HousingMgr.cpp @@ -10,6 +10,7 @@ #include #include +#include #include "Actor/Player.h" #include "Actor/EventObject.h" @@ -21,7 +22,6 @@ #include "Territory/Housing/HousingInteriorTerritory.h" #include "HousingMgr.h" #include "Territory/Land.h" -#include "Framework.h" #include "ServerMgr.h" #include "Territory/House.h" #include "InventoryMgr.h" @@ -34,8 +34,7 @@ using namespace Sapphire::Network; using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; -Sapphire::World::Manager::HousingMgr::HousingMgr( FrameworkPtr pFw ) : - BaseManager( pFw ) +Sapphire::World::Manager::HousingMgr::HousingMgr() { m_containerMap[ 0 ] = std::make_pair( InventoryType::HousingInteriorPlacedItems1, InventoryType::HousingInteriorStoreroom1 ); m_containerMap[ 1 ] = std::make_pair( InventoryType::HousingInteriorPlacedItems2, InventoryType::HousingInteriorStoreroom2 ); @@ -113,10 +112,10 @@ bool Sapphire::World::Manager::HousingMgr::loadEstateInventories() { Logger::info( "HousingMgr: Loading inventories for estates" ); - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); - auto stmt = pDb->getPreparedStatement( Db::LAND_INV_SEL_ALL ); - auto res = pDb->query( stmt ); + auto stmt = db.getPreparedStatement( Db::LAND_INV_SEL_ALL ); + auto res = db.query( stmt ); uint32_t itemCount = 0; while( res->next() ) @@ -130,7 +129,7 @@ bool Sapphire::World::Manager::HousingMgr::loadEstateInventories() auto stain = res->getUInt8( "stain" ); auto characterId = res->getUInt64( "CharacterId" ); - auto item = Inventory::make_HousingItem( itemId, catalogId, framework() ); + auto item = Inventory::make_HousingItem( itemId, catalogId ); item->setStain( stain ); item->setStackSize( 1 ); // todo: need to set the owner character id on the item @@ -171,10 +170,10 @@ bool Sapphire::World::Manager::HousingMgr::loadEstateInventories() void Sapphire::World::Manager::HousingMgr::initLandCache() { - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); - auto stmt = pDb->getPreparedStatement( Db::LAND_SEL_ALL ); - auto res = pDb->query( stmt ); + auto stmt = db.getPreparedStatement( Db::LAND_SEL_ALL ); + auto res = db.query( stmt ); while( res->next() ) { @@ -242,7 +241,7 @@ void Sapphire::World::Manager::HousingMgr::initLandCache() auto makeContainer = [ &containers, this ]( Common::InventoryType type, uint16_t size ) { - containers[ type ] = make_ItemContainer( type, size, "houseiteminventory", false, framework(), false ); + containers[ type ] = make_ItemContainer( type, size, "houseiteminventory", false, false ); }; uint16_t count = 0; @@ -272,8 +271,8 @@ void Sapphire::World::Manager::HousingMgr::initLandCache() uint64_t Sapphire::World::Manager::HousingMgr::getNextHouseId() { - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto pQR = pDb->query( "SELECT MAX( HouseId ) FROM house" ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto pQR = db.query( "SELECT MAX( HouseId ) FROM house" ); if( !pQR->next() ) return 0; @@ -288,14 +287,14 @@ uint32_t Sapphire::World::Manager::HousingMgr::toLandSetId( uint16_t territoryTy Sapphire::Data::HousingZonePtr Sapphire::World::Manager::HousingMgr::getHousingZoneByLandSetId( uint32_t id ) { - auto pTeriMgr = framework()->get< TerritoryMgr >(); - return std::dynamic_pointer_cast< HousingZone >( pTeriMgr->getZoneByLandSetId( id ) ); + auto& terriMgr = Common::Service< TerritoryMgr >::ref(); + return std::dynamic_pointer_cast< HousingZone >( terriMgr.getZoneByLandSetId( id ) ); } Sapphire::LandPtr Sapphire::World::Manager::HousingMgr::getLandByOwnerId( uint32_t id ) { - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto res = pDb->query( "SELECT LandSetId, LandId FROM land WHERE OwnerId = " + std::to_string( id ) ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto res = db.query( "SELECT LandSetId, LandId FROM land WHERE OwnerId = " + std::to_string( id ) ); if( !res->next() ) return nullptr; @@ -310,6 +309,8 @@ Sapphire::LandPtr Sapphire::World::Manager::HousingMgr::getLandByOwnerId( uint32 void Sapphire::World::Manager::HousingMgr::sendLandSignOwned( Entity::Player& player, const Common::LandIdent ident ) { + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + player.setActiveLand( static_cast< uint8_t >( ident.landId ), static_cast< uint8_t >( ident.wardNum ) ); auto landSetId = toLandSetId( static_cast< uint16_t >( ident.territoryTypeId ), static_cast< uint8_t >( ident.wardNum ) ); @@ -336,7 +337,8 @@ void Sapphire::World::Manager::HousingMgr::sendLandSignOwned( Entity::Player& pl } uint32_t playerId = static_cast< uint32_t >( land->getOwnerId() ); - std::string playerName = framework()->get< World::ServerMgr >()->getPlayerNameFromDb( playerId ); + + std::string playerName = serverMgr.getPlayerNameFromDb( playerId ); memcpy( &landInfoSignPacket->data().ownerName, playerName.c_str(), playerName.size() ); @@ -463,6 +465,8 @@ bool Sapphire::World::Manager::HousingMgr::relinquishLand( Entity::Player& playe void Sapphire::World::Manager::HousingMgr::sendWardLandInfo( Entity::Player& player, uint8_t wardId, uint16_t territoryTypeId ) { + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + auto landSetId = toLandSetId( territoryTypeId, wardId ); auto hZone = getHousingZoneByLandSetId( landSetId ); @@ -509,7 +513,7 @@ void Sapphire::World::Manager::HousingMgr::sendWardLandInfo( Entity::Player& pla entry.infoFlags |= Common::WardlandFlags::IsEstateOwned; auto owner = land->getOwnerId(); - auto playerName = framework()->get< World::ServerMgr >()->getPlayerNameFromDb( static_cast< uint32_t >( owner ) ); + auto playerName = serverMgr.getPlayerNameFromDb( static_cast< uint32_t >( owner ) ); memcpy( &entry.estateOwnerName, playerName.c_str(), playerName.size() ); break; @@ -556,16 +560,16 @@ bool Sapphire::World::Manager::HousingMgr::initHouseModels( Entity::Player& play auto itemMax = land->getInventoryItemMax(); // type, maxSize, tableName, isMultiStorage - auto intContainer = make_ItemContainer( InventoryType::HousingInteriorAppearance, itemMax.second, "houseiteminventory", true, framework() ); - auto extContainer = make_ItemContainer( InventoryType::HousingExteriorAppearance, itemMax.first, "houseiteminventory", true, framework() ); + auto intContainer = make_ItemContainer( InventoryType::HousingInteriorAppearance, itemMax.second, "houseiteminventory", true ); + auto extContainer = make_ItemContainer( InventoryType::HousingExteriorAppearance, itemMax.first, "houseiteminventory", true ); // add containers to inv collection auto& houseInventory = getEstateInventory( house->getLandIdent() ); houseInventory[ InventoryType::HousingInteriorAppearance ] = intContainer; houseInventory[ InventoryType::HousingExteriorAppearance ] = extContainer; - auto exdData = framework()->get< Sapphire::Data::ExdDataGenerated >(); - auto preset = exdData->get< Sapphire::Data::HousingPreset >( getItemAdditionalData( presetCatalogId ) ); + auto& exdData = Common::Service< Sapphire::Data::ExdDataGenerated >::ref(); + auto preset = exdData.get< Sapphire::Data::HousingPreset >( getItemAdditionalData( presetCatalogId ) ); if( !preset ) return false; @@ -617,7 +621,7 @@ bool Sapphire::World::Manager::HousingMgr::initHouseModels( Entity::Player& play } }; - auto invMgr = framework()->get< InventoryMgr >(); + auto& invMgr = Service< InventoryMgr >::ref(); // create and link items for( auto& destContainer : invMap ) @@ -630,12 +634,12 @@ bool Sapphire::World::Manager::HousingMgr::initHouseModels( Entity::Player& play if( item.second == 0 ) continue; - auto pItem = invMgr->createItem( player, static_cast< uint32_t >( item.second ) ); + auto pItem = invMgr.createItem( player, static_cast< uint32_t >( item.second ) ); container->setItem( static_cast< uint8_t >( item.first ), pItem ); } - invMgr->saveHousingContainer( land->getLandIdent(), container ); + invMgr.saveHousingContainer( land->getLandIdent(), container ); } // lift off @@ -646,16 +650,16 @@ bool Sapphire::World::Manager::HousingMgr::initHouseModels( Entity::Player& play void Sapphire::World::Manager::HousingMgr::createHouse( Sapphire::HousePtr house ) const { - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); - auto stmt = pDb->getPreparedStatement( Db::HOUSING_HOUSE_INS ); + auto stmt = db.getPreparedStatement( Db::HOUSING_HOUSE_INS ); // LandSetId, HouseId, HouseName stmt->setUInt( 1, house->getLandSetId() ); stmt->setUInt( 2, house->getId() ); stmt->setString( 3, house->getHouseName() ); - pDb->execute( stmt ); + db.execute( stmt ); } void Sapphire::World::Manager::HousingMgr::buildPresetEstate( Entity::Player& player, uint8_t plotNum, uint32_t presetCatalogId ) @@ -675,7 +679,7 @@ void Sapphire::World::Manager::HousingMgr::buildPresetEstate( Entity::Player& pl // create house auto ident = pLand->getLandIdent(); auto house = make_House( getNextHouseId(), pLand->getLandSetId(), ident, - "Estate #" + std::to_string( ident.landId + 1 ), "", framework() ); + "Estate #" + std::to_string( ident.landId + 1 ), "" ); pLand->setHouse( house ); @@ -865,8 +869,8 @@ void Sapphire::World::Manager::HousingMgr::sendEstateInventory( Entity::Player& if( it == containers.end() ) return; - auto invMgr = framework()->get< Manager::InventoryMgr >(); - invMgr->sendInventoryContainer( player, it->second ); + auto& invMgr = Common::Service< Manager::InventoryMgr >::ref(); + invMgr.sendInventoryContainer( player, it->second ); } const Sapphire::World::Manager::HousingMgr::LandSetLandCacheMap& @@ -940,8 +944,8 @@ void Sapphire::World::Manager::HousingMgr::updateHouseModels( Sapphire::HousePtr uint32_t Sapphire::World::Manager::HousingMgr::getItemAdditionalData( uint32_t catalogId ) { - auto pExdData = framework()->get< Data::ExdDataGenerated >(); - auto info = pExdData->get< Sapphire::Data::Item >( catalogId ); + auto& pExdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto info = pExdData.get< Sapphire::Data::Item >( catalogId ); return info->additionalData; } @@ -1064,7 +1068,7 @@ void Sapphire::World::Manager::HousingMgr::reqPlaceItemInStore( Sapphire::Entity if( !hasPermission( player, *land, 0 ) ) return; - auto invMgr = framework()->get< InventoryMgr >(); + auto& invMgr = Common::Service< InventoryMgr >::ref(); auto ident = land->getLandIdent(); auto& containers = getEstateInventory( ident ); @@ -1081,8 +1085,8 @@ void Sapphire::World::Manager::HousingMgr::reqPlaceItemInStore( Sapphire::Entity return; container->setItem( static_cast< uint8_t >( freeSlot ), item ); - invMgr->sendInventoryContainer( player, container ); - invMgr->saveHousingContainer( ident, container ); + invMgr.sendInventoryContainer( player, container ); + invMgr.saveHousingContainer( ident, container ); } else { @@ -1104,8 +1108,8 @@ void Sapphire::World::Manager::HousingMgr::reqPlaceItemInStore( Sapphire::Entity return; container->setItem( static_cast< uint8_t >( freeSlot ), item ); - invMgr->sendInventoryContainer( player, container ); - invMgr->saveHousingContainer( ident, container ); + invMgr.sendInventoryContainer( player, container ); + invMgr.saveHousingContainer( ident, container ); } } } @@ -1114,7 +1118,7 @@ bool Sapphire::World::Manager::HousingMgr::placeExternalItem( Entity::Player& pl Inventory::HousingItemPtr item, Common::LandIdent ident ) { - auto invMgr = framework()->get< InventoryMgr >(); + auto& invMgr = Service< InventoryMgr >::ref(); auto& container = getEstateInventory( ident )[ InventoryType::HousingExteriorPlacedItems ]; @@ -1129,11 +1133,11 @@ bool Sapphire::World::Manager::HousingMgr::placeExternalItem( Entity::Player& pl // we need to save the item again as removing it from the container on the player will remove it from charaglobalitem // todo: this needs to be handled a bit better as it might be possible to overwrite another item that is created in the meantime - invMgr->saveItem( player, item ); + invMgr.saveItem( player, item ); - invMgr->sendInventoryContainer( player, container ); - invMgr->saveHousingContainer( ident, container ); - invMgr->updateHousingItemPosition( item ); + invMgr.sendInventoryContainer( player, container ); + invMgr.saveHousingContainer( ident, container ); + invMgr.updateHousingItemPosition( item ); // add to zone and spawn auto zone = std::dynamic_pointer_cast< HousingZone >( player.getCurrentTerritory() ); @@ -1147,7 +1151,7 @@ bool Sapphire::World::Manager::HousingMgr::placeExternalItem( Entity::Player& pl bool Sapphire::World::Manager::HousingMgr::placeInteriorItem( Entity::Player& player, Inventory::HousingItemPtr item ) { - auto invMgr = framework()->get< InventoryMgr >(); + auto& invMgr = Service< InventoryMgr >::ref(); auto zone = std::dynamic_pointer_cast< Territory::Housing::HousingInteriorTerritory >( player.getCurrentTerritory() ); assert( zone ); @@ -1176,9 +1180,9 @@ bool Sapphire::World::Manager::HousingMgr::placeInteriorItem( Entity::Player& pl container->setItem( static_cast< uint8_t >( freeSlot ), item ); // resend container - invMgr->sendInventoryContainer( player, container ); - invMgr->saveHousingContainer( ident, container ); - invMgr->updateHousingItemPosition( item ); + invMgr.sendInventoryContainer( player, container ); + invMgr.saveHousingContainer( ident, container ); + invMgr.updateHousingItemPosition( item ); auto zone = std::dynamic_pointer_cast< Territory::Housing::HousingInteriorTerritory >( player.getCurrentTerritory() ); assert( zone ); @@ -1218,7 +1222,7 @@ void Sapphire::World::Manager::HousingMgr::sendInternalEstateInventoryBatch( Sap else containerIds = m_internalPlacedItemContainers; - auto invMgr = framework()->get< Manager::InventoryMgr >(); + auto& invMgr = Service< InventoryMgr >::ref(); auto& containers = getEstateInventory( zone->getLandIdent() ); for( auto containerId : containerIds ) @@ -1227,7 +1231,7 @@ void Sapphire::World::Manager::HousingMgr::sendInternalEstateInventoryBatch( Sap if( container == containers.end() ) break; - invMgr->sendInventoryContainer( player, container->second ); + invMgr.sendInventoryContainer( player, container->second ); } } @@ -1290,8 +1294,8 @@ bool Sapphire::World::Manager::HousingMgr::moveInternalItem( Entity::Player& pla item->setRot( rot ); // save - auto invMgr = framework()->get< InventoryMgr >(); - invMgr->updateHousingItemPosition( item ); + auto& invMgr = Service< InventoryMgr >::ref(); + invMgr.updateHousingItemPosition( item ); terri.updateHousingObjectPosition( player, slot, item->getPos(), static_cast< uint16_t >( item->getRot() ) ); @@ -1328,8 +1332,8 @@ bool Sapphire::World::Manager::HousingMgr::moveExternalItem( Entity::Player& pla item->setPos( pos ); item->setRot( rot ); - auto invMgr = framework()->get< InventoryMgr >(); - invMgr->updateHousingItemPosition( item ); + auto& invMgr = Service< InventoryMgr >::ref(); + invMgr.updateHousingItemPosition( item ); terri.updateYardObjectPos( player, slot, static_cast< uint16_t >( ident.landId ), *item ); @@ -1417,13 +1421,13 @@ bool Sapphire::World::Manager::HousingMgr::removeInternalItem( Entity::Player& p if( !player.getFreeInventoryContainerSlot( containerPair ) ) return false; - auto invMgr = framework()->get< InventoryMgr >(); + auto& invMgr = Service< InventoryMgr >::ref(); // remove it from housing inventory container->removeItem( static_cast< uint8_t >( slotId ) ); - invMgr->sendInventoryContainer( player, container ); - invMgr->removeHousingItemPosition( *item ); - invMgr->removeItemFromHousingContainer( terri.getLandIdent(), containerId, slotId ); + invMgr.sendInventoryContainer( player, container ); + invMgr.removeHousingItemPosition( *item ); + invMgr.removeItemFromHousingContainer( terri.getLandIdent(), containerId, slotId ); // add to player inv player.insertInventoryItem( containerPair.first, containerPair.second, item ); @@ -1439,16 +1443,16 @@ bool Sapphire::World::Manager::HousingMgr::removeInternalItem( Entity::Player& p if( !freeContainer ) return false; - auto invMgr = framework()->get< InventoryMgr >(); + auto& invMgr = Service< InventoryMgr >::ref(); container->removeItem( static_cast< uint8_t >( slotId ) ); - invMgr->sendInventoryContainer( player, container ); - invMgr->removeHousingItemPosition( *item ); - invMgr->removeItemFromHousingContainer( terri.getLandIdent(), containerId, slotId ); + invMgr.sendInventoryContainer( player, container ); + invMgr.removeHousingItemPosition( *item ); + invMgr.removeItemFromHousingContainer( terri.getLandIdent(), containerId, slotId ); freeContainer->setItem( static_cast< uint8_t >( slotId ), item ); - invMgr->sendInventoryContainer( player, freeContainer ); - invMgr->saveHousingContainer( terri.getLandIdent(), freeContainer ); + invMgr.sendInventoryContainer( player, freeContainer ); + invMgr.saveHousingContainer( terri.getLandIdent(), freeContainer ); } // despawn @@ -1479,7 +1483,7 @@ bool Sapphire::World::Manager::HousingMgr::removeExternalItem( Entity::Player& p bool shouldDespawnItem = containerType != InventoryType::HousingExteriorStoreroom; - auto invMgr = framework()->get< InventoryMgr >(); + auto& invMgr = Service< InventoryMgr >::ref(); if( sendToStoreroom ) { @@ -1490,13 +1494,13 @@ bool Sapphire::World::Manager::HousingMgr::removeExternalItem( Entity::Player& p return false; sourceContainer->removeItem( slotId ); - invMgr->sendInventoryContainer( player, sourceContainer ); - invMgr->removeItemFromHousingContainer( land.getLandIdent(), sourceContainer->getId(), slotId ); - invMgr->removeHousingItemPosition( *item ); + invMgr.sendInventoryContainer( player, sourceContainer ); + invMgr.removeItemFromHousingContainer( land.getLandIdent(), sourceContainer->getId(), slotId ); + invMgr.removeHousingItemPosition( *item ); storeroomContainer->setItem( static_cast< uint8_t >( freeSlot ), item ); - invMgr->sendInventoryContainer( player, storeroomContainer ); - invMgr->saveHousingContainer( land.getLandIdent(), storeroomContainer ); + invMgr.sendInventoryContainer( player, storeroomContainer ); + invMgr.saveHousingContainer( land.getLandIdent(), storeroomContainer ); } else { @@ -1506,9 +1510,9 @@ bool Sapphire::World::Manager::HousingMgr::removeExternalItem( Entity::Player& p // remove from housing inv sourceContainer->removeItem( slotId ); - invMgr->sendInventoryContainer( player, sourceContainer ); - invMgr->removeHousingItemPosition( *item ); - invMgr->removeItemFromHousingContainer( land.getLandIdent(), sourceContainer->getId(), slotId ); + invMgr.sendInventoryContainer( player, sourceContainer ); + invMgr.removeHousingItemPosition( *item ); + invMgr.removeItemFromHousingContainer( land.getLandIdent(), sourceContainer->getId(), slotId ); // add to player inv player.insertInventoryItem( containerPair.first, containerPair.second, item ); @@ -1564,9 +1568,9 @@ void Sapphire::World::Manager::HousingMgr::reqEstateExteriorRemodel( Sapphire::E if( it == inv.end() ) return; - auto invMgr = framework()->get< InventoryMgr >(); + auto& invMgr = Service< InventoryMgr >::ref(); - invMgr->sendInventoryContainer( player, it->second ); + invMgr.sendInventoryContainer( player, it->second ); auto pkt = Server::makeActorControlSelf( player.getId(), Network::ActorControl::ShowEstateExternalAppearanceUI, plot ); player.queuePacket( pkt ); @@ -1594,9 +1598,9 @@ void Sapphire::World::Manager::HousingMgr::reqEstateInteriorRemodel( Sapphire::E if( it == inv.end() ) return; - auto invMgr = framework()->get< InventoryMgr >(); + auto& invMgr = Service< InventoryMgr >::ref(); - invMgr->sendInventoryContainer( player, it->second ); + invMgr.sendInventoryContainer( player, it->second ); auto pkt = Server::makeActorControlSelf( player.getId(), Network::ActorControl::ShowEstateInternalAppearanceUI ); player.queuePacket( pkt ); @@ -1621,5 +1625,5 @@ Sapphire::Inventory::HousingItemPtr Sapphire::World::Manager::HousingMgr::getHou if( !tmpItem ) return nullptr; - return Inventory::make_HousingItem( tmpItem->getUId(), tmpItem->getId(), framework() ); + return Inventory::make_HousingItem( tmpItem->getUId(), tmpItem->getId() ); } diff --git a/src/world/Manager/HousingMgr.h b/src/world/Manager/HousingMgr.h index cd81255e..b810354f 100644 --- a/src/world/Manager/HousingMgr.h +++ b/src/world/Manager/HousingMgr.h @@ -2,7 +2,6 @@ #define SAPPHIRE_HOUSINGMGR_H #include "Forwards.h" -#include "BaseManager.h" #include "Territory/HousingZone.h" #include #include @@ -15,7 +14,7 @@ namespace Sapphire::Data namespace Sapphire::World::Manager { - class HousingMgr : public BaseManager + class HousingMgr { public: @@ -69,7 +68,7 @@ namespace Sapphire::World::Manager */ using LandIdentToInventoryContainerMap = std::unordered_map< uint64_t, ContainerIdToContainerMap >; - HousingMgr( FrameworkPtr pFw ); + HousingMgr(); virtual ~HousingMgr(); bool init(); diff --git a/src/world/Manager/InventoryMgr.cpp b/src/world/Manager/InventoryMgr.cpp index 6d8217c6..b4c3759e 100644 --- a/src/world/Manager/InventoryMgr.cpp +++ b/src/world/Manager/InventoryMgr.cpp @@ -10,15 +10,10 @@ #include #include - -#include "Framework.h" +#include using namespace Sapphire::Network::Packets; -Sapphire::World::Manager::InventoryMgr::InventoryMgr( Sapphire::FrameworkPtr pFw ) : - BaseManager( pFw ) -{ } - void Sapphire::World::Manager::InventoryMgr::sendInventoryContainer( Sapphire::Entity::Player& player, Sapphire::ItemContainerPtr container ) { @@ -71,15 +66,14 @@ void Sapphire::World::Manager::InventoryMgr::sendInventoryContainer( Sapphire::E Sapphire::ItemPtr Sapphire::World::Manager::InventoryMgr::createItem( Entity::Player& player, uint32_t catalogId, uint32_t quantity ) { - auto pExdData = framework()->get< Data::ExdDataGenerated >(); - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto itemMgr = framework()->get< Manager::ItemMgr >(); - auto itemInfo = pExdData->get< Sapphire::Data::Item >( catalogId ); + auto& pExdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto& itemMgr = Common::Service< Manager::ItemMgr >::ref(); + auto itemInfo = pExdData.get< Sapphire::Data::Item >( catalogId ); if( !itemInfo ) return nullptr; - auto item = make_Item( itemMgr->getNextUId(), catalogId, framework() ); + auto item = make_Item( itemMgr.getNextUId(), catalogId ); item->setStackSize( std::max< uint32_t >( 1, quantity ) ); @@ -103,9 +97,9 @@ void Sapphire::World::Manager::InventoryMgr::removeItemFromHousingContainer( Sap uint16_t containerId, uint16_t slotId ) { - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); - auto stmt = pDb->getPreparedStatement( Db::LAND_INV_DEL ); + auto stmt = db.getPreparedStatement( Db::LAND_INV_DEL ); auto u64ident = *reinterpret_cast< uint64_t* >( &ident ); @@ -113,16 +107,16 @@ void Sapphire::World::Manager::InventoryMgr::removeItemFromHousingContainer( Sap stmt->setUInt( 2, containerId ); stmt->setUInt( 3, slotId ); - pDb->directExecute( stmt ); + db.directExecute( stmt ); } void Sapphire::World::Manager::InventoryMgr::saveHousingContainerItem( uint64_t ident, uint16_t containerId, uint16_t slotId, uint64_t itemId ) { - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); - auto stmt = pDb->getPreparedStatement( Db::LAND_INV_UP ); + auto stmt = db.getPreparedStatement( Db::LAND_INV_UP ); // LandIdent, ContainerId, SlotId, ItemId, ItemId stmt->setUInt64( 1, ident ); @@ -134,14 +128,14 @@ void Sapphire::World::Manager::InventoryMgr::saveHousingContainerItem( uint64_t // the second time is for the ON DUPLICATE KEY UPDATE condition stmt->setUInt64( 5, itemId ); - pDb->directExecute( stmt ); + db.directExecute( stmt ); } void Sapphire::World::Manager::InventoryMgr::updateHousingItemPosition( Sapphire::Inventory::HousingItemPtr item ) { - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); - auto stmt = pDb->getPreparedStatement( Db::LAND_INV_UP_ITEMPOS ); + auto stmt = db.getPreparedStatement( Db::LAND_INV_UP_ITEMPOS ); // ItemId, PosX, PosY, PosZ, Rotation, PosX, PosY, PosZ, Rotation auto pos = item->getPos(); @@ -159,29 +153,29 @@ void Sapphire::World::Manager::InventoryMgr::updateHousingItemPosition( Sapphire stmt->setUInt( 8, pos.z ); stmt->setInt( 9, rot ); - pDb->execute( stmt ); + db.execute( stmt ); } void Sapphire::World::Manager::InventoryMgr::removeHousingItemPosition( Sapphire::Inventory::HousingItem& item ) { - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); - auto stmt = pDb->getPreparedStatement( Db::LAND_INV_DEL_ITEMPOS ); + auto stmt = db.getPreparedStatement( Db::LAND_INV_DEL_ITEMPOS ); stmt->setUInt64( 1, item.getUId() ); - pDb->directExecute( stmt ); + db.directExecute( stmt ); } void Sapphire::World::Manager::InventoryMgr::saveItem( Sapphire::Entity::Player& player, Sapphire::ItemPtr item ) { - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto stmt = pDb->getPreparedStatement( Db::CHARA_ITEMGLOBAL_INS ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmt = db.getPreparedStatement( Db::CHARA_ITEMGLOBAL_INS ); stmt->setUInt( 1, player.getId() ); stmt->setUInt64( 2, item->getUId() ); stmt->setUInt( 3, item->getId() ); stmt->setUInt( 4, item->getStackSize() ); - pDb->directExecute( stmt ); + db.directExecute( stmt ); } diff --git a/src/world/Manager/InventoryMgr.h b/src/world/Manager/InventoryMgr.h index 4bb154ea..5803450a 100644 --- a/src/world/Manager/InventoryMgr.h +++ b/src/world/Manager/InventoryMgr.h @@ -2,15 +2,14 @@ #define SAPPHIRE_INVENTORYMGR_H #include "ForwardsZone.h" -#include "BaseManager.h" namespace Sapphire::World::Manager { - class InventoryMgr : public Sapphire::World::Manager::BaseManager + class InventoryMgr { public: - explicit InventoryMgr( Sapphire::FrameworkPtr pFw ); + InventoryMgr() = default; /*! * @brief Sends an item container to a player diff --git a/src/world/Manager/ItemMgr.cpp b/src/world/Manager/ItemMgr.cpp index ed119610..a28cec61 100644 --- a/src/world/Manager/ItemMgr.cpp +++ b/src/world/Manager/ItemMgr.cpp @@ -2,18 +2,12 @@ #include "Inventory/ItemContainer.h" #include "Inventory/Item.h" -#include "Framework.h" #include #include #include #include - -Sapphire::World::Manager::ItemMgr::ItemMgr( Sapphire::FrameworkPtr pFw ) : - BaseManager( pFw ) -{ - -} +#include bool Sapphire::World::Manager::ItemMgr::isArmory( uint16_t containerId ) { @@ -122,27 +116,26 @@ bool Sapphire::World::Manager::ItemMgr::isOneHandedWeapon( Common::ItemUICategor Sapphire::ItemPtr Sapphire::World::Manager::ItemMgr::loadItem( uint64_t uId ) { - auto pExdData = framework()->get< Data::ExdDataGenerated >(); - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); // 1 catalogId, 2 stack, 3 reservedFlag, 4 signatureId, 5 flags, 6 durability, 7 refine, 8 materia_0, 9 materia_1, // 10 materia_2, 11 materia_3, 12 materia_4, 13 stain, 14 pattern, 15 buffer_0, 16 buffer_1, 17 buffer_2, // 18 buffer_3, 19 buffer_4 - auto query = pDb->getPreparedStatement( Db::CHARA_ITEMGLOBAL_SELECT ); + auto query = db.getPreparedStatement( Db::CHARA_ITEMGLOBAL_SELECT ); query->setUInt64( 1, uId ); - auto itemRes = pDb->query( query ); + auto itemRes = db.query( query ); if( !itemRes->next() ) return nullptr; try { - auto itemInfo = pExdData->get< Sapphire::Data::Item >( itemRes->getUInt( 1 ) ); + auto itemInfo = exdData.get< Sapphire::Data::Item >( itemRes->getUInt( 1 ) ); bool isHq = itemRes->getUInt( 3 ) == 1; ItemPtr pItem = make_Item( uId, itemRes->getUInt( 1 ), - framework(), isHq ); pItem->setStackSize( itemRes->getUInt( 2 ) ); @@ -185,8 +178,9 @@ Sapphire::Common::ContainerType Sapphire::World::Manager::ItemMgr::getContainerT uint32_t Sapphire::World::Manager::ItemMgr::getNextUId() { uint32_t charId = 0; - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto pQR = pDb->query( "SELECT MAX(ItemId) FROM charaglobalitem" ); + + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto pQR = db.query( "SELECT MAX(ItemId) FROM charaglobalitem" ); if( !pQR->next() ) return 0x00500001; diff --git a/src/world/Manager/ItemMgr.h b/src/world/Manager/ItemMgr.h index 795f7c2b..b24c56e9 100644 --- a/src/world/Manager/ItemMgr.h +++ b/src/world/Manager/ItemMgr.h @@ -3,15 +3,14 @@ #include #include "ForwardsZone.h" -#include "BaseManager.h" namespace Sapphire::World::Manager { - class ItemMgr : public BaseManager + class ItemMgr { public: - ItemMgr( FrameworkPtr pFw ); + ItemMgr() = default; ItemPtr loadItem( uint64_t uId ); diff --git a/src/world/Manager/LinkshellMgr.cpp b/src/world/Manager/LinkshellMgr.cpp index 11d56859..fdbb8cb9 100644 --- a/src/world/Manager/LinkshellMgr.cpp +++ b/src/world/Manager/LinkshellMgr.cpp @@ -1,19 +1,15 @@ #include #include +#include #include "Linkshell/Linkshell.h" -#include "Framework.h" #include "LinkshellMgr.h" -Sapphire::World::Manager::LinkshellMgr::LinkshellMgr( FrameworkPtr pFw ) : - BaseManager( pFw ) -{ -} - bool Sapphire::World::Manager::LinkshellMgr::loadLinkshells() { - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto res = pDb->query( "SELECT LinkshellId, MasterCharacterId, CharacterIdList, " + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + + auto res = db.query( "SELECT LinkshellId, MasterCharacterId, CharacterIdList, " "LinkshellName, LeaderIdList, InviteIdList " "FROM infolinkshell " "ORDER BY LinkshellId ASC;" ); diff --git a/src/world/Manager/LinkshellMgr.h b/src/world/Manager/LinkshellMgr.h index 034f7884..5e97c351 100644 --- a/src/world/Manager/LinkshellMgr.h +++ b/src/world/Manager/LinkshellMgr.h @@ -4,12 +4,11 @@ #include #include #include "ForwardsZone.h" -#include "BaseManager.h" namespace Sapphire::World::Manager { - class LinkshellMgr : public Manager::BaseManager + class LinkshellMgr { private: std::map< uint64_t, LinkshellPtr > m_linkshellIdMap; @@ -20,7 +19,7 @@ namespace Sapphire::World::Manager LinkshellPtr getLinkshellById( uint64_t lsId ); public: - LinkshellMgr( FrameworkPtr pFw ); + LinkshellMgr() = default; bool loadLinkshells(); }; diff --git a/src/world/Manager/MarketMgr.cpp b/src/world/Manager/MarketMgr.cpp index 1ad81cf9..54f9fe65 100644 --- a/src/world/Manager/MarketMgr.cpp +++ b/src/world/Manager/MarketMgr.cpp @@ -1,7 +1,6 @@ #include "MarketMgr.h" #include -#include #include #include @@ -14,26 +13,20 @@ using namespace Sapphire::Network::Packets; -Sapphire::World::Manager::MarketMgr::MarketMgr( Sapphire::FrameworkPtr pFw ) : - BaseManager( pFw ) -{ - -} - bool Sapphire::World::Manager::MarketMgr::init() { // Logger::info( "MarketMgr: warming up marketable item cache..." ); // // // build item cache -// auto exdData = framework()->get< Sapphire::Data::ExdDataGenerated >(); -// auto idList = exdData->getItemIdList(); +// auto& exdData = Common::Service< Sapphire::Data::ExdDataGenerated >::ref(); +// auto idList = exdData.getItemIdList(); // // for( auto id : idList ) // { // if( id > 10000 ) // break; // -// auto item = exdData->get< Sapphire::Data::Item >( id ); +// auto item = exdData.get< Sapphire::Data::Item >( id ); // if( !item ) // continue; // diff --git a/src/world/Manager/MarketMgr.h b/src/world/Manager/MarketMgr.h index 328c9c12..a9a69529 100644 --- a/src/world/Manager/MarketMgr.h +++ b/src/world/Manager/MarketMgr.h @@ -2,16 +2,15 @@ #define SAPPHIRE_MARKETMGR_H #include "ForwardsZone.h" -#include "BaseManager.h" #include namespace Sapphire::World::Manager { - class MarketMgr : public Manager::BaseManager + class MarketMgr { public: - explicit MarketMgr( FrameworkPtr pFw ); + MarketMgr() = default; bool init(); diff --git a/src/world/Manager/NaviMgr.cpp b/src/world/Manager/NaviMgr.cpp index 62877ace..4bebd7d4 100644 --- a/src/world/Manager/NaviMgr.cpp +++ b/src/world/Manager/NaviMgr.cpp @@ -2,12 +2,6 @@ #include "Navi/NaviProvider.h" #include -Sapphire::World::Manager::NaviMgr::NaviMgr( FrameworkPtr pFw ) : - BaseManager( pFw ), - m_pFw( pFw ) -{ -} - bool Sapphire::World::Manager::NaviMgr::setupTerritory( const std::string& bgPath ) { std::string bg = getBgName( bgPath ); @@ -16,7 +10,7 @@ bool Sapphire::World::Manager::NaviMgr::setupTerritory( const std::string& bgPat if( m_naviProviderTerritoryMap.find( bg ) != m_naviProviderTerritoryMap.end() ) return true; - auto provider = Navi::make_NaviProvider( bg, m_pFw ); + auto provider = Navi::make_NaviProvider( bg ); if( provider->init() ) { diff --git a/src/world/Manager/NaviMgr.h b/src/world/Manager/NaviMgr.h index 6aeac713..3c08d886 100644 --- a/src/world/Manager/NaviMgr.h +++ b/src/world/Manager/NaviMgr.h @@ -2,26 +2,21 @@ #define SAPPHIRE_NAVIMGR_H #include "ForwardsZone.h" -#include "BaseManager.h" #include namespace Sapphire::World::Manager { - class NaviMgr : public BaseManager + class NaviMgr { - public: - - NaviMgr( FrameworkPtr pFw ); + NaviMgr() = default; virtual ~NaviMgr() = default; bool setupTerritory( const std::string& bgPath ); Navi::NaviProviderPtr getNaviProvider( const std::string& bgPath ); private: - FrameworkPtr m_pFw; - std::string getBgName( const std::string& bgPath ); std::unordered_map< std::string, Navi::NaviProviderPtr > m_naviProviderTerritoryMap; diff --git a/src/world/Manager/PlayerMgr.cpp b/src/world/Manager/PlayerMgr.cpp index 1f0f60a1..79062f2e 100644 --- a/src/world/Manager/PlayerMgr.cpp +++ b/src/world/Manager/PlayerMgr.cpp @@ -1,6 +1,5 @@ #include "PlayerMgr.h" -#include #include #include @@ -10,41 +9,34 @@ #include #include +#include using namespace Sapphire::World::Manager; -Sapphire::World::Manager::PlayerMgr::PlayerMgr( Sapphire::FrameworkPtr pFw ) : - BaseManager( std::move( 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 = framework()->get< TerritoryMgr >(); - if( !terriMgr ) - return; + auto& terriMgr = Common::Service< TerritoryMgr >::ref(); Sapphire::TerritoryPtr destinationZone; - auto terriPos = terriMgr->getTerritoryPosition( landId ); + auto terriPos = terriMgr.getTerritoryPosition( landId ); if( terriPos ) { // check if its a housing zone, zoning is different here - if( terriMgr->isHousingTerritory( terriPos->getTargetZoneId() ) ) + if( terriMgr.isHousingTerritory( terriPos->getTargetZoneId() ) ) { - auto housingMgr = framework()->get< HousingMgr >(); - auto landSetId = housingMgr->toLandSetId( terriPos->getTargetZoneId(), param ); + auto& housingMgr = Common::Service< HousingMgr >::ref(); + auto landSetId = housingMgr.toLandSetId( terriPos->getTargetZoneId(), param ); - auto housingZone = housingMgr->getHousingZoneByLandSetId( landSetId ); + auto housingZone = housingMgr.getHousingZoneByLandSetId( landSetId ); if( !housingZone ) return; destinationZone = housingZone; } - else if( terriMgr->isInstanceContentTerritory( terriPos->getTargetZoneId() ) ) + else if( terriMgr.isInstanceContentTerritory( terriPos->getTargetZoneId() ) ) { // todo: instance dungeon handling // will need to use setInstance so old pos gets set @@ -53,7 +45,7 @@ void Sapphire::World::Manager::PlayerMgr::movePlayerToLandDestination( Sapphire: else { // normal zones - destinationZone = terriMgr->getZoneByTerritoryTypeId( terriPos->getTargetZoneId() ); + destinationZone = terriMgr.getZoneByTerritoryTypeId( terriPos->getTargetZoneId() ); } } else @@ -73,5 +65,5 @@ void Sapphire::World::Manager::PlayerMgr::movePlayerToLandDestination( Sapphire: player.setPos( terriPos->getTargetPosition() ); player.setRot( terriPos->getTargetRotation() ); - terriMgr->movePlayer( destinationZone, player.getAsPlayer() ); + terriMgr.movePlayer( destinationZone, player.getAsPlayer() ); } diff --git a/src/world/Manager/PlayerMgr.h b/src/world/Manager/PlayerMgr.h index f7d08488..a0046fe3 100644 --- a/src/world/Manager/PlayerMgr.h +++ b/src/world/Manager/PlayerMgr.h @@ -2,14 +2,13 @@ #define SAPPHIRE_PLAYERMGR_H #include "ForwardsZone.h" -#include "BaseManager.h" namespace Sapphire::World::Manager { -class PlayerMgr : public Manager::BaseManager +class PlayerMgr { public: - PlayerMgr( FrameworkPtr pFw ); + PlayerMgr() = default; void movePlayerToLandDestination( Sapphire::Entity::Player& player, uint32_t landId, uint16_t param = 0 ); }; diff --git a/src/world/Manager/RNGMgr.cpp b/src/world/Manager/RNGMgr.cpp index 69c21185..b6fac08d 100644 --- a/src/world/Manager/RNGMgr.cpp +++ b/src/world/Manager/RNGMgr.cpp @@ -1,8 +1,7 @@ #include "RNGMgr.h" #include -Sapphire::World::Manager::RNGMgr::RNGMgr( FrameworkPtr pFw ) : - BaseManager( pFw ), +Sapphire::World::Manager::RNGMgr::RNGMgr() : m_engine( *engineSeed< std::mt19937::state_size >() ) { diff --git a/src/world/Manager/RNGMgr.h b/src/world/Manager/RNGMgr.h index a91325f2..1d6e08e2 100644 --- a/src/world/Manager/RNGMgr.h +++ b/src/world/Manager/RNGMgr.h @@ -2,7 +2,6 @@ #define SAPPHIRE_RNGMGR_H #include "Forwards.h" -#include "BaseManager.h" #include #include @@ -47,13 +46,10 @@ namespace Sapphire::World::Manager std::mt19937 m_engine; }; - class RNGMgr : public BaseManager + class RNGMgr { - public: - - - RNGMgr( FrameworkPtr pFw ); + RNGMgr(); virtual ~RNGMgr() = default; RNGMgr( const RNGMgr& pRNGMgr ) = delete; diff --git a/src/world/Manager/ShopMgr.cpp b/src/world/Manager/ShopMgr.cpp index 30470fa2..80df3a04 100644 --- a/src/world/Manager/ShopMgr.cpp +++ b/src/world/Manager/ShopMgr.cpp @@ -1,29 +1,21 @@ #include "ShopMgr.h" -#include #include #include #include +#include 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 = framework()->get< Data::ExdDataGenerated >(); - if( !exdData ) - return false; + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - auto gilShopItem = exdData->get< Data::GilShopItem >( shopId, itemId ); + auto gilShopItem = exdData.get< Data::GilShopItem >( shopId, itemId ); if( !gilShopItem ) return false; - auto item = exdData->get< Data::Item >( gilShopItem->item ); + auto item = exdData.get< Data::Item >( gilShopItem->item ); if( !item ) return false; diff --git a/src/world/Manager/ShopMgr.h b/src/world/Manager/ShopMgr.h index 6464d026..5e40ae1d 100644 --- a/src/world/Manager/ShopMgr.h +++ b/src/world/Manager/ShopMgr.h @@ -1,12 +1,11 @@ #include "ForwardsZone.h" -#include "BaseManager.h" namespace Sapphire::World::Manager { - class ShopMgr : public Manager::BaseManager + class ShopMgr { public: - ShopMgr( FrameworkPtr pFw ); + ShopMgr() = default; 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 916f94a6..7997cdc4 100644 --- a/src/world/Manager/TerritoryMgr.cpp +++ b/src/world/Manager/TerritoryMgr.cpp @@ -5,6 +5,7 @@ #include "ServerMgr.h" #include +#include #include "Actor/Player.h" @@ -14,15 +15,13 @@ #include "Territory/QuestBattle.h" #include "TerritoryMgr.h" #include "HousingMgr.h" -#include "Framework.h" #include "Territory/Land.h" #include "Territory/House.h" #include "Territory/Housing/HousingInteriorTerritory.h" #include "NaviMgr.h" -Sapphire::World::Manager::TerritoryMgr::TerritoryMgr( Sapphire::FrameworkPtr pFw ) : - BaseManager( pFw ), +Sapphire::World::Manager::TerritoryMgr::TerritoryMgr() : m_lastInstanceId( 10000 ) { @@ -30,20 +29,20 @@ Sapphire::World::Manager::TerritoryMgr::TerritoryMgr( Sapphire::FrameworkPtr pFw void Sapphire::World::Manager::TerritoryMgr::loadTerritoryTypeDetailCache() { - auto pExdData = framework()->get< Data::ExdDataGenerated >(); - auto idList = pExdData->getTerritoryTypeIdList(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto idList = exdData.getTerritoryTypeIdList(); for( auto id : idList ) { - auto teri1 = pExdData->get< Sapphire::Data::TerritoryType >( id ); + auto teri1 = exdData.get< Sapphire::Data::TerritoryType >( id ); if( !teri1->name.empty() ) m_territoryTypeDetailCacheMap[ id ] = teri1; } - for( auto id : pExdData->getContentFinderConditionIdList() ) + for( auto id : exdData.getContentFinderConditionIdList() ) { - auto cfc = pExdData->get< Sapphire::Data::ContentFinderCondition >( id ); + auto cfc = exdData.get< Sapphire::Data::ContentFinderCondition >( id ); if( !cfc || cfc->contentLinkType != 5 ) continue; @@ -72,7 +71,8 @@ bool Sapphire::World::Manager::TerritoryMgr::init() return false; } - auto& cfg = framework()->get< World::ServerMgr >()->getConfig(); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + auto& cfg = serverMgr.getConfig(); m_inRangeDistance = cfg.network.inRangeDistance; @@ -163,7 +163,7 @@ bool Sapphire::World::Manager::TerritoryMgr::isHousingTerritory( uint32_t territ bool Sapphire::World::Manager::TerritoryMgr::createDefaultTerritories() { - auto pExdData = framework()->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); // for each entry in territoryTypeExd, check if it is a normal and if so, add the zone object for( const auto& territory : m_territoryTypeDetailCacheMap ) { @@ -174,14 +174,14 @@ bool Sapphire::World::Manager::TerritoryMgr::createDefaultTerritories() if( territoryInfo->name.empty() ) continue; - auto pPlaceName = pExdData->get< Sapphire::Data::PlaceName >( territoryInfo->placeName ); + auto pPlaceName = exdData.get< Sapphire::Data::PlaceName >( territoryInfo->placeName ); if( !pPlaceName || pPlaceName->name.empty() || !isDefaultTerritory( territoryTypeId ) ) continue; uint32_t guid = getNextInstanceId(); - auto pZone = make_Territory( territoryTypeId, guid, territoryInfo->name, pPlaceName->name, framework() ); + auto pZone = make_Territory( territoryTypeId, guid, territoryInfo->name, pPlaceName->name ); pZone->init(); std::string bgPath = territoryInfo->bg; @@ -211,7 +211,7 @@ bool Sapphire::World::Manager::TerritoryMgr::createDefaultTerritories() bool Sapphire::World::Manager::TerritoryMgr::createHousingTerritories() { //separate housing zones from default - auto pExdData = framework()->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); for( const auto& territory : m_territoryTypeDetailCacheMap ) { auto territoryTypeId = territory.first; @@ -222,7 +222,7 @@ bool Sapphire::World::Manager::TerritoryMgr::createHousingTerritories() if( territoryInfo->name.empty() ) continue; - auto pPlaceName = pExdData->get< Sapphire::Data::PlaceName >( territoryInfo->placeName ); + auto pPlaceName = exdData.get< Sapphire::Data::PlaceName >( territoryInfo->placeName ); if( !pPlaceName || pPlaceName->name.empty() || !isHousingTerritory( territoryTypeId ) ) continue; @@ -239,8 +239,7 @@ bool Sapphire::World::Manager::TerritoryMgr::createHousingTerritories() pPlaceName->name, wardNum ); - auto pHousingZone = make_HousingZone( wardNum, territoryTypeId, guid, territoryInfo->name, - pPlaceName->name, framework() ); + auto pHousingZone = make_HousingZone( wardNum, territoryTypeId, guid, territoryInfo->name, pPlaceName->name ); pHousingZone->init(); InstanceIdToTerritoryPtrMap instanceMap; @@ -265,16 +264,16 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createTerritoryIn // if( isInstanceContentTerritory( territoryTypeId ) ) // return nullptr; - auto pExdData = framework()->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); auto pTeri = getTerritoryDetail( territoryTypeId ); - auto pPlaceName = pExdData->get< Sapphire::Data::PlaceName >( pTeri->placeName ); + auto pPlaceName = exdData.get< Sapphire::Data::PlaceName >( pTeri->placeName ); if( !pTeri || !pPlaceName ) return nullptr; Logger::debug( "Starting instance for territory: {0} ({1})", territoryTypeId, pPlaceName->name ); - auto pZone = make_Territory( territoryTypeId, getNextInstanceId(), pTeri->name, pPlaceName->name, framework() ); + auto pZone = make_Territory( territoryTypeId, getNextInstanceId(), pTeri->name, pPlaceName->name ); pZone->init(); m_guIdToTerritoryPtrMap[ pZone->getGuId() ] = pZone; @@ -293,16 +292,16 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createQuestBattle auto contentFinderConditionId = it->second; - auto pExdData = framework()->get< Data::ExdDataGenerated >(); - auto pContentFinderCondition = pExdData->get< Sapphire::Data::ContentFinderCondition >( contentFinderConditionId ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto pContentFinderCondition = exdData.get< Sapphire::Data::ContentFinderCondition >( contentFinderConditionId ); if( !pContentFinderCondition ) return nullptr; - auto pQuestBattleInfo = pExdData->get< Sapphire::Data::QuestBattle >( questBattleId ); + auto pQuestBattleInfo = exdData.get< Sapphire::Data::QuestBattle >( questBattleId ); if( !pQuestBattleInfo ) return nullptr; - auto pQuestInfo = pExdData->get< Sapphire::Data::Quest >( pQuestBattleInfo->quest ); + auto pQuestInfo = exdData.get< Sapphire::Data::Quest >( pQuestBattleInfo->quest ); if( !pQuestInfo ) return nullptr; @@ -317,7 +316,7 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createQuestBattle Logger::debug( "Starting instance for QuestBattle id: {0} ({1})", questBattleId, pQuestInfo->name ); auto pZone = make_QuestBattle( pQuestBattleInfo, pContentFinderCondition->territoryType, getNextInstanceId(), - pTeri->name, pQuestInfo->name, questBattleId, framework() ); + pTeri->name, pQuestInfo->name, questBattleId ); pZone->init(); m_questBattleIdToInstanceMap[ questBattleId ][ pZone->getGuId() ] = pZone; @@ -329,14 +328,14 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createQuestBattle Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createInstanceContent( uint32_t contentFinderConditionId ) { + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - auto pExdData = framework()->get< Data::ExdDataGenerated >(); - auto pContentFinderCondition = pExdData->get< Sapphire::Data::ContentFinderCondition >( contentFinderConditionId ); + auto pContentFinderCondition = exdData.get< Sapphire::Data::ContentFinderCondition >( contentFinderConditionId ); if( !pContentFinderCondition ) return nullptr; auto instanceContentId = pContentFinderCondition->content; - auto pInstanceContent = pExdData->get< Sapphire::Data::InstanceContent >( instanceContentId ); + auto pInstanceContent = exdData.get< Sapphire::Data::InstanceContent >( instanceContentId ); if( !pInstanceContent ) return nullptr; @@ -351,7 +350,7 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::createInstanceCon Logger::debug( "Starting instance for InstanceContent id: {0} ({1})", instanceContentId, pContentFinderCondition->name ); auto pZone = make_InstanceContent( pInstanceContent, pContentFinderCondition->territoryType, getNextInstanceId(), - pTeri->name, pContentFinderCondition->name, instanceContentId, framework() ); + pTeri->name, pContentFinderCondition->name, instanceContentId ); pZone->init(); m_instanceContentIdToInstanceMap[ instanceContentId ][ pZone->getGuId() ] = pZone; @@ -373,10 +372,10 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::findOrCreateHousi } // otherwise, create it - auto housingMgr = framework()->get< Manager::HousingMgr >(); + auto& housingMgr = Common::Service< Manager::HousingMgr >::ref(); auto parentZone = std::dynamic_pointer_cast< HousingZone >( - getZoneByLandSetId( housingMgr->toLandSetId( static_cast< uint16_t >( landIdent.territoryTypeId ), + getZoneByLandSetId( housingMgr.toLandSetId( static_cast< uint16_t >( landIdent.territoryTypeId ), static_cast< uint8_t >( landIdent.wardNum ) ) ) ); if( !parentZone ) @@ -423,7 +422,7 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::findOrCreateHousi auto zone = World::Territory::Housing::make_HousingInteriorTerritory( landIdent, territoryTypeId, getNextInstanceId(), terriInfo->name, - house->getHouseName(), framework() ); + house->getHouseName() ); zone->init(); @@ -467,8 +466,8 @@ Sapphire::TerritoryPtr Sapphire::World::Manager::TerritoryMgr::getTerritoryByGuI void Sapphire::World::Manager::TerritoryMgr::loadTerritoryPositionMap() { - 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;" ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto pQR = db.query( "SELECT id, target_zone_id, pos_x, pos_y, pos_z, pos_o, radius FROM zonepositions;" ); while( pQR->next() ) { diff --git a/src/world/Manager/TerritoryMgr.h b/src/world/Manager/TerritoryMgr.h index 62967378..88935a5f 100644 --- a/src/world/Manager/TerritoryMgr.h +++ b/src/world/Manager/TerritoryMgr.h @@ -2,7 +2,6 @@ #define SAPPHIRE_TERRITORYMGR_H #include "ForwardsZone.h" -#include "BaseManager.h" #include #include @@ -27,7 +26,7 @@ namespace Sapphire::World::Manager This class manages persistent and temporary instances alike. */ - class TerritoryMgr : public Manager::BaseManager + class TerritoryMgr { public: @@ -60,7 +59,7 @@ namespace Sapphire::World::Manager //Eureka = 41, // wat }; - TerritoryMgr( FrameworkPtr pFw ); + TerritoryMgr(); /*! initializes the territoryMgr */ bool init(); diff --git a/src/world/Math/CalcBattle.cpp b/src/world/Math/CalcBattle.cpp index 50be9dee..167bc762 100644 --- a/src/world/Math/CalcBattle.cpp +++ b/src/world/Math/CalcBattle.cpp @@ -2,13 +2,13 @@ #include #include +#include #include "Actor/Chara.h" #include "Actor/Player.h" #include "CalcBattle.h" -#include "Framework.h" using namespace Sapphire::Math; using namespace Sapphire::Entity; @@ -31,9 +31,9 @@ using namespace Sapphire::Entity; uint32_t CalcBattle::calculateHealValue( PlayerPtr pPlayer, uint32_t potency, Sapphire::FrameworkPtr pFw ) { - auto pExdData = pFw->get< Data::ExdDataGenerated >(); - auto classInfo = pExdData->get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( pPlayer->getClass() ) ); - auto paramGrowthInfo = pExdData->get< Sapphire::Data::ParamGrow >( pPlayer->getLevel() ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto classInfo = exdData.get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( pPlayer->getClass() ) ); + auto paramGrowthInfo = exdData.get< Sapphire::Data::ParamGrow >( pPlayer->getLevel() ); if( !classInfo || !paramGrowthInfo ) return 0; diff --git a/src/world/Math/CalcStats.cpp b/src/world/Math/CalcStats.cpp index 7544fb9a..4601816f 100644 --- a/src/world/Math/CalcStats.cpp +++ b/src/world/Math/CalcStats.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "Actor/Chara.h" #include "Actor/Player.h" @@ -10,7 +11,6 @@ #include "Inventory/Item.h" #include "CalcStats.h" -#include "Framework.h" using namespace Sapphire::Math; using namespace Sapphire::Entity; @@ -141,15 +141,15 @@ float CalcStats::calculateBaseStat( const Chara& chara ) // Leggerless' HP Formula // ROUNDDOWN(JobModHP * (BaseHP / 100)) + ROUNDDOWN(VitHPMod / 100 * (VIT - BaseDET)) -uint32_t CalcStats::calculateMaxHp( PlayerPtr pPlayer, Sapphire::FrameworkPtr pFw ) +uint32_t CalcStats::calculateMaxHp( PlayerPtr pPlayer ) { - auto pExdData = pFw->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); // TODO: Replace ApproxBaseHP with something that can get us an accurate BaseHP. // Is there any way to pull reliable BaseHP without having to manually use a pet for every level, and using the values from a table? // More info here: https://docs.google.com/spreadsheets/d/1de06KGT0cNRUvyiXNmjNgcNvzBCCQku7jte5QxEQRbs/edit?usp=sharing - auto classInfo = pExdData->get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( pPlayer->getClass() ) ); - auto paramGrowthInfo = pExdData->get< Sapphire::Data::ParamGrow >( pPlayer->getLevel() ); + auto classInfo = exdData.get< Sapphire::Data::ClassJob >( static_cast< uint8_t >( pPlayer->getClass() ) ); + auto paramGrowthInfo = exdData.get< Sapphire::Data::ParamGrow >( pPlayer->getLevel() ); if( !classInfo || !paramGrowthInfo ) return 0; diff --git a/src/world/Math/CalcStats.h b/src/world/Math/CalcStats.h index ce095b53..e277299e 100644 --- a/src/world/Math/CalcStats.h +++ b/src/world/Math/CalcStats.h @@ -16,7 +16,7 @@ namespace Sapphire::Math static float calculateBaseStat( const Entity::Chara& chara ); - static uint32_t calculateMaxHp( Sapphire::Entity::PlayerPtr pPlayer, FrameworkPtr pFw ); + static uint32_t calculateMaxHp( Sapphire::Entity::PlayerPtr pPlayer ); /*! * @brief Calculates the probability of a block happening diff --git a/src/world/Navi/NaviProvider.cpp b/src/world/Navi/NaviProvider.cpp index fc05f9bf..e118734b 100644 --- a/src/world/Navi/NaviProvider.cpp +++ b/src/world/Navi/NaviProvider.cpp @@ -1,5 +1,4 @@ #include -#include #include #include #include @@ -17,12 +16,12 @@ #include #include #include +#include -Sapphire::World::Navi::NaviProvider::NaviProvider( const std::string& internalName, FrameworkPtr pFw ) : +Sapphire::World::Navi::NaviProvider::NaviProvider( const std::string& internalName ) : m_naviMesh( nullptr ), m_naviMeshQuery( nullptr ), - m_internalName( internalName ), - m_pFw( pFw ) + m_internalName( internalName ) { // Set defaults m_polyFindRange[ 0 ] = 10; @@ -32,7 +31,8 @@ Sapphire::World::Navi::NaviProvider::NaviProvider( const std::string& internalNa bool Sapphire::World::Navi::NaviProvider::init() { - auto& cfg = m_pFw->get< Sapphire::World::ServerMgr >()->getConfig(); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + auto& cfg = serverMgr.getConfig(); auto meshesFolder = std::filesystem::path( cfg.navigation.meshPath ); auto meshFolder = meshesFolder / std::filesystem::path( m_internalName ); @@ -297,8 +297,8 @@ Sapphire::Common::FFXIVARR_POSITION3 return {}; } - auto pRNGMgr = m_pFw->get< World::Manager::RNGMgr >(); - auto rng = pRNGMgr->getRandGenerator< float >( 0.f, 1.f ); + auto& RNGMgr = Common::Service< World::Manager::RNGMgr >::ref(); + auto rng = RNGMgr.getRandGenerator< float >( 0.f, 1.f ); status = m_naviMeshQuery->findRandomPointAroundCircle( startRef, spos, maxRadius, &filter, frand, &randomRef, randomPt ); diff --git a/src/world/Navi/NaviProvider.h b/src/world/Navi/NaviProvider.h index 047abf17..33cd7cd6 100644 --- a/src/world/Navi/NaviProvider.h +++ b/src/world/Navi/NaviProvider.h @@ -32,7 +32,7 @@ namespace Sapphire::World::Navi }; public: - explicit NaviProvider( const std::string& internalName, FrameworkPtr pFw ); + explicit NaviProvider( const std::string& internalName ); bool init(); bool loadMesh( const std::string& path ); @@ -94,7 +94,6 @@ namespace Sapphire::World::Navi - FrameworkPtr m_pFw; }; } diff --git a/src/world/Network/GameConnection.cpp b/src/world/Network/GameConnection.cpp index fd8fa095..b3ccb223 100644 --- a/src/world/Network/GameConnection.cpp +++ b/src/world/Network/GameConnection.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "Territory/Territory.h" @@ -17,7 +18,6 @@ #include "GameConnection.h" #include "ServerMgr.h" #include "Session.h" -#include "Framework.h" #include "Forwards.h" using namespace Sapphire::Common; @@ -25,9 +25,8 @@ using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; Sapphire::Network::GameConnection::GameConnection( Sapphire::Network::HivePtr pHive, - Sapphire::Network::AcceptorPtr pAcceptor, - FrameworkPtr pFw ) : - Connection( pHive, pFw ), + Sapphire::Network::AcceptorPtr pAcceptor ) : + Connection( pHive ), m_pAcceptor( pAcceptor ), m_conType( ConnectionType::None ) { @@ -140,7 +139,7 @@ Sapphire::Network::GameConnection::~GameConnection() = default; // overwrite the parents onConnect for our game socket needs void Sapphire::Network::GameConnection::onAccept( const std::string& host, uint16_t port ) { - GameConnectionPtr connection( new GameConnection( m_hive, m_pAcceptor, m_pFw ) ); + GameConnectionPtr connection( new GameConnection( m_hive, m_pAcceptor ) ); m_pAcceptor->accept( connection ); Logger::info( "Connect from {0}", m_socket.remote_endpoint().address().to_string() ); } @@ -217,7 +216,7 @@ void Sapphire::Network::GameConnection::handleZonePacket( Sapphire::Network::Pac if( opcode != PingHandler && opcode != UpdatePositionHandler ) Logger::debug( "[{0}] Handling World IPC : {1} ( {2:04X} )", m_pSession->getId(), name, opcode ); - ( this->*( it->second ) )( m_pFw, pPacket, *m_pSession->getPlayer() ); + ( this->*( it->second ) )( pPacket, *m_pSession->getPlayer() ); } else { @@ -241,7 +240,7 @@ void Sapphire::Network::GameConnection::handleChatPacket( Sapphire::Network::Pac Logger::debug( "[{0}] Handling Chat IPC : {1} ( {2:04X} )", m_pSession->getId(), name, opcode ); - ( this->*( it->second ) )( m_pFw, pPacket, *m_pSession->getPlayer() ); + ( this->*( it->second ) )( pPacket, *m_pSession->getPlayer() ); } else { @@ -380,7 +379,7 @@ void Sapphire::Network::GameConnection::injectPacket( const std::string& packetp void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::Packets::FFXIVARR_PACKET_HEADER& ipcHeader, const std::vector< Sapphire::Network::Packets::FFXIVARR_PACKET_RAW >& packetData ) { - auto pServerZone = m_pFw->get< World::ServerMgr >(); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); // if a session is set, update the last time it recieved a game packet if( m_pSession ) @@ -397,18 +396,18 @@ void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network:: auto pCon = std::static_pointer_cast< GameConnection, Connection >( shared_from_this() ); // try to retrieve the session for this id - auto session = pServerZone->getSession( playerId ); + auto session = serverMgr.getSession( playerId ); if( !session ) { Logger::info( "[{0}] Session not registered, creating", id ); // return; - if( !pServerZone->createSession( playerId ) ) + if( !serverMgr.createSession( playerId ) ) { disconnect(); return; } - session = pServerZone->getSession( playerId ); + session = serverMgr.getSession( playerId ); } //TODO: Catch more things in lobby and send real errors else if( !session->isValid() || ( session->getPlayer() && session->getPlayer()->getLastPing() != 0 ) ) diff --git a/src/world/Network/GameConnection.h b/src/world/Network/GameConnection.h index 07962fd9..37a680e0 100644 --- a/src/world/Network/GameConnection.h +++ b/src/world/Network/GameConnection.h @@ -9,7 +9,7 @@ #include "ForwardsZone.h" -#define DECLARE_HANDLER( x ) void x( FrameworkPtr pFw, const Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) +#define DECLARE_HANDLER( x ) void x( const Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) namespace Sapphire::Network::Packets { @@ -32,8 +32,7 @@ namespace Sapphire::Network { private: - typedef void ( GameConnection::* Handler )( FrameworkPtr pFw, - const Network::Packets::FFXIVARR_PACKET_RAW& inPacket, + typedef void ( GameConnection::* Handler )( const Network::Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ); using HandlerMap = std::map< uint16_t, Handler >; @@ -58,7 +57,7 @@ namespace Sapphire::Network public: ConnectionType m_conType; - GameConnection( HivePtr pHive, AcceptorPtr pAcceptor, FrameworkPtr pFw ); + GameConnection( HivePtr pHive, AcceptorPtr pAcceptor ); ~GameConnection(); diff --git a/src/world/Network/Handlers/ActionHandler.cpp b/src/world/Network/Handlers/ActionHandler.cpp index 2b9f81dd..cbb412b0 100644 --- a/src/world/Network/Handlers/ActionHandler.cpp +++ b/src/world/Network/Handlers/ActionHandler.cpp @@ -5,17 +5,16 @@ #include #include +#include #include "Network/GameConnection.h" -#include "Framework.h" #include "Manager/ActionMgr.h" using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; -void Sapphire::Network::GameConnection::actionHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::actionHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcSkillHandler >( inPacket ); @@ -29,10 +28,8 @@ void Sapphire::Network::GameConnection::actionHandler( FrameworkPtr pFw, player.sendDebug( "Skill type: {0}, sequence: {1}, actionId: {2}, targetId: {3}", type, sequence, actionId, targetId ); - auto exdData = m_pFw->get< Data::ExdDataGenerated >(); - assert( exdData ); - - auto actionMgr = pFw->get< World::Manager::ActionMgr >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto& actionMgr = Common::Service< World::Manager::ActionMgr >::ref(); switch( type ) { @@ -42,39 +39,39 @@ void Sapphire::Network::GameConnection::actionHandler( FrameworkPtr pFw, } case Common::SkillType::Normal: { - auto action = exdData->get< Data::Action >( actionId ); + auto action = exdData.get< Data::Action >( actionId ); // ignore invalid actions if( !action ) return; - actionMgr->handleTargetedPlayerAction( player, actionId, action, targetId, sequence ); + actionMgr.handleTargetedPlayerAction( player, actionId, action, targetId, sequence ); break; } case Common::SkillType::ItemAction: { - auto item = exdData->get< Data::Item >( actionId ); + auto item = exdData.get< Data::Item >( actionId ); if( !item ) return; if( item->itemAction == 0 ) return; - auto itemAction = exdData->get< Data::ItemAction >( item->itemAction ); + auto itemAction = exdData.get< Data::ItemAction >( item->itemAction ); if( !itemAction ) return; - actionMgr->handleItemAction( player, actionId, itemAction, itemSourceSlot, itemSourceContainer ); + actionMgr.handleItemAction( player, actionId, itemAction, itemSourceSlot, itemSourceContainer ); break; } case Common::SkillType::MountSkill: { - auto action = exdData->get< Data::Action >( 4 ); + auto action = exdData.get< Data::Action >( 4 ); assert( action ); - actionMgr->handleMountAction( player, static_cast< uint16_t >( actionId ), action, targetId, sequence ); + actionMgr.handleMountAction( player, static_cast< uint16_t >( actionId ), action, targetId, sequence ); break; } } @@ -83,8 +80,7 @@ void Sapphire::Network::GameConnection::actionHandler( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::placedActionHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::placedActionHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcAoESkillHandler >( inPacket ); @@ -104,15 +100,14 @@ void Sapphire::Network::GameConnection::placedActionHandler( FrameworkPtr pFw, player.sendDebug( "Skill type: {0}, sequence: {1}, actionId: {2}, x:{3}, y:{4}, z:{5}", type, sequence, actionId, pos.x, pos.y, pos.z ); - auto exdData = m_pFw->get< Data::ExdDataGenerated >(); - assert( exdData ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - auto action = exdData->get< Data::Action >( actionId ); + auto action = exdData.get< Data::Action >( actionId ); // ignore invalid actions if( !action ) return; - auto actionMgr = pFw->get< World::Manager::ActionMgr >(); - actionMgr->handlePlacedPlayerAction( player, actionId, action, pos, sequence ); + auto& actionMgr = Common::Service< World::Manager::ActionMgr >::ref(); + actionMgr.handlePlacedPlayerAction( player, actionId, action, pos, sequence ); } diff --git a/src/world/Network/Handlers/CFHandlers.cpp b/src/world/Network/Handlers/CFHandlers.cpp index 9f3660fb..6361d901 100644 --- a/src/world/Network/Handlers/CFHandlers.cpp +++ b/src/world/Network/Handlers/CFHandlers.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "Manager/TerritoryMgr.h" #include "Territory/InstanceContent.h" @@ -12,7 +13,6 @@ #include "Network/PacketWrappers/ServerNoticePacket.h" #include "Network/PacketWrappers/PlayerStateFlagsPacket.h" -#include "Framework.h" #include "Session.h" using namespace Sapphire::Common; @@ -21,8 +21,7 @@ using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::World::Manager; -void Sapphire::Network::GameConnection::cfDutyInfoRequest( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::cfDutyInfoRequest( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { auto dutyInfoPacket = makeZonePacket< FFXIVIpcCFDutyInfo >( player.getId() ); @@ -40,13 +39,12 @@ void Sapphire::Network::GameConnection::cfDutyInfoRequest( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::cfRegisterDuty( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::cfRegisterDuty( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { Packets::FFXIVARR_PACKET_RAW copy = inPacket; - auto pTeriMgr = pFw->get< TerritoryMgr >(); - auto pExdData = pFw->get< Data::ExdDataGenerated >(); + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); std::vector< uint16_t > selectedContent; @@ -73,11 +71,11 @@ void Sapphire::Network::GameConnection::cfRegisterDuty( FrameworkPtr pFw, cfCancelPacket->data().state2 = 1; // Your registration is withdrawn. queueOutPacket( cfCancelPacket ); - auto cfCondition = pExdData->get< Sapphire::Data::ContentFinderCondition >( contentId ); + auto cfCondition = exdData.get< Sapphire::Data::ContentFinderCondition >( contentId ); if( !cfCondition ) return; - auto instance = pTeriMgr->createInstanceContent( cfCondition->content ); + auto instance = teriMgr.createInstanceContent( cfCondition->content ); if( !instance ) return; @@ -89,8 +87,7 @@ void Sapphire::Network::GameConnection::cfRegisterDuty( FrameworkPtr pFw, player.setInstance( instance ); } -void Sapphire::Network::GameConnection::cfRegisterRoulette( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::cfRegisterRoulette( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { auto cfCancelPacket = makeZonePacket< FFXIVIpcCFNotify >( player.getId() ); @@ -101,8 +98,7 @@ void Sapphire::Network::GameConnection::cfRegisterRoulette( FrameworkPtr pFw, player.sendDebug( "Roulette register" ); } -void Sapphire::Network::GameConnection::cfDutyAccepted( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::cfDutyAccepted( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { player.sendDebug( "TODO: Duty accept" ); diff --git a/src/world/Network/Handlers/ClientTriggerHandler.cpp b/src/world/Network/Handlers/ClientTriggerHandler.cpp index b6decf1b..e8ca0481 100644 --- a/src/world/Network/Handlers/ClientTriggerHandler.cpp +++ b/src/world/Network/Handlers/ClientTriggerHandler.cpp @@ -32,8 +32,7 @@ #include "Session.h" #include "ServerMgr.h" #include "Forwards.h" -#include "Framework.h" -#include +#include using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; @@ -41,11 +40,12 @@ using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::ActorControl; using namespace Sapphire::World::Manager; -void examineHandler( Sapphire::FrameworkPtr pFw, Sapphire::Entity::Player& player, uint32_t targetId ) +void examineHandler( Sapphire::Entity::Player& player, uint32_t targetId ) { using namespace Sapphire; - auto pSession = pFw->get< World::ServerMgr >()->getSession( targetId ); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + auto pSession = serverMgr.getSession( targetId ); if( pSession ) { auto pTarget = pSession->getPlayer(); @@ -63,8 +63,7 @@ void examineHandler( Sapphire::FrameworkPtr pFw, Sapphire::Entity::Player& playe } } -void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { @@ -146,7 +145,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, case ClientTriggerType::Examine: { uint32_t targetId = param11; - examineHandler( pFw, player, targetId ); + examineHandler( player, targetId ); break; } case ClientTriggerType::MarkPlayer: // Mark player @@ -191,8 +190,8 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, uint32_t emoteId = param11; bool isSilent = param2 == 1; - auto pExdData = pFw->get< Data::ExdDataGenerated >(); - auto emoteData = pExdData->get< Data::Emote >( emoteId ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto emoteData = exdData.get< Data::Emote >( emoteId ); if( !emoteData ) return; @@ -327,70 +326,63 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, } case ClientTriggerType::RequestLandSignFree: { - auto pHousingMgr = pFw->get< HousingMgr >(); + auto& housingMgr = Common::Service< HousingMgr >::ref(); - auto ident = pHousingMgr->clientTriggerParamsToLandIdent( param11, param12 ); - pHousingMgr->sendLandSignFree( player, ident ); + auto ident = housingMgr.clientTriggerParamsToLandIdent( param11, param12 ); + housingMgr.sendLandSignFree( player, ident ); break; } case ClientTriggerType::RequestLandSignOwned: { - auto pHousingMgr = pFw->get< HousingMgr >(); + auto& housingMgr = Common::Service< HousingMgr >::ref(); - auto ident = pHousingMgr->clientTriggerParamsToLandIdent( param11, param12, false ); - pHousingMgr->sendLandSignOwned( player, ident ); + auto ident = housingMgr.clientTriggerParamsToLandIdent( param11, param12, false ); + housingMgr.sendLandSignOwned( player, ident ); break; } case ClientTriggerType::RequestWardLandInfo: { - auto pHousingMgr = pFw->get< HousingMgr >(); - if( !pHousingMgr ) - break; + auto& housingMgr = Common::Service< HousingMgr >::ref(); - pHousingMgr->sendWardLandInfo( player, static_cast< uint8_t >( param12 ), static_cast< uint8_t >( param11 ) ); + housingMgr.sendWardLandInfo( player, static_cast< uint8_t >( param12 ), static_cast< uint8_t >( param11 ) ); break; } case ClientTriggerType::RequestLandRelinquish: { + auto& housingMgr = Common::Service< HousingMgr >::ref(); + auto plot = static_cast< uint8_t >( param12 & 0xFF ); - auto pHousingMgr = pFw->get< HousingMgr >(); - pHousingMgr->relinquishLand( player, plot ); + housingMgr.relinquishLand( player, plot ); break; } case ClientTriggerType::RequestEstateRename: { - auto pHousingMgr = pFw->get< HousingMgr >(); - if( !pHousingMgr ) - break; + auto& housingMgr = Common::Service< HousingMgr >::ref(); - auto ident = pHousingMgr->clientTriggerParamsToLandIdent( param11, param12 ); - pHousingMgr->requestEstateRename( player, ident ); + auto ident = housingMgr.clientTriggerParamsToLandIdent( param11, param12 ); + housingMgr.requestEstateRename( player, ident ); break; } case ClientTriggerType::RequestEstateEditGreeting: { - auto pHousingMgr = pFw->get< HousingMgr >(); - if( !pHousingMgr ) - break; + auto& housingMgr = Common::Service< HousingMgr >::ref(); - auto ident = pHousingMgr->clientTriggerParamsToLandIdent( param11, param12 ); - pHousingMgr->requestEstateEditGreeting( player, ident ); + auto ident = housingMgr.clientTriggerParamsToLandIdent( param11, param12 ); + housingMgr.requestEstateEditGreeting( player, ident ); break; } case ClientTriggerType::RequestEstateEditGuestAccessSettings: { - auto pHousingMgr = pFw->get< HousingMgr >(); - if( !pHousingMgr ) - break; + auto& housingMgr = Common::Service< HousingMgr >::ref(); - auto ident = pHousingMgr->clientTriggerParamsToLandIdent( param11, param12 ); - pHousingMgr->requestEstateEditGuestAccess( player, ident ); + auto ident = housingMgr.clientTriggerParamsToLandIdent( param11, param12 ); + housingMgr.requestEstateEditGuestAccess( player, ident ); break; } @@ -414,12 +406,10 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, } case ClientTriggerType::RequestEstateGreeting: { - auto housingMgr = pFw->get< HousingMgr >(); - if( !housingMgr ) - break; + auto& housingMgr = Common::Service< HousingMgr >::ref(); - auto ident = housingMgr->clientTriggerParamsToLandIdent( param11, param12 ); - housingMgr->sendEstateGreeting( player, ident ); + auto ident = housingMgr.clientTriggerParamsToLandIdent( param11, param12 ); + housingMgr.sendEstateGreeting( player, ident ); break; } @@ -427,59 +417,55 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, { uint8_t plot = ( param12 & 0xFF ); - auto housingMgr = pFw->get< HousingMgr >(); - if( !housingMgr ) - break; + auto& housingMgr = Common::Service< HousingMgr >::ref(); uint16_t inventoryType = Common::InventoryType::HousingExteriorPlacedItems; if( param2 == 1 ) inventoryType = Common::InventoryType::HousingExteriorStoreroom; - housingMgr->sendEstateInventory( player, inventoryType, plot ); + housingMgr.sendEstateInventory( player, inventoryType, plot ); break; } case ClientTriggerType::RequestEstateInventory: { - auto housingMgr = pFw->get< HousingMgr >(); - if( !housingMgr ) - break; + auto& housingMgr = Common::Service< HousingMgr >::ref(); // param1 = 1 - storeroom // param1 = 0 - placed items if( param1 == 1 ) - housingMgr->sendInternalEstateInventoryBatch( player, true ); + housingMgr.sendInternalEstateInventoryBatch( player, true ); else - housingMgr->sendInternalEstateInventoryBatch( player ); + housingMgr.sendInternalEstateInventoryBatch( player ); break; } case ClientTriggerType::RequestHousingItemRemove: { - auto housingMgr = m_pFw->get< HousingMgr >(); + auto& housingMgr = Common::Service< HousingMgr >::ref(); auto slot = param4 & 0xFF; auto sendToStoreroom = ( param4 >> 16 ) != 0; //player, plot, containerId, slot, sendToStoreroom - housingMgr->reqRemoveHousingItem( player, static_cast< uint16_t >( param12 ), static_cast< uint16_t >( param2 ), static_cast< uint8_t >( slot ), sendToStoreroom ); + housingMgr.reqRemoveHousingItem( player, static_cast< uint16_t >( param12 ), static_cast< uint16_t >( param2 ), static_cast< uint8_t >( slot ), sendToStoreroom ); break; } case ClientTriggerType::RequestEstateExteriorRemodel: { - auto housingMgr = m_pFw->get< HousingMgr >(); + auto& housingMgr = Common::Service< HousingMgr >::ref(); - housingMgr->reqEstateExteriorRemodel( player, static_cast< uint16_t >( param11 ) ); + housingMgr.reqEstateExteriorRemodel( player, static_cast< uint16_t >( param11 ) ); break; } case ClientTriggerType::RequestEstateInteriorRemodel: { - auto housingMgr = m_pFw->get< HousingMgr >(); + auto& housingMgr = Common::Service< HousingMgr >::ref(); - housingMgr->reqEstateInteriorRemodel( player ); + housingMgr.reqEstateInteriorRemodel( player ); break; } diff --git a/src/world/Network/Handlers/EventHandlers.cpp b/src/world/Network/Handlers/EventHandlers.cpp index 5c60ed7f..33fe1641 100644 --- a/src/world/Network/Handlers/EventHandlers.cpp +++ b/src/world/Network/Handlers/EventHandlers.cpp @@ -16,6 +16,7 @@ #include "Script/ScriptMgr.h" #include +#include #include "Event/EventHandler.h" #include "Manager/EventMgr.h" @@ -25,19 +26,16 @@ #include "Session.h" -#include "Framework.h" - using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; -void Sapphire::Network::GameConnection::eventHandlerTalk( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::eventHandlerTalk( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto pScriptMgr = pFw->get< Scripting::ScriptMgr >(); - auto pExdData = pFw->get< Data::ExdDataGenerated >(); - auto pEventMgr = pFw->get< World::Manager::EventMgr >(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcEventHandlerTalk >( inPacket ); @@ -47,10 +45,10 @@ void Sapphire::Network::GameConnection::eventHandlerTalk( FrameworkPtr pFw, auto eventType = static_cast< uint16_t >( eventId >> 16 ); std::string eventName = "onTalk"; - std::string objName = pEventMgr->getEventName( eventId ); + std::string objName = eventMgr.getEventName( eventId ); player.sendDebug( "Chara: {0} -> {1} \neventId: {2} ({3:08X})", - actorId, pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ), + actorId, eventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ), eventId, eventId ); @@ -61,10 +59,10 @@ void Sapphire::Network::GameConnection::eventHandlerTalk( FrameworkPtr pFw, { instance->onTalk( player, eventId, actorId ); } - else if( !pScriptMgr->onTalk( player, actorId, eventId ) && + else if( !scriptMgr.onTalk( player, actorId, eventId ) && eventType == Event::EventHandler::EventHandlerType::Quest ) { - auto questInfo = pExdData->get< Sapphire::Data::Quest >( eventId ); + auto questInfo = exdData.get< Sapphire::Data::Quest >( eventId ); if( questInfo ) player.sendUrgent( "Quest not implemented: {0} ({1})", questInfo->name, questInfo->id ); } @@ -73,13 +71,12 @@ void Sapphire::Network::GameConnection::eventHandlerTalk( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::eventHandlerEmote( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::eventHandlerEmote( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto pScriptMgr = pFw->get< Scripting::ScriptMgr >(); - auto pExdData = pFw->get< Data::ExdDataGenerated >(); - auto pEventMgr = pFw->get< World::Manager::EventMgr >(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcEventHandlerEmote >( inPacket ); @@ -89,20 +86,20 @@ void Sapphire::Network::GameConnection::eventHandlerEmote( FrameworkPtr pFw, const auto eventType = static_cast< uint16_t >( eventId >> 16 ); std::string eventName = "onEmote"; - std::string objName = pEventMgr->getEventName( eventId ); + std::string objName = eventMgr.getEventName( eventId ); player.sendDebug( "Chara: {0} -> {1} \neventId: {2} ({3:08X})", - actorId, pEventMgr->mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ), + actorId, eventMgr.mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ), eventId, eventId ); player.sendDebug( "Calling: {0}.{1}", objName, eventName ); player.eventStart( actorId, eventId, Event::EventHandler::Emote, 0, emoteId ); - if( !pScriptMgr->onEmote( player, actorId, eventId, static_cast< uint8_t >( emoteId ) ) && + if( !scriptMgr.onEmote( player, actorId, eventId, static_cast< uint8_t >( emoteId ) ) && eventType == Event::EventHandler::EventHandlerType::Quest ) { - auto questInfo = pExdData->get< Sapphire::Data::Quest >( eventId ); + auto questInfo = exdData.get< Sapphire::Data::Quest >( eventId ); if( questInfo ) player.sendUrgent( "Quest not implemented: {0}", questInfo->name ); } @@ -110,12 +107,11 @@ void Sapphire::Network::GameConnection::eventHandlerEmote( FrameworkPtr pFw, player.checkEvent( eventId ); } -void Sapphire::Network::GameConnection::eventHandlerWithinRange( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::eventHandlerWithinRange( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto pScriptMgr = pFw->get< Scripting::ScriptMgr >(); - auto pEventMgr = pFw->get< World::Manager::EventMgr >(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcEventHandlerWithinRange >( inPacket ); @@ -124,22 +120,21 @@ void Sapphire::Network::GameConnection::eventHandlerWithinRange( FrameworkPtr pF const auto& pos = packet.data().position; std::string eventName = "onWithinRange"; - std::string objName = pEventMgr->getEventName( eventId ); + std::string objName = eventMgr.getEventName( eventId ); player.sendDebug( "Calling: {0}.{1} - {2} p1: {3}", objName, eventName, eventId, param1 ); player.eventStart( player.getId(), eventId, Event::EventHandler::WithinRange, 1, param1 ); - pScriptMgr->onWithinRange( player, eventId, param1, pos.x, pos.y, pos.z ); + scriptMgr.onWithinRange( player, eventId, param1, pos.x, pos.y, pos.z ); player.checkEvent( eventId ); } -void Sapphire::Network::GameConnection::eventHandlerOutsideRange( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::eventHandlerOutsideRange( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto pScriptMgr = pFw->get< Scripting::ScriptMgr >(); - auto pEventMgr = pFw->get< World::Manager::EventMgr >(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcEventHandlerOutsideRange >( inPacket ); const auto eventId = packet.data().eventId; @@ -147,22 +142,21 @@ void Sapphire::Network::GameConnection::eventHandlerOutsideRange( FrameworkPtr p const auto& pos = packet.data().position; std::string eventName = "onOutsideRange"; - std::string objName = pEventMgr->getEventName( eventId ); + std::string objName = eventMgr.getEventName( eventId ); player.sendDebug( "Calling: {0}.{1} - {2} p1: {3}", objName, eventName, eventId, param1 ); player.eventStart( player.getId(), eventId, Event::EventHandler::WithinRange, 1, param1 ); - pScriptMgr->onOutsideRange( player, eventId, param1, pos.x, pos.y, pos.z ); + scriptMgr.onOutsideRange( player, eventId, param1, pos.x, pos.y, pos.z ); player.checkEvent( eventId ); } -void Sapphire::Network::GameConnection::eventHandlerEnterTerritory( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::eventHandlerEnterTerritory( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto pScriptMgr = pFw->get< Scripting::ScriptMgr >(); - auto pEventMgr = pFw->get< World::Manager::EventMgr >(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcEnterTerritoryHandler >( inPacket ); @@ -172,7 +166,7 @@ void Sapphire::Network::GameConnection::eventHandlerEnterTerritory( FrameworkPtr std::string eventName = "onEnterTerritory"; - std::string objName = pEventMgr->getEventName( eventId ); + std::string objName = eventMgr.getEventName( eventId ); player.sendDebug( "Calling: {0}.{1} - {2}", objName, eventName, eventId & 0xFFFF ); @@ -189,17 +183,16 @@ void Sapphire::Network::GameConnection::eventHandlerEnterTerritory( FrameworkPtr else { player.eventStart( player.getId(), eventId, Event::EventHandler::EnterTerritory, 0, player.getZoneId() ); - pScriptMgr->onEnterTerritory( player, eventId, param1, param2 ); + scriptMgr.onEnterTerritory( player, eventId, param1, param2 ); } player.checkEvent( eventId ); } -void Sapphire::Network::GameConnection::eventHandlerReturn( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::eventHandlerReturn( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto pEventMgr = pFw->get< World::Manager::EventMgr >(); + auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcEventHandlerReturn >( inPacket ); const auto eventId = packet.data().eventId; @@ -209,7 +202,7 @@ void Sapphire::Network::GameConnection::eventHandlerReturn( FrameworkPtr pFw, const auto param3 = packet.data().param3; const auto param4 = packet.data().param4; - std::string eventName = pEventMgr->getEventName( eventId ); + std::string eventName = eventMgr.getEventName( eventId ); player.sendDebug( "eventId: {0} ({0:08X}) scene: {1}, p1: {2}, p2: {3}, p3: {4}", eventId, scene, param1, param2, param3 ); @@ -242,8 +235,7 @@ void Sapphire::Network::GameConnection::eventHandlerReturn( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::eventHandlerLinkshell( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::eventHandlerLinkshell( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcLinkshellEventHandler >( inPacket ); @@ -257,30 +249,28 @@ void Sapphire::Network::GameConnection::eventHandlerLinkshell( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::eventHandlerShop( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::eventHandlerShop( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto pEventMgr = pFw->get< World::Manager::EventMgr >(); + auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcShopEventHandler >( inPacket ); - auto pScriptMgr = pFw->get< Scripting::ScriptMgr >(); - auto pExdData = pFw->get< Data::ExdDataGenerated >(); const auto eventId = packet.data().eventId; auto eventType = static_cast< uint16_t >( eventId >> 16 ); std::string eventName = "onOpen"; - std::string objName = pEventMgr->getEventName( eventId ); + std::string objName = eventMgr.getEventName( eventId ); player.sendDebug( "EventId: {0} ({0:08X})", eventId ); player.sendDebug( "Calling: {0}.{1}", objName, eventName ); player.eventStart( player.getId(), eventId, Event::EventHandler::UI, 0, packet.data().param ); - pScriptMgr->onTalk( player, player.getId(), eventId ); + scriptMgr.onTalk( player, player.getId(), eventId ); } diff --git a/src/world/Network/Handlers/GMCommandHandlers.cpp b/src/world/Network/Handlers/GMCommandHandlers.cpp index 77bd4380..175c2ab9 100644 --- a/src/world/Network/Handlers/GMCommandHandlers.cpp +++ b/src/world/Network/Handlers/GMCommandHandlers.cpp @@ -8,6 +8,7 @@ #include #include +#include #include "Network/GameConnection.h" @@ -30,7 +31,6 @@ #include "Network/PacketWrappers/PlayerStateFlagsPacket.h" #include "ServerMgr.h" -#include "Framework.h" using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; @@ -86,8 +86,7 @@ enum GmCommand JumpNpc = 0x025F, }; -void Sapphire::Network::GameConnection::gm1Handler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::gm1Handler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { if( player.getGmRank() <= 0 ) @@ -464,8 +463,8 @@ void Sapphire::Network::GameConnection::gm1Handler( FrameworkPtr pFw, } case GmCommand::Teri: { - auto pTeriMgr = pFw->get< TerritoryMgr >(); - if( auto instance = pTeriMgr->getTerritoryByGuId( param1 ) ) + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); + if( auto instance = teriMgr.getTerritoryByGuId( param1 ) ) { player.sendDebug( "Found instance: {0}, id#{1}", instance->getName(), param1 ); @@ -482,20 +481,20 @@ void Sapphire::Network::GameConnection::gm1Handler( FrameworkPtr pFw, player.setInstance( instance ); } - else if( !pTeriMgr->isValidTerritory( param1 ) ) + else if( !teriMgr.isValidTerritory( param1 ) ) { player.sendUrgent( "Invalid zone {0}", param1 ); } else { - auto pZone = pTeriMgr->getZoneByTerritoryTypeId( param1 ); + auto pZone = teriMgr.getZoneByTerritoryTypeId( param1 ); if( !pZone ) { player.sendUrgent( "No zone instance found for {0}", param1 ); break; } - if( !pTeriMgr->isDefaultTerritory( param1 ) ) + if( !teriMgr.isDefaultTerritory( param1 ) ) { player.sendUrgent( "{0} is an instanced area - instance ID required to zone in.", pZone->getName() ); break; @@ -504,12 +503,12 @@ void Sapphire::Network::GameConnection::gm1Handler( FrameworkPtr pFw, bool doTeleport = false; uint16_t teleport; - auto pExdData = pFw->get< Data::ExdDataGenerated >(); - auto idList = pExdData->getAetheryteIdList(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto idList = exdData.getAetheryteIdList(); for( auto i : idList ) { - auto data = pExdData->get< Sapphire::Data::Aetheryte >( i ); + auto data = exdData.get< Sapphire::Data::Aetheryte >( i ); if( !data ) { @@ -587,14 +586,13 @@ void Sapphire::Network::GameConnection::gm1Handler( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::gm2Handler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::gm2Handler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { if( player.getGmRank() <= 0 ) return; - auto pServerZone = pFw->get< World::ServerMgr >(); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcGmCommand2 >( inPacket ); @@ -608,7 +606,7 @@ void Sapphire::Network::GameConnection::gm2Handler( FrameworkPtr pFw, Logger::debug( "{0} used GM2 commandId: {1}, params: {2}, {3}, {4}, {5}, target: {6}", player.getName(), commandId, param1, param2, param3, param4, target ); - auto targetSession = pServerZone->getSession( target ); + auto targetSession = serverMgr.getSession( target ); Sapphire::Entity::CharaPtr targetActor; if( targetSession != nullptr ) diff --git a/src/world/Network/Handlers/InventoryHandler.cpp b/src/world/Network/Handlers/InventoryHandler.cpp index 8fc94bdd..cbc7be02 100644 --- a/src/world/Network/Handlers/InventoryHandler.cpp +++ b/src/world/Network/Handlers/InventoryHandler.cpp @@ -17,14 +17,11 @@ #include "Session.h" #include "ServerMgr.h" -#include "Framework.h" - using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; -void Sapphire::Network::GameConnection::inventoryModifyHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::inventoryModifyHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcInventoryModifyHandler >( inPacket ); diff --git a/src/world/Network/Handlers/PacketHandlers.cpp b/src/world/Network/Handlers/PacketHandlers.cpp index 5e23045d..9346eb21 100644 --- a/src/world/Network/Handlers/PacketHandlers.cpp +++ b/src/world/Network/Handlers/PacketHandlers.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include "Network/GameConnection.h" @@ -49,7 +50,6 @@ #include "Session.h" #include "ServerMgr.h" #include "Forwards.h" -#include "Framework.h" using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; @@ -57,8 +57,7 @@ using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::ActorControl; using namespace Sapphire::World::Manager; -void Sapphire::Network::GameConnection::fcInfoReqHandler( FrameworkPtr pFw, - const Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::fcInfoReqHandler( const Sapphire::Network::Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { // TODO: use new packet struct for this @@ -67,8 +66,7 @@ void Sapphire::Network::GameConnection::fcInfoReqHandler( FrameworkPtr pFw, //queueOutPacket( pPe ); } -void Sapphire::Network::GameConnection::setSearchInfoHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::setSearchInfoHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcSetSearchInfo >( inPacket ); @@ -103,8 +101,7 @@ void Sapphire::Network::GameConnection::setSearchInfoHandler( FrameworkPtr pFw, static_cast< uint8_t >( player.getOnlineStatus() ) ), true ); } -void Sapphire::Network::GameConnection::reqSearchInfoHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::reqSearchInfoHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { auto searchInfoPacket = makeZonePacket< FFXIVIpcInitSearchInfo >( player.getId() ); @@ -114,13 +111,13 @@ void Sapphire::Network::GameConnection::reqSearchInfoHandler( FrameworkPtr pFw, queueOutPacket( searchInfoPacket ); } -void Sapphire::Network::GameConnection::reqExamineSearchCommentHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::reqExamineSearchCommentHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { auto targetId = *reinterpret_cast< const uint32_t* >( &inPacket.data[ 0x10 ] ); - auto pSession = pFw->get< World::ServerMgr >()->getSession( targetId ); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + auto pSession = serverMgr.getSession( targetId ); Logger::debug( "reqExamineSearchCommentHandler: {0}", targetId ); @@ -142,13 +139,14 @@ void Sapphire::Network::GameConnection::reqExamineSearchCommentHandler( Framewor } } -void Sapphire::Network::GameConnection::reqExamineFcInfo( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::reqExamineFcInfo( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { auto targetId = *reinterpret_cast< const uint32_t* >( &inPacket.data[ 0x18 ] ); - auto pSession = pFw->get< World::ServerMgr >()->getSession( targetId ); + + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + auto pSession = serverMgr.getSession( targetId ); Logger::debug( "reqExamineFcInfo: {0}", targetId ); @@ -171,16 +169,14 @@ void Sapphire::Network::GameConnection::reqExamineFcInfo( FrameworkPtr pFw, } } -void Sapphire::Network::GameConnection::linkshellListHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::linkshellListHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { auto linkshellListPacket = makeZonePacket< FFXIVIpcLinkshellList >( player.getId() ); queueOutPacket( linkshellListPacket ); } -void Sapphire::Network::GameConnection::updatePositionHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::updatePositionHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { // if the player is marked for zoning we no longer want to update his pos @@ -265,8 +261,7 @@ void Sapphire::Network::GameConnection::updatePositionHandler( FrameworkPtr pFw, } void -Sapphire::Network::GameConnection::reqEquipDisplayFlagsHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +Sapphire::Network::GameConnection::reqEquipDisplayFlagsHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { player.setEquipDisplayFlags( inPacket.data[ 0x10 ] ); @@ -274,19 +269,18 @@ Sapphire::Network::GameConnection::reqEquipDisplayFlagsHandler( FrameworkPtr pFw player.sendDebug( "EquipDisplayFlag CHANGE: {0}", player.getEquipDisplayFlags() ); } -void Sapphire::Network::GameConnection::zoneLineHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::zoneLineHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcZoneLineHandler >( inPacket ); const auto zoneLineId = packet.data().zoneLineId; - auto pTeriMgr = pFw->get< TerritoryMgr >(); - auto pInstanceObjectCache = pFw->get< InstanceObjectCache >(); + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); + auto& instanceObjectCache = Common::Service< InstanceObjectCache >::ref(); auto tInfo = player.getCurrentTerritory()->getTerritoryTypeInfo(); - auto pExitRange = pInstanceObjectCache->getExitRange( player.getTerritoryTypeId(), zoneLineId ); + auto pExitRange = instanceObjectCache.getExitRange( player.getTerritoryTypeId(), zoneLineId ); Common::FFXIVARR_POSITION3 targetPos{}; uint32_t targetZone; @@ -294,8 +288,8 @@ void Sapphire::Network::GameConnection::zoneLineHandler( FrameworkPtr pFw, if( pExitRange ) { - auto pPopRange = pInstanceObjectCache->getPopRange( pExitRange->data.destTerritoryType, - pExitRange->data.destInstanceObjectId ); + auto pPopRange = instanceObjectCache.getPopRange( pExitRange->data.destTerritoryType, + pExitRange->data.destInstanceObjectId ); if( pPopRange ) { targetZone = pExitRange->data.destTerritoryType; @@ -320,16 +314,15 @@ void Sapphire::Network::GameConnection::zoneLineHandler( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::discoveryHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::discoveryHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto pInstanceObjectCache = pFw->get< InstanceObjectCache >(); + auto& instanceObjectCache = Common::Service< InstanceObjectCache >::ref(); auto tInfo = player.getCurrentTerritory()->getTerritoryTypeInfo(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcDiscoveryHandler >( inPacket ); const auto positionRef = packet.data().positionRef; - auto pRefInfo = pInstanceObjectCache->getMapRange( player.getTerritoryTypeId(), positionRef ); + auto pRefInfo = instanceObjectCache.getMapRange( player.getTerritoryTypeId(), positionRef ); player.sendDebug( "Discovery ref pos id#{0}", positionRef ); @@ -345,8 +338,7 @@ void Sapphire::Network::GameConnection::discoveryHandler( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::playTimeHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::playTimeHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { auto playTimePacket = makeZonePacket< FFXIVIpcPlayTime >( player.getId() ); @@ -355,8 +347,7 @@ void Sapphire::Network::GameConnection::playTimeHandler( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::initHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::initHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { // init handler means this is a login procedure @@ -366,8 +357,7 @@ void Sapphire::Network::GameConnection::initHandler( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::blackListHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::blackListHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { uint8_t count = inPacket.data[ 0x11 ]; @@ -382,8 +372,7 @@ void Sapphire::Network::GameConnection::blackListHandler( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::pingHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::pingHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcPingHandler >( inPacket ); @@ -394,8 +383,7 @@ void Sapphire::Network::GameConnection::pingHandler( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::finishLoadingHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::finishLoadingHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { player.sendQuestInfo(); @@ -428,8 +416,7 @@ void Sapphire::Network::GameConnection::finishLoadingHandler( FrameworkPtr pFw, player.getCurrentTerritory()->updateActorPosition( player ); } -void Sapphire::Network::GameConnection::socialListHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::socialListHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { @@ -488,18 +475,17 @@ void Sapphire::Network::GameConnection::socialListHandler( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::chatHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::chatHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto pDebugCom = pFw->get< DebugCommandMgr >(); + auto& debugCommandMgr = Common::Service< DebugCommandMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcChatHandler >( inPacket ); if( packet.data().message[ 0 ] == '!' ) { // execute game console command - pDebugCom->execCommand( const_cast< char* >( packet.data().message ) + 1, player ); + debugCommandMgr.execCommand( const_cast< char* >( packet.data().message ) + 1, player ); return; } @@ -547,8 +533,7 @@ void Sapphire::Network::GameConnection::chatHandler( FrameworkPtr pFw, // currently we wait for the session to just time out after logout, this can be a problem is the user tries to // log right back in. // Also the packet needs to be converted to an ipc structure -void Sapphire::Network::GameConnection::logoutHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::logoutHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { auto logoutPacket = makeZonePacket< FFXIVIpcLogout >( player.getId() ); @@ -560,15 +545,14 @@ void Sapphire::Network::GameConnection::logoutHandler( FrameworkPtr pFw, } -void Sapphire::Network::GameConnection::tellHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::tellHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcTellHandler >( inPacket ); - auto pZoneServer = pFw->get< World::ServerMgr >(); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); - auto pSession = pZoneServer->getSession( packet.data().targetPCName ); + auto pSession = serverMgr.getSession( packet.data().targetPCName ); if( !pSession ) { @@ -616,8 +600,7 @@ void Sapphire::Network::GameConnection::tellHandler( FrameworkPtr pFw, pTargetPlayer->queueChatPacket( tellPacket ); } -void Sapphire::Network::GameConnection::performNoteHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::performNoteHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { auto performPacket = makeZonePacket< FFXIVIpcPerformNote >( player.getId() ); @@ -625,17 +608,16 @@ void Sapphire::Network::GameConnection::performNoteHandler( FrameworkPtr pFw, player.sendToInRangeSet( performPacket ); } -void Sapphire::Network::GameConnection::landRenameHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::landRenameHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcRenameLandHandler >( inPacket ); - auto pHousingMgr = pFw->get< HousingMgr >(); + auto& housingMgr = Common::Service< HousingMgr >::ref(); - auto landSetId = pHousingMgr->toLandSetId( packet.data().ident.territoryTypeId, packet.data().ident.wardNum ); + auto landSetId = housingMgr.toLandSetId( packet.data().ident.territoryTypeId, packet.data().ident.wardNum ); - auto pZone = pHousingMgr->getHousingZoneByLandSetId( landSetId ); + auto pZone = housingMgr.getHousingZoneByLandSetId( landSetId ); if( !pZone ) return; @@ -659,91 +641,83 @@ void Sapphire::Network::GameConnection::landRenameHandler( FrameworkPtr pFw, player.queuePacket( nameUpdatePacket ); } -void Sapphire::Network::GameConnection::buildPresetHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::buildPresetHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcBuildPresetHandler >( inPacket ); - auto pHousingMgr = pFw->get< HousingMgr >(); - pHousingMgr->buildPresetEstate( player, packet.data().plotNum, packet.data().itemId ); + auto& housingMgr = Common::Service< HousingMgr >::ref(); + housingMgr.buildPresetEstate( player, packet.data().plotNum, packet.data().itemId ); } -void Sapphire::Network::GameConnection::housingUpdateGreetingHandler( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::housingUpdateGreetingHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcHousingUpdateHouseGreeting >( inPacket ); - auto pHousingMgr = pFw->get< HousingMgr >(); + auto& housingMgr = Common::Service< HousingMgr >::ref(); - pHousingMgr->updateEstateGreeting( player, packet.data().ident, std::string( packet.data().greeting ) ); + housingMgr.updateEstateGreeting( player, packet.data().ident, std::string( packet.data().greeting ) ); } -void Sapphire::Network::GameConnection::reqPlaceHousingItem( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::reqPlaceHousingItem( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto housingMgr = pFw->get< HousingMgr >(); + auto& housingMgr = Common::Service< HousingMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcReqPlaceHousingItem >( inPacket ); const auto& data = packet.data(); if( data.shouldPlaceItem == 1 ) { - housingMgr->reqPlaceHousingItem( player, data.landId, data.sourceInvContainerId, data.sourceInvSlotId, + housingMgr.reqPlaceHousingItem( player, data.landId, data.sourceInvContainerId, data.sourceInvSlotId, data.position, data.rotation ); } else - housingMgr->reqPlaceItemInStore( player, data.landId, data.sourceInvContainerId, data.sourceInvSlotId ); + housingMgr.reqPlaceItemInStore( player, data.landId, data.sourceInvContainerId, data.sourceInvSlotId ); } -void Sapphire::Network::GameConnection::reqMoveHousingItem( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::reqMoveHousingItem( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto housingMgr = pFw->get< HousingMgr >(); + auto& housingMgr = Common::Service< HousingMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcHousingUpdateObjectPosition >( inPacket ); const auto& data = packet.data(); - housingMgr->reqMoveHousingItem( player, data.ident, data.slot, data.pos, data.rotation ); - + housingMgr.reqMoveHousingItem( player, data.ident, data.slot, data.pos, data.rotation ); } -void Sapphire::Network::GameConnection::marketBoardSearch( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::marketBoardSearch( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto marketMgr = pFw->get< MarketMgr >(); + auto& marketMgr = Common::Service< MarketMgr >::ref(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcMarketBoardSearch >( inPacket ); const auto& data = packet.data(); std::string_view searchStr( data.searchStr ); - marketMgr->searchMarketboard( player, data.itemSearchCategory, data.maxEquipLevel, data.classJobId, data.searchStr, + marketMgr.searchMarketboard( player, data.itemSearchCategory, data.maxEquipLevel, data.classJobId, data.searchStr, data.requestId, data.startIdx ); } -void Sapphire::Network::GameConnection::marketBoardRequestItemInfo( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::marketBoardRequestItemInfo( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcMarketBoardRequestItemListingInfo >( inPacket ); - auto marketMgr = pFw->get< MarketMgr >(); + auto& marketMgr = Common::Service< MarketMgr >::ref(); - marketMgr->requestItemListingInfo( player, packet.data().catalogId, packet.data().requestId ); + marketMgr.requestItemListingInfo( player, packet.data().catalogId, packet.data().requestId ); } -void Sapphire::Network::GameConnection::marketBoardRequestItemListings( FrameworkPtr pFw, - const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::marketBoardRequestItemListings( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcMarketBoardRequestItemListings >( inPacket ); - auto marketMgr = pFw->get< MarketMgr >(); + auto& marketMgr = Common::Service< MarketMgr >::ref(); - marketMgr->requestItemListings( player, packet.data().itemCatalogId ); + marketMgr.requestItemListings( player, packet.data().itemCatalogId ); } diff --git a/src/world/Script/NativeScriptApi.cpp b/src/world/Script/NativeScriptApi.cpp index d6dce0f6..b8945223 100644 --- a/src/world/Script/NativeScriptApi.cpp +++ b/src/world/Script/NativeScriptApi.cpp @@ -31,17 +31,6 @@ namespace Sapphire::ScriptAPI return m_type; } - void ScriptObject::setFramework( Sapphire::Framework* fw ) - { - assert( fw ); - m_framework = fw; - } - - Sapphire::Framework* ScriptObject::framework() const - { - return m_framework; - } - /////////////////////////////////////////////////////////////////// StatusEffectScript::StatusEffectScript( uint32_t effectId ) : diff --git a/src/world/Script/NativeScriptApi.h b/src/world/Script/NativeScriptApi.h index d7b33d00..aad02c5a 100644 --- a/src/world/Script/NativeScriptApi.h +++ b/src/world/Script/NativeScriptApi.h @@ -26,8 +26,6 @@ namespace Sapphire::ScriptAPI uint32_t m_id; std::size_t m_type; - Sapphire::Framework* m_framework; - public: /*! * @param id an ID which uniquely identifies this script in relation to it's type @@ -48,20 +46,6 @@ namespace Sapphire::ScriptAPI * @return The hash_code of the script */ virtual std::size_t getType() const; - - /*! - * @brief Sets the ptr to the framework for use inside scripts - * - * @param fw The ptr to a Framework - */ - virtual void setFramework( Sapphire::Framework* fw ); - - /*! - * @brief Returns the current ptr to framework set for the current script - * - * @return A pointer to Core::Framework - */ - virtual Sapphire::Framework* framework() const; }; diff --git a/src/world/Script/NativeScriptMgr.cpp b/src/world/Script/NativeScriptMgr.cpp index 2cf8fa37..6db51a39 100644 --- a/src/world/Script/NativeScriptMgr.cpp +++ b/src/world/Script/NativeScriptMgr.cpp @@ -1,10 +1,9 @@ #include "NativeScriptMgr.h" #include +#include #include "ServerMgr.h" -#include "Framework.h" - namespace Sapphire::Scripting { @@ -32,8 +31,6 @@ namespace Sapphire::Scripting auto script = scripts[ i ]; module->scripts.push_back( script ); - script->setFramework( framework().get() ); - m_scripts[ script->getType() ][ script->getId() ] = script; success = true; @@ -121,17 +118,17 @@ namespace Sapphire::Scripting return m_loader.isModuleLoaded( name ); } - NativeScriptMgr::NativeScriptMgr( FrameworkPtr pFw ) : - World::Manager::BaseManager( pFw ) + NativeScriptMgr::NativeScriptMgr() { - auto pServerMgr = framework()->get< Sapphire::World::ServerMgr >(); - m_loader.setCachePath( pServerMgr->getConfig().scripts.cachePath ); + auto& serverMgr = Common::Service< Sapphire::World::ServerMgr >::ref(); + + m_loader.setCachePath( serverMgr.getConfig().scripts.cachePath ); } - std::shared_ptr< NativeScriptMgr > createNativeScriptMgr( FrameworkPtr pFw ) + std::shared_ptr< NativeScriptMgr > createNativeScriptMgr() { - return std::make_shared< NativeScriptMgr >( pFw ); + return std::make_shared< NativeScriptMgr >(); } } diff --git a/src/world/Script/NativeScriptMgr.h b/src/world/Script/NativeScriptMgr.h index 8547c975..668408a0 100644 --- a/src/world/Script/NativeScriptMgr.h +++ b/src/world/Script/NativeScriptMgr.h @@ -4,7 +4,6 @@ #include #include #include -#include "Manager/BaseManager.h" #include "ScriptLoader.h" @@ -14,7 +13,7 @@ namespace Sapphire::Scripting /*! * @brief Contains all the functionality for easily loading, unloading, reloading and generally accessing scripts. */ - class NativeScriptMgr : public World::Manager::BaseManager + class NativeScriptMgr { protected: /*! @@ -41,7 +40,7 @@ namespace Sapphire::Scripting bool unloadScript( ScriptInfo* info ); public: - NativeScriptMgr( FrameworkPtr pFw ); + NativeScriptMgr(); /*! * @brief Loads a script from a path @@ -125,7 +124,7 @@ namespace Sapphire::Scripting * * @return a std::shared_ptr to NativeScriptMgr */ - std::shared_ptr< NativeScriptMgr > createNativeScriptMgr( FrameworkPtr pFw ); + std::shared_ptr< NativeScriptMgr > createNativeScriptMgr(); } #endif diff --git a/src/world/Script/ScriptLoader.cpp b/src/world/Script/ScriptLoader.cpp index ace591a8..93759aa3 100644 --- a/src/world/Script/ScriptLoader.cpp +++ b/src/world/Script/ScriptLoader.cpp @@ -7,8 +7,6 @@ #include -#include "Framework.h" - namespace fs = std::filesystem; const std::string Sapphire::Scripting::ScriptLoader::getModuleExtension() diff --git a/src/world/Script/ScriptMgr.cpp b/src/world/Script/ScriptMgr.cpp index fc0a7736..b7e082bd 100644 --- a/src/world/Script/ScriptMgr.cpp +++ b/src/world/Script/ScriptMgr.cpp @@ -2,6 +2,7 @@ #include #include +#include #include "Territory/Territory.h" #include "Territory/InstanceContent.h" @@ -22,18 +23,16 @@ #include "NativeScriptMgr.h" #include "ServerMgr.h" -#include "Framework.h" // enable the ambiguity fix for every platform to avoid #define nonsense #define WIN_AMBIGUITY_FIX namespace fs = std::filesystem; -Sapphire::Scripting::ScriptMgr::ScriptMgr( FrameworkPtr pFw ) : - World::Manager::BaseManager( pFw ), +Sapphire::Scripting::ScriptMgr::ScriptMgr() : m_firstScriptChangeNotificiation( false ) { - m_nativeScriptMgr = createNativeScriptMgr( pFw ); + m_nativeScriptMgr = createNativeScriptMgr(); } Sapphire::Scripting::ScriptMgr::~ScriptMgr() @@ -49,9 +48,9 @@ void Sapphire::Scripting::ScriptMgr::update() bool Sapphire::Scripting::ScriptMgr::init() { std::set< std::string > files; - auto pServerMgr = framework()->get< World::ServerMgr >(); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); - auto status = loadDir( pServerMgr->getConfig().scripts.path, files, m_nativeScriptMgr->getModuleExtension() ); + auto status = loadDir( serverMgr.getConfig().scripts.path, files, m_nativeScriptMgr->getModuleExtension() ); if( !status ) { @@ -81,12 +80,12 @@ bool Sapphire::Scripting::ScriptMgr::init() void Sapphire::Scripting::ScriptMgr::watchDirectories() { - auto pServerMgr = framework()->get< World::ServerMgr >(); - auto shouldWatch = pServerMgr->getConfig().scripts.hotSwap; + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + auto shouldWatch = serverMgr.getConfig().scripts.hotSwap; if( !shouldWatch ) return; - Watchdog::watchMany( pServerMgr->getConfig().scripts.path + "*" + + Watchdog::watchMany( serverMgr.getConfig().scripts.path + "*" + m_nativeScriptMgr->getModuleExtension(), [ this ]( const std::vector< ci::fs::path >& paths ) { @@ -256,10 +255,10 @@ bool Sapphire::Scripting::ScriptMgr::onEventHandlerTradeReturn( Entity::Player& bool Sapphire::Scripting::ScriptMgr::onEventItem( Entity::Player& player, uint32_t eventItemId, uint32_t eventId, uint32_t castTime, uint64_t targetId ) { - auto pEventMgr = framework()->get< World::Manager::EventMgr >(); + auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref(); std::string eventName = "onEventItem"; - std::string objName = pEventMgr->getEventName( eventId ); + std::string objName = eventMgr.getEventName( eventId ); player.sendDebug( "Calling: {0}.{1} - {2}", objName, eventName, eventId ); auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::EventScript >( eventId ); @@ -276,7 +275,7 @@ bool Sapphire::Scripting::ScriptMgr::onEventItem( Entity::Player& player, uint32 bool Sapphire::Scripting::ScriptMgr::onBNpcKill( Entity::Player& player, uint16_t nameId ) { - auto pEventMgr = framework()->get< World::Manager::EventMgr >(); + auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref(); // loop through all active quests and try to call available onBNpcKill callbacks for( size_t i = 0; i < 30; i++ ) @@ -290,7 +289,7 @@ bool Sapphire::Scripting::ScriptMgr::onBNpcKill( Entity::Player& player, uint16_ auto script = m_nativeScriptMgr->getScript< Sapphire::ScriptAPI::EventScript >( questId ); if( script ) { - std::string objName = pEventMgr->getEventName( questId ); + std::string objName = eventMgr.getEventName( questId ); player.sendDebug( "Calling: {0}.onBnpcKill nameId#{1}", objName, nameId ); @@ -303,7 +302,7 @@ bool Sapphire::Scripting::ScriptMgr::onBNpcKill( Entity::Player& player, uint16_ bool Sapphire::Scripting::ScriptMgr::onEObjHit( Sapphire::Entity::Player& player, uint64_t actorId, uint32_t actionId ) { - auto pEventMgr = framework()->get< World::Manager::EventMgr >(); + auto& eventMgr = Common::Service< World::Manager::EventMgr >::ref(); bool didCallScript = false; for( size_t i = 0; i < 30; i++ ) @@ -318,7 +317,7 @@ bool Sapphire::Scripting::ScriptMgr::onEObjHit( Sapphire::Entity::Player& player if( script ) { didCallScript = true; - std::string objName = pEventMgr->getEventName( questId ); + std::string objName = eventMgr.getEventName( questId ); player.sendDebug( "Calling: {0}.onEObjHit actorId#{1}", objName, actorId ); diff --git a/src/world/Script/ScriptMgr.h b/src/world/Script/ScriptMgr.h index c68a0482..ea9b5d80 100644 --- a/src/world/Script/ScriptMgr.h +++ b/src/world/Script/ScriptMgr.h @@ -7,12 +7,11 @@ #include #include "Forwards.h" -#include "Manager/BaseManager.h" namespace Sapphire::Scripting { - class ScriptMgr : public World::Manager::BaseManager + class ScriptMgr { private: /*! @@ -29,7 +28,7 @@ namespace Sapphire::Scripting bool m_firstScriptChangeNotificiation; public: - ScriptMgr( FrameworkPtr pFw ); + ScriptMgr(); ~ScriptMgr(); diff --git a/src/world/ServerMgr.cpp b/src/world/ServerMgr.cpp index 460b8c98..4d539b59 100644 --- a/src/world/ServerMgr.cpp +++ b/src/world/ServerMgr.cpp @@ -6,7 +6,6 @@ #include "Network/GameConnection.h" #include "ServerMgr.h" -#include "Framework.h" #include #include @@ -28,6 +27,7 @@ #include #include +#include #include "Manager/LinkshellMgr.h" #include "Manager/TerritoryMgr.h" #include "Manager/HousingMgr.h" @@ -46,8 +46,7 @@ using namespace Sapphire::World::Manager; -Sapphire::World::ServerMgr::ServerMgr( const std::string& configName, FrameworkPtr pFw ) : - Manager::BaseManager( pFw ), +Sapphire::World::ServerMgr::ServerMgr( const std::string& configName ) : m_configName( configName ), m_bRunning( true ), m_lastDBPingTime( 0 ), @@ -66,20 +65,20 @@ size_t Sapphire::World::ServerMgr::getSessionCount() const bool Sapphire::World::ServerMgr::loadSettings( int32_t argc, char* argv[] ) { - auto pConfig = framework()->get< Common::ConfigMgr >(); + auto& configMgr = Common::Service< Common::ConfigMgr >::ref(); Logger::info( "Loading config {0}", m_configName ); bool failedLoad = false; // load global cfg first - if( !pConfig->loadGlobalConfig( m_config.global ) ) + if( !configMgr.loadGlobalConfig( m_config.global ) ) { Logger::fatal( "Error loading config global.ini, copying default..." ); failedLoad = true; } - if( !pConfig->loadConfig( m_configName ) ) + if( !configMgr.loadConfig( m_configName ) ) { Logger::fatal( "Error loading config {0}", m_configName ); failedLoad = true; @@ -93,20 +92,20 @@ bool Sapphire::World::ServerMgr::loadSettings( int32_t argc, char* argv[] ) } // load world specific config - m_config.scripts.hotSwap = pConfig->getValue( "Scripts", "HotSwap", true ); - m_config.scripts.path = pConfig->getValue< std::string >( "Scripts", "Path", "./compiledscripts/" ); - m_config.scripts.cachePath = pConfig->getValue< std::string >( "Scripts", "CachePath", "./cache/" ); + m_config.scripts.hotSwap = configMgr.getValue( "Scripts", "HotSwap", true ); + m_config.scripts.path = configMgr.getValue< std::string >( "Scripts", "Path", "./compiledscripts/" ); + m_config.scripts.cachePath = configMgr.getValue< std::string >( "Scripts", "CachePath", "./cache/" ); - m_config.navigation.meshPath = pConfig->getValue< std::string >( "Navigation", "MeshPath", "navi" ); + m_config.navigation.meshPath = configMgr.getValue< std::string >( "Navigation", "MeshPath", "navi" ); - m_config.network.disconnectTimeout = pConfig->getValue< uint16_t >( "Network", "DisconnectTimeout", 20 ); - m_config.network.listenIp = pConfig->getValue< std::string >( "Network", "ListenIp", "0.0.0.0" ); - m_config.network.listenPort = pConfig->getValue< uint16_t >( "Network", "ListenPort", 54992 ); - m_config.network.inRangeDistance = pConfig->getValue< float >( "Network", "InRangeDistance", 80.f ); + m_config.network.disconnectTimeout = configMgr.getValue< uint16_t >( "Network", "DisconnectTimeout", 20 ); + m_config.network.listenIp = configMgr.getValue< std::string >( "Network", "ListenIp", "0.0.0.0" ); + m_config.network.listenPort = configMgr.getValue< uint16_t >( "Network", "ListenPort", 54992 ); + m_config.network.inRangeDistance = configMgr.getValue< float >( "Network", "InRangeDistance", 80.f ); - m_config.motd = pConfig->getValue< std::string >( "General", "MotD", "" ); + m_config.motd = configMgr.getValue< std::string >( "General", "MotD", "" ); - m_config.housing.defaultEstateName = pConfig->getValue< std::string >( "Housing", "DefaultEstateName", "Estate #{}" ); + m_config.housing.defaultEstateName = configMgr.getValue< std::string >( "Housing", "DefaultEstateName", "Estate #{}" ); m_port = m_config.network.listenPort; m_ip = m_config.network.listenIp; @@ -123,8 +122,7 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] ) printBanner(); - auto pConfig = std::make_shared< Common::ConfigMgr >(); - framework()->set< Common::ConfigMgr >( pConfig ); + Common::Service< Common::ConfigMgr >::set(); if( !loadSettings( argc, argv ) ) { Logger::fatal( "Unable to load settings!" ); @@ -142,7 +140,7 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] ) Logger::fatal( "DataPath: {0}", dataPath ); return; } - framework()->set< Data::ExdDataGenerated >( pExdData ); + Common::Service< Data::ExdDataGenerated >::set( pExdData ); auto pDb = std::make_shared< Db::DbWorkerPool< Db::ZoneDbConnection > >(); Sapphire::Db::DbLoader loader; @@ -152,56 +150,56 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] ) Logger::fatal( "Database not initialized properly!" ); return; } - framework()->set< Db::DbWorkerPool< Db::ZoneDbConnection > >( pDb ); + Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::set( pDb ); Logger::info( "LinkshellMgr: Caching linkshells" ); - auto pLsMgr = std::make_shared< Manager::LinkshellMgr >( framework() ); + auto pLsMgr = std::make_shared< Manager::LinkshellMgr >(); if( !pLsMgr->loadLinkshells() ) { Logger::fatal( "Unable to load linkshells!" ); return; } - framework()->set< Manager::LinkshellMgr >( pLsMgr ); + Common::Service< Manager::LinkshellMgr >::set( pLsMgr ); - auto pScript = std::make_shared< Scripting::ScriptMgr >( framework() ); + auto pScript = std::make_shared< Scripting::ScriptMgr >(); if( !pScript->init() ) { Logger::fatal( "Failed to setup scripts!" ); return; } - framework()->set< Scripting::ScriptMgr >( pScript ); + Common::Service< Scripting::ScriptMgr >::set( pScript ); Logger::info( "Setting up InstanceObjectCache" ); - auto pInstanceObjCache = std::make_shared< Sapphire::InstanceObjectCache >( framework() ); - framework()->set< Sapphire::InstanceObjectCache >( pInstanceObjCache ); + auto pInstanceObjCache = std::make_shared< Sapphire::InstanceObjectCache >(); + Common::Service< Sapphire::InstanceObjectCache >::set( pInstanceObjCache ); - auto pActionMgr = std::make_shared< Manager::ActionMgr >( framework() ); - framework()->set< Manager::ActionMgr >( pActionMgr ); + auto pActionMgr = std::make_shared< Manager::ActionMgr >(); + Common::Service< Manager::ActionMgr >::set( pActionMgr ); loadBNpcTemplates(); - auto pNaviMgr = std::make_shared< Manager::NaviMgr >( framework() ); - framework()->set< Manager::NaviMgr >( pNaviMgr ); + auto pNaviMgr = std::make_shared< Manager::NaviMgr >(); + Common::Service< Manager::NaviMgr >::set( pNaviMgr ); Logger::info( "TerritoryMgr: Setting up zones" ); - 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 ); + auto pTeriMgr = std::make_shared< Manager::TerritoryMgr >(); + auto pHousingMgr = std::make_shared< Manager::HousingMgr >(); + Common::Service< Manager::HousingMgr >::set( pHousingMgr ); + Common::Service< Manager::TerritoryMgr >::set( pTeriMgr ); + if( !pHousingMgr->init() ) { Logger::fatal( "Failed to setup housing!" ); return; } - if( !pTeriMgr->init() ) { Logger::fatal( "Failed to setup zones!" ); return; } - auto pMarketMgr = std::make_shared< Manager::MarketMgr >( framework() ); - framework()->set< Manager::MarketMgr >( pMarketMgr ); + auto pMarketMgr = std::make_shared< Manager::MarketMgr >(); + Common::Service< Manager::MarketMgr >::set( pMarketMgr ); if( !pMarketMgr->init() ) { @@ -212,26 +210,26 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] ) Network::HivePtr hive( new Network::Hive() ); - Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive, framework() ); + Network::addServerToHive< Network::GameConnection >( m_ip, m_port, hive ); std::vector< std::thread > thread_list; thread_list.emplace_back( std::thread( std::bind( &Network::Hive::run, hive.get() ) ) ); - 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 >( framework() ); - auto pEventMgr = std::make_shared< Manager::EventMgr >( framework() ); - auto pItemMgr = std::make_shared< Manager::ItemMgr >( framework() ); - auto pRNGMgr = std::make_shared< Manager::RNGMgr >( framework() ); + auto pDebugCom = std::make_shared< DebugCommandMgr >(); + auto pPlayerMgr = std::make_shared< Manager::PlayerMgr >(); + auto pShopMgr = std::make_shared< Manager::ShopMgr >(); + auto pInventoryMgr = std::make_shared< Manager::InventoryMgr >(); + auto pEventMgr = std::make_shared< Manager::EventMgr >(); + auto pItemMgr = std::make_shared< Manager::ItemMgr >(); + auto pRNGMgr = std::make_shared< Manager::RNGMgr >(); - framework()->set< DebugCommandMgr >( pDebugCom ); - framework()->set< Manager::PlayerMgr >( pPlayerMgr ); - framework()->set< Manager::ShopMgr >( pShopMgr ); - framework()->set< Manager::InventoryMgr >( pInventoryMgr ); - framework()->set< Manager::EventMgr >( pEventMgr ); - framework()->set< Manager::ItemMgr >( pItemMgr ); - framework()->set< Manager::RNGMgr >( pRNGMgr ); + Common::Service< DebugCommandMgr >::set( pDebugCom ); + Common::Service< Manager::PlayerMgr >::set( pPlayerMgr ); + Common::Service< Manager::ShopMgr >::set( pShopMgr ); + Common::Service< Manager::InventoryMgr >::set( pInventoryMgr ); + Common::Service< Manager::EventMgr >::set( pEventMgr ); + Common::Service< Manager::ItemMgr >::set( pItemMgr ); + Common::Service< Manager::RNGMgr >::set( pRNGMgr ); Logger::info( "World server running on {0}:{1}", m_ip, m_port ); @@ -266,9 +264,9 @@ void Sapphire::World::ServerMgr::printBanner() const void Sapphire::World::ServerMgr::mainLoop() { - auto pTeriMgr = framework()->get< TerritoryMgr >(); - auto pScriptMgr = framework()->get< Scripting::ScriptMgr >(); - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& terriMgr = Common::Service< TerritoryMgr >::ref(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); while( isRunning() ) { @@ -277,9 +275,9 @@ void Sapphire::World::ServerMgr::mainLoop() auto currTime = Common::Util::getTimeSeconds(); auto tickCount = Common::Util::getTimeMs(); - pTeriMgr->updateTerritoryInstances( tickCount ); + terriMgr.updateTerritoryInstances( tickCount ); - pScriptMgr->update(); + scriptMgr.update(); std::lock_guard< std::mutex > lock( m_sessionMutex ); for( auto sessionIt : m_sessionMapById ) @@ -298,7 +296,7 @@ void Sapphire::World::ServerMgr::mainLoop() if( currTime - m_lastDBPingTime > 3 ) { - pDb->keepAlive(); + db.keepAlive(); m_lastDBPingTime = currTime; } @@ -360,7 +358,7 @@ bool Sapphire::World::ServerMgr::createSession( uint32_t sessionId ) Logger::info( "[{0}] Creating new session", session_id_str ); - std::shared_ptr< Session > newSession( new Session( sessionId, framework() ) ); + std::shared_ptr< Session > newSession( new Session( sessionId ) ); m_sessionMapById[ sessionId ] = newSession; if( !newSession->loadPlayer() ) @@ -424,8 +422,8 @@ std::string Sapphire::World::ServerMgr::getPlayerNameFromDb( uint32_t playerId, return ( it->second ); } - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto res = pDb->query( "SELECT name FROM charainfo WHERE characterid = " + std::to_string( playerId ) ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto res = db.query( "SELECT name FROM charainfo WHERE characterid = " + std::to_string( playerId ) ); if( !res->next() ) return "Unknown"; @@ -443,11 +441,10 @@ void Sapphire::World::ServerMgr::updatePlayerName( uint32_t playerId, const std: void Sapphire::World::ServerMgr::loadBNpcTemplates() { - auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); - auto stmt = pDb->getPreparedStatement( Db::ZoneDbStatements::ZONE_SEL_BNPCTEMPLATES ); - - auto res = pDb->query( stmt ); + auto stmt = db.getPreparedStatement( Db::ZoneDbStatements::ZONE_SEL_BNPCTEMPLATES ); + auto res = db.query( stmt ); while( res->next() ) { diff --git a/src/world/ServerMgr.h b/src/world/ServerMgr.h index fa3cf5ea..1add030a 100644 --- a/src/world/ServerMgr.h +++ b/src/world/ServerMgr.h @@ -6,18 +6,17 @@ #include #include #include "ForwardsZone.h" -#include "Manager/BaseManager.h" #include namespace Sapphire::World { - class ServerMgr : public Manager::BaseManager + class ServerMgr { public: - ServerMgr( const std::string& configName, FrameworkPtr pFw ); + ServerMgr( const std::string& configName ); - ~ServerMgr() override; + ~ServerMgr(); using WorldConfigPtr = std::shared_ptr< Sapphire::Common::Config::WorldConfig >; diff --git a/src/world/Session.cpp b/src/world/Session.cpp index 273d20d0..56bcc888 100644 --- a/src/world/Session.cpp +++ b/src/world/Session.cpp @@ -12,12 +12,11 @@ namespace fs = std::filesystem; -Sapphire::World::Session::Session( uint32_t sessionId, FrameworkPtr pFw ) : +Sapphire::World::Session::Session( uint32_t sessionId ) : m_sessionId( sessionId ), m_lastDataTime( Common::Util::getTimeSeconds() ), m_lastSqlTime( Common::Util::getTimeSeconds() ), m_isValid( false ), - m_pFw( std::move( pFw ) ), m_isReplaying( false ) { } @@ -48,7 +47,7 @@ Sapphire::Network::GameConnectionPtr Sapphire::World::Session::getChatConnection bool Sapphire::World::Session::loadPlayer() { - m_pPlayer = Entity::make_Player( m_pFw ); + m_pPlayer = Entity::make_Player(); if( !m_pPlayer->load( m_sessionId, shared_from_this() ) ) { diff --git a/src/world/Session.h b/src/world/Session.h index dcbd78cb..2f20ecbe 100644 --- a/src/world/Session.h +++ b/src/world/Session.h @@ -11,7 +11,7 @@ namespace Sapphire::World class Session : public std::enable_shared_from_this< Session > { public: - Session( uint32_t sessionId, FrameworkPtr pFw ); + Session( uint32_t sessionId ); ~Session() = default; @@ -67,8 +67,6 @@ namespace Sapphire::World Network::GameConnectionPtr m_pZoneConnection; Network::GameConnectionPtr m_pChatConnection; - FrameworkPtr m_pFw; - }; } diff --git a/src/world/StatusEffect/StatusEffect.cpp b/src/world/StatusEffect/StatusEffect.cpp index 4dcfd556..f63b79cc 100644 --- a/src/world/StatusEffect/StatusEffect.cpp +++ b/src/world/StatusEffect/StatusEffect.cpp @@ -4,6 +4,7 @@ #include #include +#include #include "Actor/Chara.h" #include "Actor/Actor.h" @@ -11,25 +12,23 @@ #include "Script/ScriptMgr.h" #include "StatusEffect.h" -#include "Framework.h" using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; Sapphire::StatusEffect::StatusEffect::StatusEffect( uint32_t id, Entity::CharaPtr sourceActor, Entity::CharaPtr targetActor, - uint32_t duration, uint32_t tickRate, FrameworkPtr pFw ) : + uint32_t duration, uint32_t tickRate ) : m_id( id ), m_sourceActor( sourceActor ), m_targetActor( targetActor ), m_duration( duration ), m_startTime( 0 ), m_tickRate( tickRate ), - m_lastTick( 0 ), - m_pFw( pFw ) + m_lastTick( 0 ) { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - auto entry = pExdData->get< Sapphire::Data::Status >( id ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto entry = exdData.get< Sapphire::Data::Status >( id ); m_name = entry->name; std::replace( m_name.begin(), m_name.end(), ' ', '_' ); @@ -62,9 +61,10 @@ std::pair< uint8_t, uint32_t > Sapphire::StatusEffect::StatusEffect::getTickEffe void Sapphire::StatusEffect::StatusEffect::onTick() { - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); m_lastTick = Util::getTimeMs(); - pScriptMgr->onStatusTick( m_targetActor, *this ); + + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + scriptMgr.onStatusTick( m_targetActor, *this ); } uint32_t Sapphire::StatusEffect::StatusEffect::getSrcActorId() const @@ -85,7 +85,7 @@ uint16_t Sapphire::StatusEffect::StatusEffect::getParam() const void Sapphire::StatusEffect::StatusEffect::applyStatus() { m_startTime = Util::getTimeMs(); - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); // this is only right when an action is being used by the player // else you probably need to use an actorcontrol @@ -105,13 +105,13 @@ void Sapphire::StatusEffect::StatusEffect::applyStatus() //effectPacket.data().effects[4].unknown_5 = 0x80; //m_sourceActor->sendToInRangeSet( effectPacket, true ); - pScriptMgr->onStatusReceive( m_targetActor, m_id ); + scriptMgr.onStatusReceive( m_targetActor, m_id ); } void Sapphire::StatusEffect::StatusEffect::removeStatus() { - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onStatusTimeOut( m_targetActor, m_id ); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + scriptMgr.onStatusTimeOut( m_targetActor, m_id ); } uint32_t Sapphire::StatusEffect::StatusEffect::getId() const diff --git a/src/world/StatusEffect/StatusEffect.h b/src/world/StatusEffect/StatusEffect.h index d9f933e1..e6bb1c8e 100644 --- a/src/world/StatusEffect/StatusEffect.h +++ b/src/world/StatusEffect/StatusEffect.h @@ -11,7 +11,7 @@ class StatusEffect { public: StatusEffect( uint32_t id, Entity::CharaPtr sourceActor, Entity::CharaPtr targetActor, - uint32_t duration, uint32_t tickRate, FrameworkPtr pFw ); + uint32_t duration, uint32_t tickRate ); ~StatusEffect(); @@ -58,7 +58,6 @@ private: uint16_t m_param; std::string m_name; std::pair< uint8_t, uint32_t > m_currTickEffect; - FrameworkPtr m_pFw; }; diff --git a/src/world/Territory/House.cpp b/src/world/Territory/House.cpp index 4d4544ff..c5f44bc6 100644 --- a/src/world/Territory/House.cpp +++ b/src/world/Territory/House.cpp @@ -9,16 +9,15 @@ #include "House.h" #include -#include "Framework.h" +#include Sapphire::House::House( uint32_t houseId, uint32_t landSetId, Common::LandIdent ident, const std::string& estateName, - const std::string& estateComment, FrameworkPtr pFw ) : + const std::string& estateComment ) : m_houseId( houseId ), m_landSetId( landSetId ), m_landIdent( ident ), m_estateName( estateName ), - m_estateComment( estateComment ), - m_pFw( pFw ) + m_estateComment( estateComment ) { m_interiorModelCache.fill( 0 ); m_exteriorModelCache.fill( std::make_pair( 0, 0 ) ); @@ -28,10 +27,10 @@ Sapphire::House::~House() = default; void Sapphire::House::updateHouseDb() { - auto pDB = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); // BuildTime = 1, Aetheryte = 2, Comment = 3, HouseName = 4, Endorsements = 5, HouseId = 6 - auto stmt = pDB->getPreparedStatement( Db::HOUSING_HOUSE_UP ); + auto stmt = db.getPreparedStatement( Db::HOUSING_HOUSE_UP ); stmt->setUInt( 6, m_houseId ); stmt->setInt64( 1, static_cast< int64_t >( m_buildTime ) ); @@ -42,7 +41,7 @@ void Sapphire::House::updateHouseDb() stmt->setUInt64( 5, 0 ); - pDB->execute( stmt ); + db.execute( stmt ); } uint32_t Sapphire::House::getLandSetId() const diff --git a/src/world/Territory/House.h b/src/world/Territory/House.h index 1fa0ca43..9a3a3da0 100644 --- a/src/world/Territory/House.h +++ b/src/world/Territory/House.h @@ -14,7 +14,7 @@ namespace Sapphire { public: House( uint32_t houseId, uint32_t landSetId, Common::LandIdent ident, const std::string& estateName, - const std::string& estateComment, FrameworkPtr pFw ); + const std::string& estateComment ); virtual ~House(); using HousePart = std::pair< uint32_t, uint16_t >; @@ -59,7 +59,6 @@ namespace Sapphire std::string m_estateComment; std::string m_estateName; - FrameworkPtr m_pFw; }; } diff --git a/src/world/Territory/Housing/HousingInteriorTerritory.cpp b/src/world/Territory/Housing/HousingInteriorTerritory.cpp index ade7acfc..bef2e7d6 100644 --- a/src/world/Territory/Housing/HousingInteriorTerritory.cpp +++ b/src/world/Territory/Housing/HousingInteriorTerritory.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include "Actor/Player.h" #include "Actor/Actor.h" @@ -20,7 +21,6 @@ #include "Forwards.h" #include "HousingInteriorTerritory.h" -#include "Framework.h" using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; @@ -34,9 +34,8 @@ Sapphire::World::Territory::Housing::HousingInteriorTerritory::HousingInteriorTe uint16_t territoryTypeId, uint32_t guId, const std::string& internalName, - const std::string& contentName, - FrameworkPtr pFw ) : - Territory( territoryTypeId, guId, internalName, contentName, pFw ), + const std::string& contentName ) : + Territory( territoryTypeId, guId, internalName, contentName ), m_landIdent( ident ) { } @@ -52,7 +51,7 @@ bool Sapphire::World::Territory::Housing::HousingInteriorTerritory::init() void Sapphire::World::Territory::Housing::HousingInteriorTerritory::onPlayerZoneIn( Entity::Player& player ) { - auto pHousingMgr = m_pFw->get< HousingMgr >(); + auto& housingMgr = Common::Service< HousingMgr >::ref(); Logger::debug( "HousingInteriorTerritory::onPlayerZoneIn: Territory#{0}|{1}, Entity#{2}", getGuId(), getTerritoryTypeId(), player.getId() ); @@ -63,8 +62,8 @@ void Sapphire::World::Territory::Housing::HousingInteriorTerritory::onPlayerZone indoorInitPacket->data().u3 = 0; indoorInitPacket->data().u4 = 0; - auto landSetId = pHousingMgr->toLandSetId( static_cast< uint16_t >( m_landIdent.territoryTypeId ), static_cast< uint8_t >( m_landIdent.wardNum ) ); - auto pLand = pHousingMgr->getHousingZoneByLandSetId( landSetId )->getLand( static_cast< uint8_t >( m_landIdent.landId ) ); + auto landSetId = housingMgr.toLandSetId( static_cast< uint16_t >( m_landIdent.territoryTypeId ), static_cast< uint8_t >( m_landIdent.wardNum ) ); + auto pLand = housingMgr.getHousingZoneByLandSetId( landSetId )->getLand( static_cast< uint8_t >( m_landIdent.landId ) ); auto pHouse = pLand->getHouse(); for( auto i = 0; i < 10; i++ ) @@ -115,7 +114,7 @@ const Common::LandIdent Sapphire::World::Territory::Housing::HousingInteriorTerr void Sapphire::World::Territory::Housing::HousingInteriorTerritory::updateHousingObjects() { - auto housingMgr = m_pFw->get< Manager::HousingMgr >(); + auto& housingMgr = Common::Service< Manager::HousingMgr >::ref(); auto containerIds = { InventoryType::HousingInteriorPlacedItems1, @@ -135,7 +134,7 @@ void Sapphire::World::Territory::Housing::HousingInteriorTerritory::updateHousin memset( &obj, 0x0, sizeof( Common::HousingObject ) ); m_housingObjects.fill( obj ); - auto containers = housingMgr->getEstateInventory( getLandIdent() ); + auto containers = housingMgr.getEstateInventory( getLandIdent() ); uint8_t containerIdx = 0; for( auto containerId : containerIds ) @@ -152,7 +151,7 @@ void Sapphire::World::Territory::Housing::HousingInteriorTerritory::updateHousin auto offset = item.first + ( containerIdx * 50 ); - auto obj = housingMgr->getYardObjectForItem( housingItem ); + auto obj = housingMgr.getYardObjectForItem( housingItem ); m_housingObjects[static_cast< size_t >( offset ) ] = obj; } @@ -166,10 +165,10 @@ void Sapphire::World::Territory::Housing::HousingInteriorTerritory::spawnHousing uint16_t containerType, Inventory::HousingItemPtr item ) { - auto housingMgr = m_pFw->get< Manager::HousingMgr >(); + auto& housingMgr = Common::Service< Manager::HousingMgr >::ref(); auto offset = ( containerIdx * 50 ) + slot; - auto obj = housingMgr->getYardObjectForItem( item ); + auto obj = housingMgr.getYardObjectForItem( item ); m_housingObjects[ static_cast< size_t >( offset ) ] = obj; diff --git a/src/world/Territory/Housing/HousingInteriorTerritory.h b/src/world/Territory/Housing/HousingInteriorTerritory.h index 3ea97ae4..49bc0f9e 100644 --- a/src/world/Territory/Housing/HousingInteriorTerritory.h +++ b/src/world/Territory/Housing/HousingInteriorTerritory.h @@ -11,8 +11,7 @@ namespace Sapphire::World::Territory::Housing HousingInteriorTerritory( Common::LandIdent ident, uint16_t territoryTypeId, uint32_t guId, const std::string& internalName, - const std::string& contentName, - FrameworkPtr pFw ); + const std::string& contentName ); virtual ~HousingInteriorTerritory(); diff --git a/src/world/Territory/HousingZone.cpp b/src/world/Territory/HousingZone.cpp index 99ab1a1d..8443da8e 100644 --- a/src/world/Territory/HousingZone.cpp +++ b/src/world/Territory/HousingZone.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include "Actor/Player.h" #include "Actor/Actor.h" @@ -20,7 +21,6 @@ #include "Forwards.h" #include "HousingZone.h" #include "Manager/HousingMgr.h" -#include "Framework.h" using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; @@ -31,13 +31,11 @@ Sapphire::HousingZone::HousingZone( uint8_t wardNum, uint16_t territoryTypeId, uint32_t guId, const std::string& internalName, - const std::string& contentName, - FrameworkPtr pFw ) : - Territory( territoryTypeId, guId, internalName, contentName, pFw ), + const std::string& contentName ) : + Territory( territoryTypeId, guId, internalName, contentName ), m_wardNum( wardNum ), m_territoryTypeId( territoryTypeId ), - m_landSetId( ( static_cast< uint32_t >( territoryTypeId ) << 16 ) | wardNum ), - m_pFw( pFw ) + m_landSetId( ( static_cast< uint32_t >( territoryTypeId ) << 16 ) | wardNum ) { } @@ -45,12 +43,12 @@ Sapphire::HousingZone::HousingZone( uint8_t wardNum, bool Sapphire::HousingZone::init() { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); { - auto res = pDb->query( "SELECT * FROM landset WHERE landsetid = " + std::to_string( m_landSetId ) ); + auto res = db.query( "SELECT * FROM landset WHERE landsetid = " + std::to_string( m_landSetId ) ); if( !res->next() ) { - pDb->directExecute( "INSERT INTO landset ( landsetid ) VALUES ( " + std::to_string( m_landSetId ) + " );" ); + db.directExecute( "INSERT INTO landset ( landsetid ) VALUES ( " + std::to_string( m_landSetId ) + " );" ); } } @@ -65,8 +63,8 @@ bool Sapphire::HousingZone::init() else if( m_territoryTypeId == 641 ) housingIndex = 3; - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - auto info = pExdData->get< Sapphire::Data::HousingLandSet >( housingIndex ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto info = exdData.get< Sapphire::Data::HousingLandSet >( housingIndex ); // build yard objects array indices int16_t cursor = -1; @@ -114,8 +112,8 @@ bool Sapphire::HousingZone::init() arr.fill( obj ); } - auto housingMgr = m_pFw->get< World::Manager::HousingMgr >(); - auto landCache = housingMgr->getLandCacheMap(); + auto& housingMgr = Common::Service< World::Manager::HousingMgr >::ref(); + auto landCache = housingMgr.getLandCacheMap(); // make sure the landset exists auto landSetCache = landCache.find( m_landSetId ); @@ -128,15 +126,15 @@ bool Sapphire::HousingZone::init() // init the lands for( HousingMgr::LandCacheEntry& entry : landSetCache->second ) { - auto land = make_Land( m_territoryTypeId, getWardNum(), entry.m_landId, m_landSetId, info, m_pFw ); + auto land = make_Land( m_territoryTypeId, getWardNum(), entry.m_landId, m_landSetId, info ); // setup house if( entry.m_houseId ) { auto house = make_House( entry.m_houseId, m_landSetId, land->getLandIdent(), entry.m_estateName, - entry.m_estateComment, m_pFw ); + entry.m_estateComment ); - housingMgr->updateHouseModels( house ); + housingMgr.updateHouseModels( house ); land->setHouse( house ); } @@ -325,8 +323,8 @@ Sapphire::Entity::EventObjectPtr Sapphire::HousingZone::registerEstateEntranceEO void Sapphire::HousingZone::updateYardObjects( Sapphire::Common::LandIdent ident ) { - auto housingMgr = m_pFw->get< World::Manager::HousingMgr >(); - auto& landStorage = housingMgr->getEstateInventory( ident ); + auto& housingMgr = Common::Service< World::Manager::HousingMgr >::ref(); + auto& landStorage = housingMgr.getEstateInventory( ident ); auto yardContainer = landStorage[ InventoryType::HousingExteriorPlacedItems ]; @@ -339,7 +337,7 @@ void Sapphire::HousingZone::updateYardObjects( Sapphire::Common::LandIdent ident assert( housingItem ); auto idx = item.first + arrayBounds.first; - m_yardObjects[ yardMapIndex ][ idx ] = housingMgr->getYardObjectForItem( housingItem ); + m_yardObjects[ yardMapIndex ][ idx ] = housingMgr.getYardObjectForItem( housingItem ); } } diff --git a/src/world/Territory/HousingZone.h b/src/world/Territory/HousingZone.h index 804624ed..112a452a 100644 --- a/src/world/Territory/HousingZone.h +++ b/src/world/Territory/HousingZone.h @@ -31,8 +31,7 @@ namespace Sapphire uint16_t territoryTypeId, uint32_t guId, const std::string& internalName, - const std::string& contentName, - FrameworkPtr pFw ); + const std::string& contentName ); virtual ~HousingZone() = default; @@ -87,7 +86,6 @@ namespace Sapphire YardObjectSubdivisionArray m_yardObjects; YardObjectArrayBoundsArray m_yardObjectArrayBounds; - FrameworkPtr m_pFw; }; } diff --git a/src/world/Territory/InstanceContent.cpp b/src/world/Territory/InstanceContent.cpp index 1f902685..2bdd3bf8 100644 --- a/src/world/Territory/InstanceContent.cpp +++ b/src/world/Territory/InstanceContent.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include "Event/Director.h" #include "Event/EventDefs.h" @@ -20,7 +21,6 @@ #include "Event/EventHandler.h" #include "InstanceContent.h" -#include "Framework.h" using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; @@ -32,9 +32,8 @@ Sapphire::InstanceContent::InstanceContent( std::shared_ptr< Sapphire::Data::Ins uint32_t guId, const std::string& internalName, const std::string& contentName, - uint32_t instanceContentId, - FrameworkPtr pFw ) : - Territory( static_cast< uint16_t >( territoryType ), guId, internalName, contentName, pFw ), + uint32_t instanceContentId ) : + Territory( static_cast< uint16_t >( territoryType ), guId, internalName, contentName ), Director( Event::Director::InstanceContent, instanceContentId ), m_instanceConfiguration( pInstanceConfiguration ), m_instanceContentId( instanceContentId ), @@ -51,8 +50,8 @@ bool Sapphire::InstanceContent::init() if( !Territory::init() ) return false; - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onInstanceInit( getAsInstanceContent() ); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + scriptMgr.onInstanceInit( getAsInstanceContent() ); return true; } @@ -157,8 +156,8 @@ void Sapphire::InstanceContent::onUpdate( uint64_t tickCount ) break; } - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onInstanceUpdate( getAsInstanceContent(), tickCount ); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + scriptMgr.onInstanceUpdate( getAsInstanceContent(), tickCount ); m_lastUpdate = tickCount; } @@ -312,8 +311,8 @@ void Sapphire::InstanceContent::onRegisterEObj( Entity::EventObjectPtr object ) if( object->getObjectId() == 2000182 ) // start m_pEntranceEObj = object; - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - auto objData = pExdData->get< Sapphire::Data::EObj >( object->getObjectId() ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto objData = exdData.get< Sapphire::Data::EObj >( object->getObjectId() ); if( objData ) // todo: data should be renamed to eventId m_eventIdToObjectMap[ objData->data ] = object; @@ -385,8 +384,8 @@ void Sapphire::InstanceContent::onTalk( Sapphire::Entity::Player& player, uint32 void Sapphire::InstanceContent::onEnterTerritory( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) { - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onInstanceEnterTerritory( getAsInstanceContent(), player, eventId, param1, param2 ); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + scriptMgr.onInstanceEnterTerritory( getAsInstanceContent(), player, eventId, param1, param2 ); if( !hasPlayerPreviouslySpawned( player ) ) { diff --git a/src/world/Territory/InstanceContent.h b/src/world/Territory/InstanceContent.h index a34ac2fb..37af2446 100644 --- a/src/world/Territory/InstanceContent.h +++ b/src/world/Territory/InstanceContent.h @@ -28,8 +28,7 @@ namespace Sapphire uint32_t guId, const std::string& internalName, const std::string& contentName, - uint32_t instanceContentId, - FrameworkPtr pFw ); + uint32_t instanceContentId ); virtual ~InstanceContent(); diff --git a/src/world/Territory/InstanceObjectCache.cpp b/src/world/Territory/InstanceObjectCache.cpp index e4e18815..202d6010 100644 --- a/src/world/Territory/InstanceObjectCache.cpp +++ b/src/world/Territory/InstanceObjectCache.cpp @@ -1,6 +1,5 @@ #include "InstanceObjectCache.h" #include "Exd/ExdDataGenerated.h" -#include #include #include @@ -13,13 +12,13 @@ #include #include +#include -Sapphire::InstanceObjectCache::InstanceObjectCache( std::shared_ptr< Framework > pFramework ) : - m_pFramework( pFramework ) +Sapphire::InstanceObjectCache::InstanceObjectCache() { - auto pExd = pFramework->get< Sapphire::Data::ExdDataGenerated >(); - auto idList = pExd->getTerritoryTypeIdList(); + auto& exdData = Common::Service< Sapphire::Data::ExdDataGenerated >::ref(); + auto idList = exdData.getTerritoryTypeIdList(); size_t count = 0; for( const auto& id : idList ) @@ -28,7 +27,7 @@ Sapphire::InstanceObjectCache::InstanceObjectCache( std::shared_ptr< Framework > if( count++ % 10 == 0 ) std::cout << "."; - auto territoryType = pExd->get< Sapphire::Data::TerritoryType >( id ); + auto territoryType = exdData.get< Sapphire::Data::TerritoryType >( id ); if( !territoryType ) continue; @@ -50,8 +49,8 @@ Sapphire::InstanceObjectCache::InstanceObjectCache( std::shared_ptr< Framework > try { - bgFile = pExd->getGameData()->getFile( bgLgbPath ); - planmap_file = pExd->getGameData()->getFile( planmapLgbPath ); + bgFile = exdData.getGameData()->getFile( bgLgbPath ); + planmap_file = exdData.getGameData()->getFile( planmapLgbPath ); } catch( std::runtime_error& ) { diff --git a/src/world/Territory/InstanceObjectCache.h b/src/world/Territory/InstanceObjectCache.h index 0476adb6..efb448c4 100644 --- a/src/world/Territory/InstanceObjectCache.h +++ b/src/world/Territory/InstanceObjectCache.h @@ -66,7 +66,7 @@ namespace Sapphire using ExitRangePtr = std::shared_ptr< LGB_EXIT_RANGE_ENTRY >; using PopRangePtr = std::shared_ptr< LGB_POP_RANGE_ENTRY >; - explicit InstanceObjectCache( std::shared_ptr< Framework > pFramework ); + InstanceObjectCache(); ~InstanceObjectCache() = default; MapRangePtr getMapRange( uint16_t zoneId, uint32_t mapRangeId ); diff --git a/src/world/Territory/Land.cpp b/src/world/Territory/Land.cpp index bb11a578..fe7f8771 100644 --- a/src/world/Territory/Land.cpp +++ b/src/world/Territory/Land.cpp @@ -12,6 +12,7 @@ #include #include +#include #include "Actor/Player.h" #include "Inventory/ItemContainer.h" @@ -21,13 +22,12 @@ #include "Forwards.h" #include "Land.h" -#include "Framework.h" #include "House.h" using namespace Sapphire::Common; Sapphire::Land::Land( uint16_t territoryTypeId, uint8_t wardNum, uint8_t landId, uint32_t landSetId, - Sapphire::Data::HousingLandSetPtr info, FrameworkPtr pFw ) : + Sapphire::Data::HousingLandSetPtr info ) : m_currentPrice( 0 ), m_minPrice( 0 ), m_nextDrop( Util::getTimeSeconds() + 21600 ), @@ -38,8 +38,7 @@ Sapphire::Land::Land( uint16_t territoryTypeId, uint8_t wardNum, uint8_t landId, m_fcIcon( 0 ), m_fcIconColor( 0 ), m_fcId( 0 ), - m_iconAddIcon( 0 ), - m_pFw( pFw ) + m_iconAddIcon( 0 ) { memset( &m_tag, 0x00, 3 ); @@ -63,8 +62,8 @@ void Sapphire::Land::init( Common::LandType type, Common::HouseSize size, Common m_currentPrice = currentPrice; m_ownerId = ownerId; - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - auto info = pExdData->get< Sapphire::Data::HousingMapMarkerInfo >( m_landIdent.territoryTypeId, m_landIdent.landId ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto info = exdData.get< Sapphire::Data::HousingMapMarkerInfo >( m_landIdent.territoryTypeId, m_landIdent.landId ); if( info ) { m_mapMarkerPosition.x = info->x; @@ -211,15 +210,15 @@ void Sapphire::Land::updateLandDb() houseId = getHouse()->getId(); // todo: change to prepared statement - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - pDb->directExecute( "UPDATE land SET status = " + std::to_string( m_state ) - + ", LandPrice = " + std::to_string( getCurrentPrice() ) - + ", UpdateTime = " + std::to_string( getDevaluationTime() ) - + ", OwnerId = " + std::to_string( getOwnerId() ) - + ", HouseId = " + std::to_string( houseId ) - + ", Type = " + std::to_string( static_cast< uint32_t >( m_type ) ) //TODO: add house id + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + db.directExecute( "UPDATE land SET status = " + std::to_string( m_state ) + + ", LandPrice = " + std::to_string( getCurrentPrice() ) + + ", UpdateTime = " + std::to_string( getDevaluationTime() ) + + ", OwnerId = " + std::to_string( getOwnerId() ) + + ", HouseId = " + std::to_string( houseId ) + + ", Type = " + std::to_string( static_cast< uint32_t >( m_type ) ) //TODO: add house id + " WHERE LandSetId = " + std::to_string( m_landSetId ) - + " AND LandId = " + std::to_string( m_landIdent.landId ) + ";" ); + + " AND LandId = " + std::to_string( m_landIdent.landId ) + ";" ); if( auto house = getHouse() ) house->updateHouseDb(); diff --git a/src/world/Territory/Land.h b/src/world/Territory/Land.h index 213cfe3c..48f696e2 100644 --- a/src/world/Territory/Land.h +++ b/src/world/Territory/Land.h @@ -16,7 +16,7 @@ namespace Sapphire public: Land( uint16_t zoneId, uint8_t wardNum, uint8_t landId, uint32_t landSetId, - Sapphire::Data::HousingLandSetPtr info, FrameworkPtr pFw ); + Sapphire::Data::HousingLandSetPtr info ); virtual ~Land(); void init( Common::LandType type, Common::HouseSize size, Common::HouseStatus state, uint32_t currentPrice, uint64_t ownerId, uint64_t houseId ); @@ -100,8 +100,6 @@ namespace Sapphire //information char fcTag[7]; uint8_t m_tag[3]; - - FrameworkPtr m_pFw; }; } diff --git a/src/world/Territory/QuestBattle.cpp b/src/world/Territory/QuestBattle.cpp index a5dd3a0a..7db97014 100644 --- a/src/world/Territory/QuestBattle.cpp +++ b/src/world/Territory/QuestBattle.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include "Event/Director.h" #include "Event/EventDefs.h" @@ -22,7 +23,6 @@ #include "Event/EventHandler.h" #include "QuestBattle.h" -#include "Framework.h" using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; @@ -34,9 +34,8 @@ Sapphire::QuestBattle::QuestBattle( std::shared_ptr< Sapphire::Data::QuestBattle uint32_t guId, const std::string& internalName, const std::string& contentName, - uint32_t questBattleId, - FrameworkPtr pFw ) : - Territory( static_cast< uint16_t >( territoryType ), guId, internalName, contentName, pFw ), + uint32_t questBattleId ) : + Territory( static_cast< uint16_t >( territoryType ), guId, internalName, contentName ), Director( Event::Director::QuestBattle, questBattleId ), m_pBattleDetails( pBattleDetails ), m_questBattleId( questBattleId ), @@ -51,8 +50,8 @@ bool Sapphire::QuestBattle::init() if( !Territory::init() ) return false; - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onInstanceInit( getAsQuestBattle() ); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + scriptMgr.onInstanceInit( getAsQuestBattle() ); return true; } @@ -101,6 +100,8 @@ void Sapphire::QuestBattle::onUpdate( uint64_t tickCount ) if( !m_pPlayer ) return; + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + switch( m_state ) { case Created: @@ -122,8 +123,8 @@ void Sapphire::QuestBattle::onUpdate( uint64_t tickCount ) return; onEnterSceneFinish( *m_pPlayer ); - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onDutyCommence( *this, *m_pPlayer ); + + scriptMgr.onDutyCommence( *this, *m_pPlayer ); m_state = DutyInProgress; m_instanceExpireTime = Util::getTimeSeconds() + ( m_pBattleDetails->timeLimit * 60u ); @@ -157,8 +158,7 @@ void Sapphire::QuestBattle::onUpdate( uint64_t tickCount ) } } - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onInstanceUpdate( getAsQuestBattle(), tickCount ); + scriptMgr.onInstanceUpdate( getAsQuestBattle(), tickCount ); m_lastUpdate = tickCount; } @@ -285,8 +285,8 @@ void Sapphire::QuestBattle::onRegisterEObj( Entity::EventObjectPtr object ) if( object->getName() != "none" ) m_eventObjectMap[ object->getName() ] = object; - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - auto objData = pExdData->get< Sapphire::Data::EObj >( object->getObjectId() ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto objData = exdData.get< Sapphire::Data::EObj >( object->getObjectId() ); if( objData ) // todo: data should be renamed to eventId m_eventIdToObjectMap[ objData->data ] = object; @@ -305,8 +305,9 @@ void Sapphire::QuestBattle::onBeforePlayerZoneIn( Sapphire::Entity::Player& play { player.setRot( PI ); player.setPos( { 0.f, 0.f, 0.f } ); - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onPlayerSetup( *this, player ); + + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + scriptMgr.onPlayerSetup( *this, player ); player.resetObjSpawnIndex(); } @@ -338,8 +339,8 @@ void Sapphire::QuestBattle::onTalk( Sapphire::Entity::Player& player, uint32_t e void Sapphire::QuestBattle::onEnterTerritory( Entity::Player& player, uint32_t eventId, uint16_t param1, uint16_t param2 ) { - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onInstanceEnterTerritory( getAsQuestBattle(), player, eventId, param1, param2 ); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + scriptMgr.onInstanceEnterTerritory( getAsQuestBattle(), player, eventId, param1, param2 ); } void Sapphire::QuestBattle::clearDirector( Entity::Player& player ) @@ -364,8 +365,10 @@ void Sapphire::QuestBattle::success() [ & ]( Entity::Player& player, const Event::SceneResult& result ) { player.eventFinish( getDirectorId(), 1 ); - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); - pScriptMgr->onDutyComplete( getAsQuestBattle(), *m_pPlayer ); + + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); + scriptMgr.onDutyComplete( getAsQuestBattle(), *m_pPlayer ); + player.exitInstance(); } ); diff --git a/src/world/Territory/QuestBattle.h b/src/world/Territory/QuestBattle.h index 4553fe06..899a6c6a 100644 --- a/src/world/Territory/QuestBattle.h +++ b/src/world/Territory/QuestBattle.h @@ -20,8 +20,7 @@ namespace Sapphire uint32_t guId, const std::string& internalName, const std::string& contentName, - uint32_t questBattleId, - FrameworkPtr pFw ); + uint32_t questBattleId ); virtual ~QuestBattle() = default; diff --git a/src/world/Territory/Territory.cpp b/src/world/Territory/Territory.cpp index 910a7785..a2e71d4d 100644 --- a/src/world/Territory/Territory.cpp +++ b/src/world/Territory/Territory.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include "Territory.h" #include "InstanceContent.h" @@ -40,7 +41,6 @@ #include "ForwardsZone.h" #include "ServerMgr.h" #include "CellHandler.h" -#include "Framework.h" #include "Manager/RNGMgr.h" #include "Manager/NaviMgr.h" @@ -66,16 +66,14 @@ Sapphire::Territory::Territory() : } Sapphire::Territory::Territory( uint16_t territoryTypeId, uint32_t guId, - const std::string& internalName, const std::string& placeName, - FrameworkPtr pFw ) : + const std::string& internalName, const std::string& placeName ) : m_currentWeather( Weather::FairSkies ), m_nextEObjId( 0x400D0000 ), m_nextActorId( 0x500D0000 ), - m_pFw( pFw ), m_lastUpdate( 0 ), m_lastActivityTime( Util::getTimeMs() ) { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); m_guId = guId; m_territoryTypeId = territoryTypeId; @@ -84,7 +82,7 @@ Sapphire::Territory::Territory( uint16_t territoryTypeId, uint32_t guId, m_lastMobUpdate = 0; m_weatherOverride = Weather::None; - m_territoryTypeInfo = pExdData->get< Sapphire::Data::TerritoryType >( territoryTypeId ); + m_territoryTypeInfo = exdData.get< Sapphire::Data::TerritoryType >( territoryTypeId ); m_bgPath = m_territoryTypeInfo->bg; loadWeatherRates(); @@ -98,13 +96,13 @@ void Sapphire::Territory::loadWeatherRates() if( !m_territoryTypeInfo ) return; - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); - uint8_t weatherRateId = m_territoryTypeInfo->weatherRate > pExdData->getWeatherRateIdList().size() ? + uint8_t weatherRateId = m_territoryTypeInfo->weatherRate > exdData.getWeatherRateIdList().size() ? uint8_t{ 0 } : m_territoryTypeInfo->weatherRate; uint8_t sumPc = 0; - auto weatherRateFields = pExdData->m_WeatherRateDat.get_row( weatherRateId ); + auto weatherRateFields = exdData.m_WeatherRateDat.get_row( weatherRateId ); for( size_t i = 0; i < 16; ) { int32_t weatherId = std::get< int32_t >( weatherRateFields[ i ] ); @@ -122,17 +120,17 @@ Sapphire::Territory::~Territory() = default; bool Sapphire::Territory::init() { - auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); + auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); - if( pScriptMgr->onZoneInit( shared_from_this() ) ) + if( scriptMgr.onZoneInit( shared_from_this() ) ) { // all good } - auto pNaviMgr = m_pFw->get< World::Manager::NaviMgr >(); - pNaviMgr->setupTerritory( m_territoryTypeInfo->bg ); + auto& naviMgr = Common::Service< World::Manager::NaviMgr >::ref(); + naviMgr.setupTerritory( m_territoryTypeInfo->bg ); - m_pNaviProvider = pNaviMgr->getNaviProvider( m_territoryTypeInfo->bg ); + m_pNaviProvider = naviMgr.getNaviProvider( m_territoryTypeInfo->bg ); if( !m_pNaviProvider ) { @@ -251,7 +249,6 @@ void Sapphire::Territory::pushActor( Entity::ActorPtr pActor ) agentId = m_pNaviProvider->addAgent( *pPlayer ); pPlayer->setAgentId( agentId ); - auto pServerZone = m_pFw->get< World::ServerMgr >(); m_playerMap[ pPlayer->getId() ] = pPlayer; updateCellActivity( cx, cy, 2 ); } @@ -315,11 +312,12 @@ void Sapphire::Territory::removeActor( Entity::ActorPtr pActor ) void Sapphire::Territory::queuePacketForRange( Entity::Player& sourcePlayer, uint32_t range, Network::Packets::FFXIVPacketBasePtr pPacketEntry ) { - auto pTeriMgr = m_pFw->get< TerritoryMgr >(); - if( pTeriMgr->isPrivateTerritory( getTerritoryTypeId() ) ) + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); + if( teriMgr.isPrivateTerritory( getTerritoryTypeId() ) ) return; - auto pServerZone = m_pFw->get< World::ServerMgr >(); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + for( auto entry : m_playerMap ) { auto player = entry.second; @@ -329,7 +327,7 @@ void Sapphire::Territory::queuePacketForRange( Entity::Player& sourcePlayer, uin if( ( distance < range ) && sourcePlayer.getId() != player->getId() ) { - auto pSession = pServerZone->getSession( player->getId() ); + auto pSession = serverMgr.getSession( player->getId() ); //pPacketEntry->setValAt< uint32_t >( 0x08, player->getId() ); if( pSession ) pSession->getZoneConnection()->queueOutPacket( pPacketEntry ); @@ -341,18 +339,19 @@ void Sapphire::Territory::queuePacketForZone( Entity::Player& sourcePlayer, Network::Packets::FFXIVPacketBasePtr pPacketEntry, bool forSelf ) { - auto pTeriMgr = m_pFw->get< TerritoryMgr >(); - if( pTeriMgr->isPrivateTerritory( getTerritoryTypeId() ) ) + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); + if( teriMgr.isPrivateTerritory( getTerritoryTypeId() ) ) return; - auto pServerZone = m_pFw->get< World::ServerMgr >(); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); + for( auto entry : m_playerMap ) { auto player = entry.second; if( ( sourcePlayer.getId() != player->getId() ) || ( ( sourcePlayer.getId() == player->getId() ) && forSelf ) ) { - auto pSession = pServerZone->getSession( player->getId() ); + auto pSession = serverMgr.getSession( player->getId() ); if( pSession ) pSession->getZoneConnection()->queueOutPacket( pPacketEntry ); } @@ -684,14 +683,14 @@ void Sapphire::Territory::updateInRangeSet( Entity::ActorPtr pActor, Cell* pCell if( pCell == nullptr ) return; - auto pTeriMgr = m_pFw->get< TerritoryMgr >(); + auto& teriMgr = Common::Service< TerritoryMgr >::ref(); // TODO: make sure gms can overwrite this. Potentially temporary solution - if( pTeriMgr->isPrivateTerritory( getTerritoryTypeId() ) ) + if( teriMgr.isPrivateTerritory( getTerritoryTypeId() ) ) return; auto iter = pCell->m_actors.begin(); - float fRange = pTeriMgr->getInRangeDistance(); + float fRange = teriMgr.getInRangeDistance(); int32_t count = 0; while( iter != pCell->m_actors.end() ) { @@ -820,10 +819,10 @@ Sapphire::Data::TerritoryTypePtr Sapphire::Territory::getTerritoryTypeInfo() con bool Sapphire::Territory::loadSpawnGroups() { - auto pDb = m_pFw->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - auto stmt = pDb->getPreparedStatement( Db::ZoneDbStatements::ZONE_SEL_SPAWNGROUPS ); + auto& db = Common::Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmt = db.getPreparedStatement( Db::ZoneDbStatements::ZONE_SEL_SPAWNGROUPS ); stmt->setUInt( 1, getTerritoryTypeId() ); - auto res = pDb->query( stmt ); + auto res = db.query( stmt ); while( res->next() ) { @@ -840,11 +839,11 @@ bool Sapphire::Territory::loadSpawnGroups() res.reset(); stmt.reset(); - stmt = pDb->getPreparedStatement( Db::ZoneDbStatements::ZONE_SEL_SPAWNPOINTS ); + stmt = db.getPreparedStatement( Db::ZoneDbStatements::ZONE_SEL_SPAWNPOINTS ); for( auto& group : m_spawnGroups ) { stmt->setUInt( 1, group.getId() ); - auto res = pDb->query( stmt ); + auto res = db.query( stmt ); while( res->next() ) { @@ -865,8 +864,8 @@ bool Sapphire::Territory::loadSpawnGroups() void Sapphire::Territory::updateSpawnPoints() { - auto pRNGMgr = m_pFw->get< World::Manager::RNGMgr >(); - auto rng = pRNGMgr->getRandGenerator< float >( 0.f, PI * 2 ); + auto& RNGMgr = Common::Service< World::Manager::RNGMgr >::ref(); + auto rng = RNGMgr.getRandGenerator< float >( 0.f, PI * 2 ); for( auto& group : m_spawnGroups ) { @@ -874,9 +873,9 @@ void Sapphire::Territory::updateSpawnPoints() { if( !point->getLinkedBNpc() && ( Util::getTimeSeconds() - point->getTimeOfDeath() ) > 60 ) { - auto serverZone = m_pFw->get< World::ServerMgr >(); + auto& serverMgr = Common::Service< World::ServerMgr >::ref(); - auto bNpcTemplate = serverZone->getBNpcTemplate( group.getTemplateId() ); + auto bNpcTemplate = serverMgr.getBNpcTemplate( group.getTemplateId() ); if( !bNpcTemplate ) { @@ -891,7 +890,7 @@ void Sapphire::Territory::updateSpawnPoints() point->getPosZ(), rng.next(), group.getLevel(), - group.getMaxHp(), shared_from_this(), m_pFw ); + group.getMaxHp(), shared_from_this() ); point->setLinkedBNpc( pBNpc ); pushActor( pBNpc ); @@ -916,8 +915,8 @@ Sapphire::Entity::BNpcPtr uint32_t hp, uint16_t nameId, uint32_t directorId, uint8_t bnpcType ) { - auto pExdData = m_pFw->get< Data::ExdDataGenerated >(); - auto levelData = pExdData->get< Sapphire::Data::Level >( levelId ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto levelData = exdData.get< Sapphire::Data::Level >( levelId ); if( !levelData ) return nullptr; @@ -926,7 +925,7 @@ Sapphire::Entity::BNpcPtr auto bnpcBaseId = levelData->object; - auto bnpcBaseData = pExdData->get< Sapphire::Data::BNpcBase >( bnpcBaseId ); + auto bnpcBaseData = exdData.get< Sapphire::Data::BNpcBase >( bnpcBaseId ); if( !bnpcBaseData ) return nullptr; @@ -938,7 +937,7 @@ Sapphire::Entity::BNpcPtr std::vector< uint8_t > customize( 26 ); if( bnpcBaseData->bNpcCustomize != 0 ) { - auto bnpcCustomizeData = pExdData->get< Sapphire::Data::BNpcCustomize >( bnpcBaseData->bNpcCustomize ); + auto bnpcCustomizeData = exdData.get< Sapphire::Data::BNpcCustomize >( bnpcBaseData->bNpcCustomize ); if( bnpcCustomizeData ) { customize[0] = bnpcCustomizeData->race; @@ -975,7 +974,7 @@ Sapphire::Entity::BNpcPtr uint64_t modeloff = 0; if( bnpcBaseData->npcEquip != 0 ) { - auto npcEquipData = pExdData->get< Sapphire::Data::NpcEquip >( bnpcBaseData->npcEquip ); + auto npcEquipData = exdData.get< Sapphire::Data::NpcEquip >( bnpcBaseData->npcEquip ); if( npcEquipData ) { modelMain = npcEquipData->modelMainHand; @@ -998,7 +997,7 @@ Sapphire::Entity::BNpcPtr bnpcBaseData->modelChara, 0, &models[0], &customize[0] ); auto bnpc = std::make_shared< Entity::BNpc >( getNextActorId(), tmp, levelData->x, levelData->y, levelData->z, - levelData->yaw, level, hp, shared_from_this(), m_pFw ); + levelData->yaw, level, hp, shared_from_this() ); bnpc->setDirectorId( directorId ); bnpc->setLevelId( levelId ); diff --git a/src/world/Territory/Territory.h b/src/world/Territory/Territory.h index 34258d29..47aa51ae 100644 --- a/src/world/Territory/Territory.h +++ b/src/world/Territory/Territory.h @@ -58,7 +58,6 @@ namespace Sapphire uint32_t m_nextEObjId; uint32_t m_nextActorId; - FrameworkPtr m_pFw; std::vector< Entity::SpawnGroup > m_spawnGroups; @@ -71,7 +70,7 @@ namespace Sapphire Territory(); Territory( uint16_t territoryTypeId, uint32_t guId, const std::string& internalName, - const std::string& placeName, FrameworkPtr pFw ); + const std::string& placeName ); virtual ~Territory(); diff --git a/src/world/mainGameServer.cpp b/src/world/mainGameServer.cpp index 2c77ea66..a8f29f3d 100644 --- a/src/world/mainGameServer.cpp +++ b/src/world/mainGameServer.cpp @@ -1,20 +1,22 @@ #include #include "ServerMgr.h" -#include #include +#include using namespace Sapphire; using namespace Sapphire::World; +[[maybe_unused]] Common::Util::CrashHandler crashHandler; int main( int32_t argc, char* argv[] ) { - auto pFramework = make_Framework(); - auto pServer = std::make_shared< ServerMgr >( "world.ini", pFramework ); - pFramework->set< ServerMgr >( pServer ); + auto pServer = std::make_shared< ServerMgr >( "world.ini" ); + + Common::Service< ServerMgr >::set( pServer ); + pServer->run( argc, argv ); return 0; }