From 4d9802bdbb49effe556ae9b3634b7675e41a6bcd Mon Sep 17 00:00:00 2001 From: NotAdam Date: Sat, 29 Dec 2018 13:05:13 +1100 Subject: [PATCH] it works (again!) --- src/world/Actor/PlayerSql.cpp | 2 +- src/world/Inventory/HousingItem.cpp | 4 +- src/world/Inventory/HousingItem.h | 2 +- src/world/Inventory/ItemContainer.cpp | 4 +- src/world/Manager/HousingMgr.cpp | 75 +++++++++---------- src/world/Manager/InventoryMgr.cpp | 25 ++++--- src/world/Manager/InventoryMgr.h | 5 +- src/world/Manager/ItemMgr.cpp | 2 - .../Network/Handlers/ClientTriggerHandler.cpp | 20 ++--- src/world/Network/Handlers/PacketHandlers.cpp | 10 ++- src/world/ServerMgr.cpp | 4 +- .../Housing/HousingInteriorTerritory.cpp | 4 +- src/world/Territory/HousingZone.cpp | 8 +- 13 files changed, 81 insertions(+), 84 deletions(-) diff --git a/src/world/Actor/PlayerSql.cpp b/src/world/Actor/PlayerSql.cpp index 2510b7ce..3071f466 100644 --- a/src/world/Actor/PlayerSql.cpp +++ b/src/world/Actor/PlayerSql.cpp @@ -589,7 +589,7 @@ Sapphire::ItemPtr Sapphire::Entity::Player::createItem( uint32_t catalogId, uint uint8_t flags = 0; - ItemPtr pItem = make_Item( Items::Util::getNextUId(), catalogId, m_pFw ); + ItemPtr pItem = make_Item( itemMgr->getNextUId(), catalogId, m_pFw ); pItem->setStackSize( quantity ); diff --git a/src/world/Inventory/HousingItem.cpp b/src/world/Inventory/HousingItem.cpp index 15352dab..a07282df 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 ) : - Sapphire::Item( uId, catalogId, false ) +Sapphire::Inventory::HousingItem::HousingItem( uint64_t uId, uint32_t catalogId, FrameworkPtr pFw ) : + Sapphire::Item( uId, catalogId, pFw, false ) { m_stackSize = 1; m_spiritBond = 1; diff --git a/src/world/Inventory/HousingItem.h b/src/world/Inventory/HousingItem.h index d4fbe368..91c3426a 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 ); + HousingItem( uint64_t uId, uint32_t catalogId, FrameworkPtr pFw ); virtual ~HousingItem() = default; void setRot( uint16_t rot ); diff --git a/src/world/Inventory/ItemContainer.cpp b/src/world/Inventory/ItemContainer.cpp index ab73b40b..cd821092 100644 --- a/src/world/Inventory/ItemContainer.cpp +++ b/src/world/Inventory/ItemContainer.cpp @@ -43,7 +43,7 @@ void Sapphire::ItemContainer::removeItem( uint16_t slotId ) if( it != m_itemMap.end() ) { - if( m_removeItemOnContainerRemove ) + if( m_isPersistentStorage ) pDb->execute( "DELETE FROM charaglobalitem WHERE itemId = " + std::to_string( it->second->getUId() ) ); m_itemMap.erase( it ); @@ -115,7 +115,7 @@ bool Sapphire::ItemContainer::isMultiStorage() const bool Sapphire::ItemContainer::isPersistentStorage() const { - return m_removeItemOnContainerRemove; + return m_isPersistentStorage; } diff --git a/src/world/Manager/HousingMgr.cpp b/src/world/Manager/HousingMgr.cpp index 6dec5bc8..a11ebc04 100644 --- a/src/world/Manager/HousingMgr.cpp +++ b/src/world/Manager/HousingMgr.cpp @@ -75,9 +75,7 @@ Sapphire::World::Manager::HousingMgr::~HousingMgr() = default; bool Sapphire::World::Manager::HousingMgr::init() { - auto log = g_fw.get< Sapphire::Logger >(); - - log->info( "HousingMgr: Caching housing land init data" ); + Logger::info( "HousingMgr: Caching housing land init data" ); //LAND_SEL_ALL // 18 wards per territory, 4 territories @@ -85,7 +83,7 @@ bool Sapphire::World::Manager::HousingMgr::init() initLandCache(); - log->debug( "HousingMgr: Checking land counts" ); + Logger::debug( "HousingMgr: Checking land counts" ); uint32_t houseCount = 0; for( auto& landSet : m_landCache ) @@ -96,12 +94,12 @@ bool Sapphire::World::Manager::HousingMgr::init() if( landSet.second.size() != 60 ) { - log->fatal( "LandSet " + std::to_string( landSet.first ) + " is missing land entries. Only have " + std::to_string( count ) + " land entries." ); + Logger::fatal( "LandSet " + std::to_string( landSet.first ) + " is missing land entries. Only have " + std::to_string( count ) + " land entries." ); return false; } } - log->info( "HousingMgr: Cached " + std::to_string( houseCount ) + " houses" ); + Logger::info( "HousingMgr: Cached " + std::to_string( houseCount ) + " houses" ); ///// @@ -113,11 +111,9 @@ bool Sapphire::World::Manager::HousingMgr::init() bool Sapphire::World::Manager::HousingMgr::loadEstateInventories() { - auto log = g_fw.get< Sapphire::Logger >(); + Logger::info( "HousingMgr: Loading inventories for estates" ); - log->info( "HousingMgr: Loading inventories for estates" ); - - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto stmt = pDb->getPreparedStatement( Db::LAND_INV_SEL_ALL ); auto res = pDb->query( stmt ); @@ -134,7 +130,7 @@ bool Sapphire::World::Manager::HousingMgr::loadEstateInventories() auto stain = res->getUInt8( "stain" ); auto characterId = res->getUInt64( "CharacterId" ); - auto item = Inventory::make_HousingItem( itemId, catalogId ); + auto item = Inventory::make_HousingItem( itemId, catalogId, framework() ); item->setStain( stain ); item->setStackSize( 1 ); // todo: need to set the owner character id on the item @@ -162,15 +158,14 @@ bool Sapphire::World::Manager::HousingMgr::loadEstateInventories() itemCount++; } - log->debug( "HousingMgr: Loaded " + std::to_string( itemCount ) + " inventory items" ); + Logger::debug( "HousingMgr: Loaded " + std::to_string( itemCount ) + " inventory items" ); return true; } void Sapphire::World::Manager::HousingMgr::initLandCache() { - auto log = g_fw.get< Sapphire::Logger >(); - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto stmt = pDb->getPreparedStatement( Db::LAND_SEL_ALL ); auto res = pDb->query( stmt ); @@ -221,8 +216,8 @@ void Sapphire::World::Manager::HousingMgr::initLandCache() break; default: // this should never ever happen, if it does the db is fucked - log->error( "HousingMgr: Plot " + std::to_string( entry.m_landId ) + " in landset " + std::to_string( entry.m_landSetId ) + - " has an invalid land size, defaulting to cottage." ); + Logger::error( "HousingMgr: Plot " + std::to_string( entry.m_landId ) + " in landset " + std::to_string( entry.m_landSetId ) + + " has an invalid land size, defaulting to cottage." ); entry.m_maxPlacedExternalItems = 20; entry.m_maxPlacedInternalItems = 200; break; @@ -238,9 +233,9 @@ void Sapphire::World::Manager::HousingMgr::initLandCache() auto& containers = getEstateInventory( ident ); - auto makeContainer = [ &containers ]( Common::InventoryType type, uint16_t size ) + auto makeContainer = [ &containers, this ]( Common::InventoryType type, uint16_t size ) { - containers[ type ] = make_ItemContainer( type, size, "houseiteminventory", false, false ); + containers[ type ] = make_ItemContainer( type, size, "houseiteminventory", false, framework(), false ); }; uint16_t count = 0; @@ -270,7 +265,7 @@ void Sapphire::World::Manager::HousingMgr::initLandCache() uint64_t Sapphire::World::Manager::HousingMgr::getNextHouseId() { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto pQR = pDb->query( "SELECT MAX( HouseId ) FROM house" ); if( !pQR->next() ) @@ -555,15 +550,15 @@ 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 ); - auto extContainer = make_ItemContainer( InventoryType::HousingExteriorAppearance, itemMax.first, "houseiteminventory", true ); + auto intContainer = make_ItemContainer( InventoryType::HousingInteriorAppearance, itemMax.second, "houseiteminventory", true, framework() ); + auto extContainer = make_ItemContainer( InventoryType::HousingExteriorAppearance, itemMax.first, "houseiteminventory", true, framework() ); // add containers to inv collection auto& houseInventory = getEstateInventory( house->getLandIdent() ); houseInventory[ InventoryType::HousingInteriorAppearance ] = intContainer; houseInventory[ InventoryType::HousingExteriorAppearance ] = extContainer; - auto exdData = g_fw.get< Sapphire::Data::ExdDataGenerated >(); + auto exdData = framework()->get< Sapphire::Data::ExdDataGenerated >(); auto preset = exdData->get< Sapphire::Data::HousingPreset >( getItemAdditionalData( presetCatalogId ) ); if( !preset ) return false; @@ -604,7 +599,7 @@ bool Sapphire::World::Manager::HousingMgr::initHouseModels( Entity::Player& play } }; - auto invMgr = g_fw.get< InventoryMgr >(); + auto invMgr = framework()->get< InventoryMgr >(); // create and link items for( auto& destContainer : invMap ) @@ -633,7 +628,7 @@ bool Sapphire::World::Manager::HousingMgr::initHouseModels( Entity::Player& play void Sapphire::World::Manager::HousingMgr::createHouse( Sapphire::HousePtr house ) const { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto stmt = pDb->getPreparedStatement( Db::HOUSING_HOUSE_INS ); // LandSetId, HouseId, HouseName @@ -665,7 +660,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 ), "" ); + "Estate #" + std::to_string( ident.landId + 1 ), "", framework() ); pLand->setHouse( house ); @@ -854,7 +849,7 @@ void Sapphire::World::Manager::HousingMgr::sendEstateInventory( Entity::Player& if( needle == containers.end() ) return; - auto invMgr = g_fw.get< Manager::InventoryMgr >(); + auto invMgr = framework()->get< Manager::InventoryMgr >(); invMgr->sendInventoryContainer( player, needle->second ); } @@ -909,7 +904,7 @@ void Sapphire::World::Manager::HousingMgr::updateHouseModels( Sapphire::HousePtr } else { - g_fw.get< Logger >()->error( "Plot " + std::to_string( house->getLandIdent().landId ) + " has an invalid inventory configuration for outdoor appearance." ); + framework()->get< Logger >()->error( "Plot " + std::to_string( house->getLandIdent().landId ) + " has an invalid inventory configuration for outdoor appearance." ); } auto intContainer = containers.find( static_cast< uint16_t >( InventoryType::HousingInteriorAppearance ) ); @@ -923,13 +918,13 @@ void Sapphire::World::Manager::HousingMgr::updateHouseModels( Sapphire::HousePtr } else { - g_fw.get< Logger >()->error( "Plot " + std::to_string( house->getLandIdent().landId ) + " has an invalid inventory configuration for indoor appearance." ); + framework()->get< Logger >()->error( "Plot " + std::to_string( house->getLandIdent().landId ) + " has an invalid inventory configuration for indoor appearance." ); } } uint32_t Sapphire::World::Manager::HousingMgr::getItemAdditionalData( uint32_t catalogId ) { - auto pExdData = g_fw.get< Data::ExdDataGenerated >(); + auto pExdData = framework()->get< Data::ExdDataGenerated >(); auto info = pExdData->get< Sapphire::Data::Item >( catalogId ); return info->additionalData; } @@ -1001,7 +996,7 @@ void Sapphire::World::Manager::HousingMgr::reqPlaceHousingItem( Sapphire::Entity { auto tmpItem = player.dropInventoryItem( static_cast< Common::InventoryType >( containerId ), slotId ); - item = Inventory::make_HousingItem( tmpItem->getUId(), tmpItem->getId() ); + item = Inventory::make_HousingItem( tmpItem->getUId(), tmpItem->getId(), framework() ); // set params item->setPos( { @@ -1037,7 +1032,7 @@ bool Sapphire::World::Manager::HousingMgr::placeExternalItem( Entity::Player& pl Inventory::HousingItemPtr item, Common::LandIdent ident ) { - auto invMgr = g_fw.get< InventoryMgr >(); + auto invMgr = framework()->get< InventoryMgr >(); auto& container = getEstateInventory( ident )[ InventoryType::HousingExteriorPlacedItems ]; @@ -1070,7 +1065,7 @@ bool Sapphire::World::Manager::HousingMgr::placeExternalItem( Entity::Player& pl bool Sapphire::World::Manager::HousingMgr::placeInteriorItem( Entity::Player& player, Inventory::HousingItemPtr item ) { - auto invMgr = g_fw.get< InventoryMgr >(); + auto invMgr = framework()->get< InventoryMgr >(); auto zone = std::dynamic_pointer_cast< Territory::Housing::HousingInteriorTerritory >( player.getCurrentZone() ); assert( zone ); @@ -1144,7 +1139,7 @@ void Sapphire::World::Manager::HousingMgr::sendInternalEstateInventoryBatch( Sap else containerIds = m_internalPlacedItemContainers; - auto invMgr = g_fw.get< Manager::InventoryMgr >(); + auto invMgr = framework()->get< Manager::InventoryMgr >(); auto& containers = getEstateInventory( zone->getLandIdent() ); for( auto containerId : containerIds ) @@ -1221,7 +1216,7 @@ bool Sapphire::World::Manager::HousingMgr::moveInternalItem( Entity::Player& pla item->setRot( Util::floatToUInt16Rot( rot ) ); // save - auto invMgr = g_fw.get< InventoryMgr >(); + auto invMgr = framework()->get< InventoryMgr >(); invMgr->updateHousingItemPosition( item ); terri.updateHousingObjectPosition( player, slot, item->getPos(), item->getRot() ); @@ -1264,7 +1259,7 @@ bool Sapphire::World::Manager::HousingMgr::moveExternalItem( Entity::Player& pla item->setRot( Util::floatToUInt16Rot( rot ) ); - auto invMgr = g_fw.get< InventoryMgr >(); + auto invMgr = framework()->get< InventoryMgr >(); invMgr->updateHousingItemPosition( item ); terri.updateYardObjectPos( player, slot, ident.landId, *item ); @@ -1353,7 +1348,7 @@ bool Sapphire::World::Manager::HousingMgr::removeInternalItem( Entity::Player& p if( !player.getFreeInventoryContainerSlot( containerPair ) ) return false; - auto invMgr = g_fw.get< InventoryMgr >(); + auto invMgr = framework()->get< InventoryMgr >(); // remove it from housing inventory container->removeItem( slotId ); @@ -1375,7 +1370,7 @@ bool Sapphire::World::Manager::HousingMgr::removeInternalItem( Entity::Player& p if( !freeContainer ) return false; - auto invMgr = g_fw.get< InventoryMgr >(); + auto invMgr = framework()->get< InventoryMgr >(); container->removeItem( slotId ); invMgr->sendInventoryContainer( player, container ); @@ -1410,7 +1405,7 @@ bool Sapphire::World::Manager::HousingMgr::removeExternalItem( Entity::Player& p if( !item ) return false; - auto invMgr = g_fw.get< InventoryMgr >(); + auto invMgr = framework()->get< InventoryMgr >(); if( sendToStoreroom ) { @@ -1495,7 +1490,7 @@ void Sapphire::World::Manager::HousingMgr::reqEstateExteriorRemodel( Sapphire::E if( needle == inv.end() ) return; - auto invMgr = g_fw.get< InventoryMgr >(); + auto invMgr = framework()->get< InventoryMgr >(); invMgr->sendInventoryContainer( player, needle->second ); @@ -1526,7 +1521,7 @@ void Sapphire::World::Manager::HousingMgr::reqEstateInteriorRemodel( Sapphire::E if( needle == inv.end() ) return; - auto invMgr = g_fw.get< InventoryMgr >(); + auto invMgr = framework()->get< InventoryMgr >(); invMgr->sendInventoryContainer( player, needle->second ); diff --git a/src/world/Manager/InventoryMgr.cpp b/src/world/Manager/InventoryMgr.cpp index 5c960f35..02c68cc8 100644 --- a/src/world/Manager/InventoryMgr.cpp +++ b/src/world/Manager/InventoryMgr.cpp @@ -4,7 +4,7 @@ #include "Actor/Player.h" #include "Inventory/ItemContainer.h" #include "Inventory/HousingItem.h" -#include "Inventory/ItemUtil.h" +#include "Manager/ItemMgr.h" #include #include @@ -13,10 +13,12 @@ #include "Framework.h" -extern Sapphire::Framework g_fw; - 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 ) { @@ -69,14 +71,15 @@ 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 = g_fw.get< Data::ExdDataGenerated >(); - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + 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 ); if( !itemInfo ) return nullptr; - auto item = make_Item( Items::Util::getNextUId(), catalogId ); + auto item = make_Item( itemMgr->getNextUId(), catalogId, framework() ); item->setStackSize( std::max< uint32_t >( 1, quantity ) ); @@ -100,7 +103,7 @@ void Sapphire::World::Manager::InventoryMgr::removeItemFromHousingContainer( Sap uint16_t containerId, uint16_t slotId ) { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto stmt = pDb->getPreparedStatement( Db::LAND_INV_DEL ); @@ -117,7 +120,7 @@ void Sapphire::World::Manager::InventoryMgr::saveHousingContainerItem( uint64_t uint16_t containerId, uint16_t slotId, uint64_t itemId ) { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto stmt = pDb->getPreparedStatement( Db::LAND_INV_UP ); // LandIdent, ContainerId, SlotId, ItemId, ItemId @@ -136,7 +139,7 @@ void Sapphire::World::Manager::InventoryMgr::saveHousingContainerItem( uint64_t void Sapphire::World::Manager::InventoryMgr::updateHousingItemPosition( Sapphire::Inventory::HousingItemPtr item ) { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto stmt = pDb->getPreparedStatement( Db::LAND_INV_UP_ITEMPOS ); // ItemId, PosX, PosY, PosZ, Rotation, PosX, PosY, PosZ, Rotation @@ -161,7 +164,7 @@ void Sapphire::World::Manager::InventoryMgr::updateHousingItemPosition( Sapphire void Sapphire::World::Manager::InventoryMgr::removeHousingItemPosition( Sapphire::Inventory::HousingItem& item ) { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto stmt = pDb->getPreparedStatement( Db::LAND_INV_DEL_ITEMPOS ); @@ -172,7 +175,7 @@ void Sapphire::World::Manager::InventoryMgr::removeHousingItemPosition( Sapphire void Sapphire::World::Manager::InventoryMgr::saveItem( Sapphire::Entity::Player& player, Sapphire::ItemPtr item ) { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto pDb = framework()->get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto stmt = pDb->getPreparedStatement( Db::CHARA_ITEMGLOBAL_INS ); stmt->setUInt( 1, player.getId() ); diff --git a/src/world/Manager/InventoryMgr.h b/src/world/Manager/InventoryMgr.h index b98170c7..4bb154ea 100644 --- a/src/world/Manager/InventoryMgr.h +++ b/src/world/Manager/InventoryMgr.h @@ -2,13 +2,16 @@ #define SAPPHIRE_INVENTORYMGR_H #include "ForwardsZone.h" +#include "BaseManager.h" namespace Sapphire::World::Manager { - class InventoryMgr + class InventoryMgr : public Sapphire::World::Manager::BaseManager { public: + explicit InventoryMgr( Sapphire::FrameworkPtr pFw ); + /*! * @brief Sends an item container to a player * diff --git a/src/world/Manager/ItemMgr.cpp b/src/world/Manager/ItemMgr.cpp index 6d7cf06d..efa6a6b8 100644 --- a/src/world/Manager/ItemMgr.cpp +++ b/src/world/Manager/ItemMgr.cpp @@ -137,8 +137,6 @@ Sapphire::ItemPtr Sapphire::World::Manager::ItemMgr::loadItem( uint64_t uId ) ItemPtr pItem = make_Item( uId, itemRes->getUInt( 1 ), - itemInfo->modelMain, - itemInfo->modelSub, framework(), isHq ); diff --git a/src/world/Network/Handlers/ClientTriggerHandler.cpp b/src/world/Network/Handlers/ClientTriggerHandler.cpp index 887727bd..0d58d73d 100644 --- a/src/world/Network/Handlers/ClientTriggerHandler.cpp +++ b/src/world/Network/Handlers/ClientTriggerHandler.cpp @@ -79,11 +79,11 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, const auto param4 = packet.data().param4; const auto param5 = packet.data().param5; - pLog->debug( "[" + std::to_string( m_pSession->getId() ) + "] Incoming action: " + - Util::intToHexString( static_cast< uint32_t >( commandId & 0xFFFF ), 4 ) + - "\nparam1: " + Util::intToHexString( static_cast< uint64_t >( param1 & 0xFFFFFFFFFFFFFFF ), 16 ) + - "\nparam2: " + Util::intToHexString( static_cast< uint32_t >( param2 & 0xFFFFFFFF ), 8 ) + - "\nparam3: " + Util::intToHexString( static_cast< uint64_t >( param3 & 0xFFFFFFFFFFFFFFF ), 16 ) + Logger::debug( "[" + std::to_string( m_pSession->getId() ) + "] Incoming action: " + + Util::intToHexString( static_cast< uint32_t >( commandId & 0xFFFF ), 4 ) + + "\nparam1: " + Util::intToHexString( static_cast< uint64_t >( param1 & 0xFFFFFFFFFFFFFFF ), 16 ) + + "\nparam2: " + Util::intToHexString( static_cast< uint32_t >( param2 & 0xFFFFFFFF ), 8 ) + + "\nparam3: " + Util::intToHexString( static_cast< uint64_t >( param3 & 0xFFFFFFFFFFFFFFF ), 16 ) ); //g_log.Log(LoggingSeverity::debug, "[" + std::to_string(m_pSession->getId()) + "] " + pInPacket->toString()); @@ -437,10 +437,6 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, } case ClientTriggerType::RequestEstateInventory: { - // only sent if param1 is 1, because the client sends this with 0 when you open the ui for whatever reason - if( param1 != 1 ) - return; - auto housingMgr = pFw->get< HousingMgr >(); if( !housingMgr ) break; @@ -457,7 +453,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, } case ClientTriggerType::RequestHousingItemRemove: { - auto housingMgr = g_fw.get< HousingMgr >(); + auto housingMgr = m_pFw->get< HousingMgr >(); auto slot = param4 & 0xFF; auto sendToStoreroom = ( param4 >> 16 ) != 0; @@ -469,7 +465,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, } case ClientTriggerType::RequestEstateExteriorRemodel: { - auto housingMgr = g_fw.get< HousingMgr >(); + auto housingMgr = m_pFw->get< HousingMgr >(); housingMgr->reqEstateExteriorRemodel( player, param11 ); @@ -477,7 +473,7 @@ void Sapphire::Network::GameConnection::clientTriggerHandler( FrameworkPtr pFw, } case ClientTriggerType::RequestEstateInteriorRemodel: { - auto housingMgr = g_fw.get< HousingMgr >(); + auto housingMgr = m_pFw->get< HousingMgr >(); housingMgr->reqEstateInteriorRemodel( player ); diff --git a/src/world/Network/Handlers/PacketHandlers.cpp b/src/world/Network/Handlers/PacketHandlers.cpp index bdd10307..a41ed334 100644 --- a/src/world/Network/Handlers/PacketHandlers.cpp +++ b/src/world/Network/Handlers/PacketHandlers.cpp @@ -723,10 +723,11 @@ void Sapphire::Network::GameConnection::housingUpdateGreetingHandler( FrameworkP pHousingMgr->updateEstateGreeting( player, packet.data().ident, std::string( packet.data().greeting ) ); } -void Sapphire::Network::GameConnection::reqPlaceHousingItem( const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::reqPlaceHousingItem( FrameworkPtr pFw, + const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto housingMgr = g_fw.get< HousingMgr >(); + auto housingMgr = pFw->get< HousingMgr >(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcReqPlaceHousingItem >( inPacket ); const auto& data = packet.data(); @@ -734,10 +735,11 @@ void Sapphire::Network::GameConnection::reqPlaceHousingItem( const Packets::FFXI data.position, data.rotation ); } -void Sapphire::Network::GameConnection::reqMoveHousingItem( const Packets::FFXIVARR_PACKET_RAW& inPacket, +void Sapphire::Network::GameConnection::reqMoveHousingItem( FrameworkPtr pFw, + const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { - auto housingMgr = g_fw.get< HousingMgr >(); + auto housingMgr = pFw->get< HousingMgr >(); const auto packet = ZoneChannelPacket< Client::FFXIVIpcHousingUpdateObjectPosition >( inPacket ); const auto& data = packet.data(); diff --git a/src/world/ServerMgr.cpp b/src/world/ServerMgr.cpp index 00e1d88c..cc89386a 100644 --- a/src/world/ServerMgr.cpp +++ b/src/world/ServerMgr.cpp @@ -150,7 +150,7 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] ) framework()->set< Manager::TerritoryMgr >( pTeriMgr ); if( !pHousingMgr->init() ) { - pLog->fatal( "Failed to setup housing!" ); + Logger::fatal( "Failed to setup housing!" ); return; } @@ -171,7 +171,7 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] ) 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 >(); + auto pInventoryMgr = std::make_shared< Manager::InventoryMgr >( framework() ); auto pEventMgr = std::make_shared< Manager::EventMgr >( framework() ); auto pItemMgr = std::make_shared< Manager::ItemMgr >( framework() ); diff --git a/src/world/Territory/Housing/HousingInteriorTerritory.cpp b/src/world/Territory/Housing/HousingInteriorTerritory.cpp index ad7b686b..dddbd86d 100644 --- a/src/world/Territory/Housing/HousingInteriorTerritory.cpp +++ b/src/world/Territory/Housing/HousingInteriorTerritory.cpp @@ -112,7 +112,7 @@ const Common::LandIdent Sapphire::World::Territory::Housing::HousingInteriorTerr void Sapphire::World::Territory::Housing::HousingInteriorTerritory::updateHousingObjects() { - auto housingMgr = g_fw.get< Manager::HousingMgr >(); + auto housingMgr = m_pFw->get< Manager::HousingMgr >(); auto containerIds = { InventoryType::HousingInteriorPlacedItems1, @@ -163,7 +163,7 @@ void Sapphire::World::Territory::Housing::HousingInteriorTerritory::spawnHousing uint16_t containerType, Inventory::HousingItemPtr item ) { - auto housingMgr = g_fw.get< Manager::HousingMgr >(); + auto housingMgr = m_pFw->get< Manager::HousingMgr >(); auto offset = ( containerIdx * 50 ) + slot; auto obj = housingMgr->getYardObjectForItem( item ); diff --git a/src/world/Territory/HousingZone.cpp b/src/world/Territory/HousingZone.cpp index b19bde1d..3814b471 100644 --- a/src/world/Territory/HousingZone.cpp +++ b/src/world/Territory/HousingZone.cpp @@ -114,14 +114,14 @@ bool Sapphire::HousingZone::init() arr.fill( obj ); } - auto housingMgr = g_fw.get< World::Manager::HousingMgr >(); + auto housingMgr = m_pFw->get< World::Manager::HousingMgr >(); auto landCache = housingMgr->getLandCacheMap(); // make sure the landset exists auto landSetCache = landCache.find( m_landSetId ); if( landSetCache == landCache.end() ) { - g_fw.get< Sapphire::Logger >()->fatal( "LandSet " + std::to_string( m_landSetId ) + " is missing from the land cache." ); + Logger::fatal( "LandSet " + std::to_string( m_landSetId ) + " is missing from the land cache." ); return false; } @@ -134,7 +134,7 @@ bool Sapphire::HousingZone::init() if( entry.m_houseId ) { auto house = make_House( entry.m_houseId, m_landSetId, land->getLandIdent(), entry.m_estateName, - entry.m_estateComment ); + entry.m_estateComment, m_pFw ); housingMgr->updateHouseModels( house ); land->setHouse( house ); @@ -328,7 +328,7 @@ Sapphire::Entity::EventObjectPtr Sapphire::HousingZone::registerEstateEntranceEO void Sapphire::HousingZone::updateYardObjects( Sapphire::Common::LandIdent ident ) { - auto housingMgr = g_fw.get< World::Manager::HousingMgr >(); + auto housingMgr = m_pFw->get< World::Manager::HousingMgr >(); auto& landStorage = housingMgr->getEstateInventory( ident ); auto yardContainer = landStorage[ InventoryType::HousingExteriorPlacedItems ];