From 1472041262a74b3a93246cd0baf28fedf3c29187 Mon Sep 17 00:00:00 2001 From: Mordred Date: Wed, 12 Jan 2022 11:11:47 +0100 Subject: [PATCH] get/setCurrentTerritory now completely removed --- src/world/Actor/GameObject.cpp | 12 ------------ src/world/Actor/GameObject.h | 6 ------ src/world/Actor/Player.cpp | 16 +++++++++++++--- src/world/Actor/Player.h | 5 +++++ src/world/Manager/TerritoryMgr.cpp | 1 - src/world/Network/Handlers/PacketHandlers.cpp | 1 + src/world/Territory/HousingZone.cpp | 1 - src/world/Territory/Territory.cpp | 1 - src/world/WorldServer.cpp | 2 +- 9 files changed, 20 insertions(+), 25 deletions(-) diff --git a/src/world/Actor/GameObject.cpp b/src/world/Actor/GameObject.cpp index 3d4fcc01..a8ab4850 100644 --- a/src/world/Actor/GameObject.cpp +++ b/src/world/Actor/GameObject.cpp @@ -341,23 +341,11 @@ std::set< Sapphire::Entity::GameObjectPtr > Sapphire::Entity::GameObject::getInR return tempInRange; } -/*! \return TerritoryPtr to the current zone, nullptr if not set */ -Sapphire::TerritoryPtr Sapphire::Entity::GameObject::getCurrentTerritory() const -{ - return m_pCurrentTerritory; -} - uint32_t Sapphire::Entity::GameObject::getTerritoryTypeId() const { return m_territoryTypeId; } -/*! \param TerritoryPtr to the zone to be set as current */ -void Sapphire::Entity::GameObject::setCurrentZone( TerritoryPtr currZone ) -{ - m_pCurrentTerritory = currZone; -} - void Sapphire::Entity::GameObject::setTerritoryTypeId( uint32_t territoryTypeId ) { m_territoryTypeId = territoryTypeId; diff --git a/src/world/Actor/GameObject.h b/src/world/Actor/GameObject.h index c07770f1..c8bc03e4 100644 --- a/src/world/Actor/GameObject.h +++ b/src/world/Actor/GameObject.h @@ -32,8 +32,6 @@ namespace Sapphire::Entity uint32_t m_territoryTypeId{}; /*! Specific GUId of the zone the actor currently is in */ uint32_t m_territoryId{}; - /*! Ptr to the ZoneObj the actor belongs to */ - TerritoryPtr m_pCurrentTerritory; /*! list of various actors in range */ std::set< GameObjectPtr > m_inRangeActor; @@ -123,16 +121,12 @@ namespace Sapphire::Entity BNpcPtr getAsBNpc(); - TerritoryPtr getCurrentTerritory() const; - uint32_t getTerritoryTypeId() const; void setTerritoryTypeId( uint32_t territoryTypeId ); uint32_t getTerritoryId() const; void setTerritoryId( uint32_t territoryTypeId ); - void setCurrentZone( TerritoryPtr currZone ); - // get the current cell of a region the actor is in Common::CellId getCellId() const; // set the current cell diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index c8738f5f..5d48fa2a 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -82,7 +82,8 @@ Sapphire::Entity::Player::Player() : m_pQueuedAction( nullptr ), m_partyId( 0 ), m_onlineStatusCustom( 0 ), - m_onlineStatus( 0 ) + m_onlineStatus( 0 ), + m_bIsConnected( false ) { m_id = 0; m_currentStance = Stance::Passive; @@ -123,10 +124,9 @@ void Sapphire::Entity::Player::unload() { // do one last update to db updateSql(); - // reset the zone, so the zone handler knows to remove the actor - setCurrentZone( nullptr ); // reset isLogin and loading sequences just in case setIsLogin( false ); + setConnected( false ); setLoadingComplete( false ); // unset player for removal setMarkedForRemoval( false ); @@ -2230,3 +2230,13 @@ std::optional< Sapphire::World::Quest > Sapphire::Entity::Player::getQuest( uint auto quest = getQuestByIndex( idx ); return { quest }; } + +bool Sapphire::Entity::Player::isConnected() const +{ + return m_bIsConnected; +} + +void Sapphire::Entity::Player::setConnected( bool isConnected ) +{ + m_bIsConnected = isConnected; +} diff --git a/src/world/Actor/Player.h b/src/world/Actor/Player.h index 06550192..934f7297 100644 --- a/src/world/Actor/Player.h +++ b/src/world/Actor/Player.h @@ -823,6 +823,9 @@ namespace Sapphire::Entity const Common::FFXIVARR_POSITION3& getPrevPos() const; float getPrevRot() const; + bool isConnected() const; + void setConnected( bool isConnected ); + private: /*! queue a packet for the player */ void queuePacket( Network::Packets::FFXIVPacketBasePtr pPacket ); @@ -923,6 +926,8 @@ namespace Sapphire::Entity bool m_bLoadingComplete; bool m_bAutoattack; + bool m_bIsConnected; + Common::ZoneingType m_zoningType; bool m_bMarkedForZoning; diff --git a/src/world/Manager/TerritoryMgr.cpp b/src/world/Manager/TerritoryMgr.cpp index 858b2b53..6dfcf9c0 100644 --- a/src/world/Manager/TerritoryMgr.cpp +++ b/src/world/Manager/TerritoryMgr.cpp @@ -679,7 +679,6 @@ bool Sapphire::World::Manager::TerritoryMgr::movePlayer( const TerritoryPtr& pZo if( playerLoaded && pPrevZone ) pPrevZone->removeActor( player.getAsPlayer() ); - player.setCurrentZone( pZone ); pZone->pushActor( player.getAsPlayer() ); // map player to instanceId so it can be tracked. diff --git a/src/world/Network/Handlers/PacketHandlers.cpp b/src/world/Network/Handlers/PacketHandlers.cpp index b2599573..e98255c4 100644 --- a/src/world/Network/Handlers/PacketHandlers.cpp +++ b/src/world/Network/Handlers/PacketHandlers.cpp @@ -409,6 +409,7 @@ void Sapphire::Network::GameConnection::loginHandler( const Packets::FFXIVARR_PA auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); // init handler means this is a login procedure player.setIsLogin( true ); + player.setConnected( true ); teriMgr.joinWorld( player ); } diff --git a/src/world/Territory/HousingZone.cpp b/src/world/Territory/HousingZone.cpp index aa042e06..557dc7f8 100644 --- a/src/world/Territory/HousingZone.cpp +++ b/src/world/Territory/HousingZone.cpp @@ -294,7 +294,6 @@ Sapphire::Entity::EventObjectPtr Sapphire::HousingZone::registerEstateEntranceEO auto eObj = Entity::make_EventObject( getNextEObjId(), 2002737, 0, 4, land->getMapMarkerPosition(), 0.f, "entrance" ); eObj->setHousingLink( landId << 8 ); eObj->setScale( 1.f ); - eObj->setCurrentZone( shared_from_this() ); registerEObj( eObj ); diff --git a/src/world/Territory/Territory.cpp b/src/world/Territory/Territory.cpp index a1290659..77b4e4f3 100644 --- a/src/world/Territory/Territory.cpp +++ b/src/world/Territory/Territory.cpp @@ -808,7 +808,6 @@ Sapphire::Entity::EventObjectPtr Sapphire::Territory::registerEObj( const std::s { auto eObj = Entity::make_EventObject( getNextEObjId(), objectId, mapLink, state, pos, rotation, name ); eObj->setScale( scale ); - eObj->setCurrentZone( shared_from_this() ); registerEObj( eObj ); diff --git a/src/world/WorldServer.cpp b/src/world/WorldServer.cpp index 58a792fe..dad679d6 100644 --- a/src/world/WorldServer.cpp +++ b/src/world/WorldServer.cpp @@ -318,7 +318,7 @@ void Sapphire::World::WorldServer::mainLoop() // if the player is in a zone, let the zone handler take care of his updates // else do it here. - if( !session->getPlayer()->getCurrentTerritory() ) + if( !session->getPlayer()->isConnected() ) session->update(); }