From c647cc2511fe767f1da817e89abf3cae9107a2d2 Mon Sep 17 00:00:00 2001 From: Mordred Date: Wed, 22 Feb 2023 14:55:59 +0100 Subject: [PATCH] Some minor refactorings I came across while working on events. --- src/world/Manager/PartyMgr.cpp | 5 +++++ src/world/Manager/PlayerMgr.cpp | 18 +++++++----------- src/world/Manager/PlayerMgr.h | 2 ++ src/world/Manager/TerritoryMgr.cpp | 3 +++ src/world/Network/Handlers/PacketHandlers.cpp | 5 +++-- src/world/Session.cpp | 4 +++- 6 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/world/Manager/PartyMgr.cpp b/src/world/Manager/PartyMgr.cpp index 3365487e..7a5024a3 100644 --- a/src/world/Manager/PartyMgr.cpp +++ b/src/world/Manager/PartyMgr.cpp @@ -171,6 +171,8 @@ void PartyMgr::onDisband( Entity::Player& disbandingPlayer ) void PartyMgr::onMoveZone( Sapphire::Entity::Player &movingPlayer ) { + if( movingPlayer.getPartyId() == 0 ) + return; auto party = getParty( movingPlayer.getPartyId() ); assert( party ); sendPartyUpdate( *party ); @@ -178,6 +180,9 @@ void PartyMgr::onMoveZone( Sapphire::Entity::Player &movingPlayer ) void PartyMgr::onMemberDisconnect( Entity::Player& disconnectingPlayer ) { + if( disconnectingPlayer.getPartyId() == 0 ) + return; + auto& server = Common::Service< World::WorldServer >::ref(); auto party = getParty( disconnectingPlayer.getPartyId() ); assert( party ); diff --git a/src/world/Manager/PlayerMgr.cpp b/src/world/Manager/PlayerMgr.cpp index 61e1a010..b6dbe3e4 100644 --- a/src/world/Manager/PlayerMgr.cpp +++ b/src/world/Manager/PlayerMgr.cpp @@ -337,7 +337,7 @@ void PlayerMgr::onClassChanged( Entity::Player& player ) onPlayerHpMpTpChanged( player ); } -void PlayerMgr::onLogin( Entity::Player& player ) +void PlayerMgr::sendLoginMessage( Entity::Player& player ) { auto motd = server().getConfig().motd; @@ -349,15 +349,16 @@ void PlayerMgr::onLogin( Entity::Player& player ) } } +void PlayerMgr::onLogin( Entity::Player &player ) +{ + +} + void PlayerMgr::onLogout( Entity::Player &player ) { auto& partyMgr = Common::Service< World::Manager::PartyMgr >::ref(); - auto& fcMgr = Common::Service< World::Manager::FreeCompanyMgr >::ref(); // send updates to mgrs - if( player.getPartyId() != 0 ) - partyMgr.onMemberDisconnect( player ); - - fcMgr.onFcLogout( player.getCharacterId() ); + partyMgr.onMemberDisconnect( player ); } void PlayerMgr::onDeath( Entity::Player& player ) @@ -457,11 +458,6 @@ void PlayerMgr::onMoveZone( Sapphire::Entity::Player& player ) onGrandCompanyChanged( player ); } - if( player.getPartyId() != 0 ) - { - partyMgr.onMoveZone( player ); - } - } void PlayerMgr::onUpdate( Entity::Player& player, uint64_t tickCount ) diff --git a/src/world/Manager/PlayerMgr.h b/src/world/Manager/PlayerMgr.h index 54f4286c..b3cbed16 100644 --- a/src/world/Manager/PlayerMgr.h +++ b/src/world/Manager/PlayerMgr.h @@ -39,6 +39,8 @@ namespace Sapphire::World::Manager void onHateListChanged( Sapphire::Entity::Player& player ); + void sendLoginMessage( Sapphire::Entity::Player& player ); + void onLogin( Sapphire::Entity::Player& player ); void onLogout( Sapphire::Entity::Player& player ); void onDeath( Sapphire::Entity::Player& player ); diff --git a/src/world/Manager/TerritoryMgr.cpp b/src/world/Manager/TerritoryMgr.cpp index 30f7aad0..540a0617 100644 --- a/src/world/Manager/TerritoryMgr.cpp +++ b/src/world/Manager/TerritoryMgr.cpp @@ -16,6 +16,7 @@ #include "HousingMgr.h" #include "WarpMgr.h" #include "PlayerMgr.h" +#include "PartyMgr.h" #include "Linkshell/Linkshell.h" #include "Territory/Land.h" @@ -589,6 +590,7 @@ TerritoryMgr::InstanceIdList TerritoryMgr::getInstanceContentIdList( uint16_t in bool TerritoryMgr::movePlayer( Sapphire::Territory& teri, Entity::Player& player ) { auto& playerMgr = Common::Service< Manager::PlayerMgr >::ref(); + auto& partyMgr = Common::Service< Manager::PartyMgr >::ref(); auto pPrevZone = getTerritoryByGuId( player.getTerritoryId() ); @@ -614,6 +616,7 @@ bool TerritoryMgr::movePlayer( Sapphire::Territory& teri, Entity::Player& player teri.onBeforePlayerZoneIn( player ); playerMgr.onMoveZone( player ); + partyMgr.onMoveZone( player ); return true; } diff --git a/src/world/Network/Handlers/PacketHandlers.cpp b/src/world/Network/Handlers/PacketHandlers.cpp index b2cc81f0..d1b22749 100644 --- a/src/world/Network/Handlers/PacketHandlers.cpp +++ b/src/world/Network/Handlers/PacketHandlers.cpp @@ -347,9 +347,11 @@ void Sapphire::Network::GameConnection::loginHandler( const Packets::FFXIVARR_PA const auto packet = ZoneChannelPacket< Client::FFXIVIpcLoginHandler >( inPacket ); auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); auto& fcMgr = Common::Service< World::Manager::FreeCompanyMgr >::ref(); + auto& playerMgr = Common::Service< World::Manager::PlayerMgr >::ref(); player.setIsLogin( true ); player.setConnected( true ); teriMgr.joinWorld( player ); + playerMgr.onLogin( player ); fcMgr.onFcLogin( player.getCharacterId() ); } @@ -382,8 +384,7 @@ void Sapphire::Network::GameConnection::setLanguageHandler( const Packets::FFXIV // if this is a login event if( player.isLogin() ) { - // fire the onLogin Event - playerMgr.onLogin( player ); + playerMgr.sendLoginMessage( player ); } // spawn the player for himself diff --git a/src/world/Session.cpp b/src/world/Session.cpp index f4d9c947..6584fb75 100644 --- a/src/world/Session.cpp +++ b/src/world/Session.cpp @@ -9,6 +9,7 @@ #include "Actor/Player.h" #include "WorldServer.h" #include "Manager/PlayerMgr.h" +#include "Manager/FreeCompanyMgr.h" #include "Session.h" @@ -78,8 +79,9 @@ void Sapphire::World::Session::close() if( m_pPlayer ) { auto& playerMgr = Common::Service< World::Manager::PlayerMgr >::ref(); + auto& fcMgr = Common::Service< World::Manager::FreeCompanyMgr >::ref(); playerMgr.onLogout( *m_pPlayer ); - + fcMgr.onFcLogout( m_pPlayer->getCharacterId() ); m_pPlayer->unload(); } }