From df6d0197626ed8251379a71a969da1938ca0668b Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Mon, 19 Nov 2018 11:55:29 +0100 Subject: [PATCH] Cleanup HousingMgr + Style --- .../Scripts/common/CmnDefHousingSignboard.cpp | 2 +- src/servers/sapphire_zone/Zone/HousingMgr.cpp | 61 +++++-------------- src/servers/sapphire_zone/Zone/HousingMgr.h | 7 +-- .../sapphire_zone/Zone/HousingZone.cpp | 3 - src/servers/sapphire_zone/Zone/Land.cpp | 4 +- src/servers/sapphire_zone/Zone/Land.h | 2 +- 6 files changed, 20 insertions(+), 59 deletions(-) diff --git a/src/servers/Scripts/common/CmnDefHousingSignboard.cpp b/src/servers/Scripts/common/CmnDefHousingSignboard.cpp index 5ca17950..ae9c8c5e 100644 --- a/src/servers/Scripts/common/CmnDefHousingSignboard.cpp +++ b/src/servers/Scripts/common/CmnDefHousingSignboard.cpp @@ -38,7 +38,7 @@ public: auto pHouMgr = pFw->get< Core::HousingMgr >(); LandPurchaseResult res = pHouMgr->purchaseLand( player, activeLand.plot, - static_cast< uint8_t >( result.param2 ) ); + static_cast< uint8_t >( result.param2 ) ); switch( res ) { diff --git a/src/servers/sapphire_zone/Zone/HousingMgr.cpp b/src/servers/sapphire_zone/Zone/HousingMgr.cpp index 3be59f92..a651cea4 100644 --- a/src/servers/sapphire_zone/Zone/HousingMgr.cpp +++ b/src/servers/sapphire_zone/Zone/HousingMgr.cpp @@ -12,6 +12,7 @@ #include "Actor/Player.h" +#include "TerritoryMgr.h" #include "Zone.h" #include "HousingZone.h" #include "HousingMgr.h" @@ -26,8 +27,7 @@ using namespace Core::Network::Packets::Server; extern Core::Framework g_fw; -Core::HousingMgr::HousingMgr() : - m_lastLandId( 0 ) +Core::HousingMgr::HousingMgr() { } @@ -43,61 +43,32 @@ bool Core::HousingMgr::init() return true; } -uint16_t Core::HousingMgr::getNextLandId() -{ - return ++m_lastLandId; -} uint32_t Core::HousingMgr::toLandSetId( uint16_t territoryTypeId, uint8_t wardId ) const { return ( static_cast< uint32_t >( territoryTypeId ) << 16 ) | wardId; } -void Core::HousingMgr::insertHousingZone( Core::Data::HousingZonePtr hZone ) -{ - uint16_t id = getNextLandId(); - m_housingZonePtrMap[id] = hZone; -} - -Core::Data::HousingZonePtr Core::HousingMgr::getHousingZone( uint16_t id ) -{ - auto it = m_housingZonePtrMap.find( id ); - if( it == m_housingZonePtrMap.end() ) - return nullptr; - - return it->second; -} - Core::Data::HousingZonePtr Core::HousingMgr::getHousingZoneByLandSetId( uint32_t id ) { - for( const auto& hZoneIt : m_housingZonePtrMap ) - { - auto pHousingZone = hZoneIt.second; - for( uint8_t landId = 0; landId < 60; landId++ ) - { - if( pHousingZone->getLandSetId() == id ) - { - return pHousingZone; - } - } - } - return nullptr; + auto pTeriMgr = g_fw.get< TerritoryMgr >(); + return std::dynamic_pointer_cast< HousingZone >( pTeriMgr->getZoneByLandSetId( id ) ); } Core::LandPtr Core::HousingMgr::getLandByOwnerId( uint32_t id ) { - for( const auto& hZoneIt : m_housingZonePtrMap ) - { - auto pHousingZone = hZoneIt.second; - for( uint8_t landId = 0; landId < 60; landId++ ) - { - if( pHousingZone->getLand( landId )->getPlayerOwner() == id ) - { - return pHousingZone->getLand( landId ); - } - } - } - return nullptr; + auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); + auto res = pDb->query( "SELECT LandSetId, LandId FROM land WHERE OwnerId = " + std::to_string( id ) ); + + if( !res->next() ) + return nullptr; + + auto hZone = getHousingZoneByLandSetId( res->getUInt( 1 ) ); + + if( !hZone ) + return nullptr; + + return hZone->getLand( res->getUInt( 2 ) ); } void Core::HousingMgr::sendLandSignOwned( Entity::Player& player, uint8_t wardId, uint8_t plotId, uint16_t territoryTypeId ) diff --git a/src/servers/sapphire_zone/Zone/HousingMgr.h b/src/servers/sapphire_zone/Zone/HousingMgr.h index 869c8aaf..b97c8acf 100644 --- a/src/servers/sapphire_zone/Zone/HousingMgr.h +++ b/src/servers/sapphire_zone/Zone/HousingMgr.h @@ -23,9 +23,6 @@ namespace Core bool init(); uint32_t toLandSetId( uint16_t territoryTypeId, uint8_t wardId ) const; - uint16_t getNextLandId(); - void insertHousingZone( Core::Data::HousingZonePtr hZone ); - Core::Data::HousingZonePtr getHousingZone( uint16_t id ); Core::Data::HousingZonePtr getHousingZoneByLandSetId( uint32_t id ); Core::LandPtr getLandByOwnerId( uint32_t id ); @@ -36,9 +33,7 @@ namespace Core bool relinquishLand( Entity::Player& player, uint8_t plot ); private: - using HousingZonePtrMap = std::unordered_map< uint16_t, Core::Data::HousingZonePtr >; - uint16_t m_lastLandId; - HousingZonePtrMap m_housingZonePtrMap; + }; } diff --git a/src/servers/sapphire_zone/Zone/HousingZone.cpp b/src/servers/sapphire_zone/Zone/HousingZone.cpp index 3eae8feb..9d52a1f4 100644 --- a/src/servers/sapphire_zone/Zone/HousingZone.cpp +++ b/src/servers/sapphire_zone/Zone/HousingZone.cpp @@ -65,9 +65,6 @@ bool Core::HousingZone::init() m_landPtrMap[ landId ] = pObject; } - auto pHousingMgr = g_fw.get< HousingMgr >(); - pHousingMgr->insertHousingZone( (HousingZonePtr)this ); - return true; } diff --git a/src/servers/sapphire_zone/Zone/Land.cpp b/src/servers/sapphire_zone/Zone/Land.cpp index 57b9d598..e0e4bbba 100644 --- a/src/servers/sapphire_zone/Zone/Land.cpp +++ b/src/servers/sapphire_zone/Zone/Land.cpp @@ -154,9 +154,7 @@ uint16_t Core::Land::getZoneId() const Core::HousePtr Core::Land::getHouse() const { - if( !m_house ) - return nullptr; - return m_house; + return m_pHouse; } Core::Common::LandType Core::Land::getLandType() const diff --git a/src/servers/sapphire_zone/Zone/Land.h b/src/servers/sapphire_zone/Zone/Land.h index daa483e9..173a00a7 100644 --- a/src/servers/sapphire_zone/Zone/Land.h +++ b/src/servers/sapphire_zone/Zone/Land.h @@ -80,7 +80,7 @@ namespace Core uint32_t m_ownerPlayerId; Core::Data::HousingLandSetPtr m_landInfo; - Core::HousePtr m_house; + Core::HousePtr m_pHouse; //item storage Core::ItemContainerPtr ItemsOutdoorContainer;