From ca002dadd1aae8af18ad3171230cd3e1d37212de Mon Sep 17 00:00:00 2001 From: Mordred Date: Tue, 7 Mar 2023 10:25:55 +0100 Subject: [PATCH] Renamed the Util::Player namespace to Util::Packet. More cleanups and refactorings. --- src/world/Action/Action.cpp | 4 +- src/world/Actor/BNpc.cpp | 4 +- src/world/Actor/Player.cpp | 102 +++++++++--------- src/world/Actor/PlayerEvent.cpp | 4 +- src/world/Actor/PlayerInventory.cpp | 18 ++-- src/world/Manager/AchievementMgr.cpp | 8 +- src/world/Manager/PlayerMgr.cpp | 55 ++++------ .../Network/Handlers/PacketCommandHandler.cpp | 44 ++++---- src/world/Network/Handlers/PacketHandlers.cpp | 6 +- .../Util/{PlayerUtil.cpp => PacketUtil.cpp} | 94 ++++++++++------ .../Util/{PlayerUtil.h => PacketUtil.h} | 11 +- 11 files changed, 181 insertions(+), 169 deletions(-) rename src/world/Network/Util/{PlayerUtil.cpp => PacketUtil.cpp} (76%) rename src/world/Network/Util/{PlayerUtil.h => PacketUtil.h} (75%) diff --git a/src/world/Action/Action.cpp b/src/world/Action/Action.cpp index d78ebe2e..ae0a8885 100644 --- a/src/world/Action/Action.cpp +++ b/src/world/Action/Action.cpp @@ -23,7 +23,7 @@ #include "Network/PacketWrappers/ActorControlPacket.h" #include "Network/PacketWrappers/ActorControlSelfPacket.h" #include "Network/PacketWrappers/ActorControlTargetPacket.h" -#include "Network/Util/PlayerUtil.h" +#include "Network/Util/PacketUtil.h" #include @@ -518,7 +518,7 @@ void Action::Action::buildEffects() return; } - Network::Util::Player::sendHudParam( *m_pSource->getAsPlayer() ); + Network::Util::Packet::sendHudParam( *m_pSource->getAsPlayer() ); if( !hasLutEntry || m_hitActors.empty() ) { diff --git a/src/world/Actor/BNpc.cpp b/src/world/Actor/BNpc.cpp index 106c5002..7d94624c 100644 --- a/src/world/Actor/BNpc.cpp +++ b/src/world/Actor/BNpc.cpp @@ -18,7 +18,7 @@ #include "Network/PacketWrappers/ActorControlTargetPacket.h" #include "Network/PacketWrappers/NpcSpawnPacket.h" #include "Network/PacketWrappers/MoveActorPacket.h" -#include "Network/Util/PlayerUtil.h" +#include "Network/Util/PacketUtil.h" #include "Navi/NaviProvider.h" @@ -542,7 +542,7 @@ void Sapphire::Entity::BNpc::hateListUpdate( const Sapphire::Entity::CharaPtr& p if( pChara->isPlayer() ) { auto pPlayer = pChara->getAsPlayer(); - Network::Util::Player::sendHateList( *pPlayer ); + Network::Util::Packet::sendHateList( *pPlayer ); } } } diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index 2ce6e2c3..63745bca 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -35,7 +35,7 @@ #include "Network/PacketWrappers/EffectPacket1.h" #include "Network/PacketWrappers/InitZonePacket.h" -#include "Network/Util/PlayerUtil.h" +#include "Network/Util/PacketUtil.h" #include "Action/Action.h" @@ -264,7 +264,7 @@ void Player::addOnlineStatus( OnlineStatus status ) setOnlineStatusMask( newFlags ); - Network::Util::Player::sendOnlineStatus( *this ); + Network::Util::Packet::sendOnlineStatus( *this ); } void Player::addOnlineStatus( const std::vector< Common::OnlineStatus >& status ) @@ -278,7 +278,7 @@ void Player::addOnlineStatus( const std::vector< Common::OnlineStatus >& status setOnlineStatusMask( newFlags ); - Network::Util::Player::sendOnlineStatus( *this ); + Network::Util::Packet::sendOnlineStatus( *this ); } void Player::removeOnlineStatus( OnlineStatus status ) @@ -292,7 +292,7 @@ void Player::removeOnlineStatus( OnlineStatus status ) setOnlineStatusMask( newFlags ); setOnlineStatusCustomMask( newFlagsCustom ); - Network::Util::Player::sendOnlineStatus( *this ); + Network::Util::Packet::sendOnlineStatus( *this ); } void Player::removeOnlineStatus( const std::vector< Common::OnlineStatus >& status ) @@ -309,7 +309,7 @@ void Player::removeOnlineStatus( const std::vector< Common::OnlineStatus >& stat setOnlineStatusMask( newFlags ); setOnlineStatusCustomMask( newFlagsCustom ); - Network::Util::Player::sendOnlineStatus( *this ); + Network::Util::Packet::sendOnlineStatus( *this ); } void Player::calculateStats() @@ -457,7 +457,7 @@ void Player::registerAetheryte( uint8_t aetheryteId ) Util::valueToFlagByteIndexValue( aetheryteId, value, index ); m_aetheryte[ index ] |= value; - Network::Util::Player::sendActorControlSelf( *this, LearnTeleport, aetheryteId, 1 ); + Network::Util::Packet::sendActorControlSelf( *this, LearnTeleport, aetheryteId, 1 ); } bool Player::isAetheryteRegistered( uint8_t aetheryteId ) const @@ -560,7 +560,7 @@ void Player::setRewardFlag( Common::UnlockEntry unlockId ) m_unlocks[ index ] |= value; - Network::Util::Player::sendActorControlSelf( *this, SetRewardFlag, unlock, 1 ); + Network::Util::Packet::sendActorControlSelf( *this, SetRewardFlag, unlock, 1 ); } void Player::learnSong( uint8_t songId, uint32_t itemId ) @@ -571,7 +571,7 @@ void Player::learnSong( uint8_t songId, uint32_t itemId ) m_orchestrion[ index ] |= value; - Network::Util::Player::sendActorControlSelf( *this, ToggleOrchestrionUnlock, songId, 1, itemId ); + Network::Util::Packet::sendActorControlSelf( *this, ToggleOrchestrionUnlock, songId, 1, itemId ); } bool Player::hasReward( Common::UnlockEntry unlockId ) const @@ -608,7 +608,7 @@ void Player::gainExp( uint32_t amount ) { setExp( 0 ); if( currentExp != 0 ) - Network::Util::Player::sendActorControlSelf( *this, UpdateUiExp, currentClass, 0 ); + Network::Util::Packet::sendActorControlSelf( *this, UpdateUiExp, currentClass, 0 ); return; } @@ -632,8 +632,8 @@ void Player::gainExp( uint32_t amount ) else setExp( currentExp + amount ); - Network::Util::Player::sendActorControlSelf( *this, GainExpMsg, currentClass, amount ); - Network::Util::Player::sendActorControlSelf( *this, UpdateUiExp, currentClass, getExp() ); + Network::Util::Packet::sendActorControlSelf( *this, GainExpMsg, currentClass, amount ); + Network::Util::Packet::sendActorControlSelf( *this, UpdateUiExp, currentClass, getExp() ); } void Player::levelUp() @@ -642,7 +642,7 @@ void Player::levelUp() m_mp = getMaxMp(); setLevel( getLevel() + 1 ); - Network::Util::Player::sendActorControl( getInRangePlayerIds( true ), *this, LevelUpEffect, static_cast< uint8_t >( getClass() ), getLevel(), getLevel() - 1 ); + Network::Util::Packet::sendActorControl( getInRangePlayerIds( true ), *this, LevelUpEffect, static_cast< uint8_t >( getClass() ), getLevel(), getLevel() - 1 ); auto& achvMgr = Common::Service< World::Manager::AchievementMgr >::ref(); achvMgr.progressAchievementByType< Common::Achievement::Type::Classjob >( *this, static_cast< uint32_t >( getClass() ) ); @@ -717,9 +717,9 @@ void Player::setClassJob( Common::ClassJob classJob ) m_tp = 0; - Network::Util::Player::sendStatusUpdate( *this ); - Network::Util::Player::sendActorControl( getInRangePlayerIds( true ), *this, ClassJobChange, 4 ); - Network::Util::Player::sendHudParam( *this ); + Network::Util::Packet::sendStatusUpdate( *this ); + Network::Util::Packet::sendActorControl( getInRangePlayerIds( true ), *this, ClassJobChange, 4 ); + Network::Util::Packet::sendHudParam( *this ); Service< World::Manager::MapMgr >::ref().updateQuests( *this ); } @@ -730,9 +730,9 @@ void Player::setLevel( uint8_t level ) m_classArray[ classJobIndex ] = level; calculateStats(); - Network::Util::Player::sendBaseParams( *this ); - Network::Util::Player::sendHudParam( *this ); - Network::Util::Player::sendStatusUpdate( *this ); + Network::Util::Packet::sendBaseParams( *this ); + Network::Util::Packet::sendHudParam( *this ); + Network::Util::Packet::sendStatusUpdate( *this ); } void Player::setLevelForClass( uint8_t level, Common::ClassJob classjob ) @@ -745,7 +745,7 @@ void Player::setLevelForClass( uint8_t level, Common::ClassJob classjob ) m_classArray[ classJobIndex ] = level; - Network::Util::Player::sendActorControlSelf( *this, ClassJobUpdate, static_cast< uint8_t >( classjob ), getLevelForClass( classjob ) ); + Network::Util::Packet::sendActorControlSelf( *this, ClassJobUpdate, static_cast< uint8_t >( classjob ), getLevelForClass( classjob ) ); auto& achvMgr = Common::Service< World::Manager::AchievementMgr >::ref(); achvMgr.progressAchievementByType< Common::Achievement::Type::Classjob >( *this, static_cast< uint32_t >( classjob ) ); @@ -818,7 +818,7 @@ void Player::despawn( Entity::PlayerPtr pTarget ) Logger::debug( "Despawning {0} for {1}", getName(), pTarget->getName() ); pPlayer->freePlayerSpawnId( getId() ); - Network::Util::Player::sendActorControlSelf( *this, WarpStart, 4, getId(), 1 ); + Network::Util::Packet::sendActorControlSelf( *this, WarpStart, 4, getId(), 1 ); } GameObjectPtr Player::lookupTargetById( uint64_t targetId ) @@ -848,13 +848,13 @@ void Player::setGrandCompany( uint8_t gc ) m_gc = gc; if( m_gcRank[ gc ] == 0 ) m_gcRank[ gc ] = 1; - Network::Util::Player::sendGrandCompany( *this ); + Network::Util::Packet::sendGrandCompany( *this ); } void Player::setGrandCompanyRankAt( uint8_t index, uint8_t rank ) { m_gcRank[ index ] = rank; - Network::Util::Player::sendGrandCompany( *this ); + Network::Util::Packet::sendGrandCompany( *this ); } const Player::Condition& Player::getConditions() const @@ -882,7 +882,7 @@ void Player::setCondition( Common::PlayerCondition flag ) Util::valueToFlagByteIndexValue( iFlag, value, index ); m_condition[ index ] |= value; - Network::Util::Player::sendCondition( *this ); + Network::Util::Packet::sendCondition( *this ); } void Player::setConditions( const std::vector< Common::PlayerCondition >& flags ) @@ -897,7 +897,7 @@ void Player::setConditions( const std::vector< Common::PlayerCondition >& flags m_condition[ index ] |= value; } - Network::Util::Player::sendCondition( *this ); + Network::Util::Packet::sendCondition( *this ); } void Player::removeCondition( Common::PlayerCondition flag ) @@ -912,7 +912,7 @@ void Player::removeCondition( Common::PlayerCondition flag ) Util::valueToFlagByteIndexValue( iFlag, value, index ); m_condition[ index ] ^= value; - Network::Util::Player::sendCondition( *this ); + Network::Util::Packet::sendCondition( *this ); } void Player::update( uint64_t tickCount ) @@ -941,7 +941,7 @@ void Player::freePlayerSpawnId( uint32_t actorId ) if( spawnId == m_actorSpawnIndexAllocator.getAllocFailId() ) return; - Network::Util::Player::sendDeletePlayer( *this, actorId, spawnId ); + Network::Util::Packet::sendDeletePlayer( *this, actorId, spawnId ); } Player::AetheryteList& Player::getAetheryteArray() @@ -953,7 +953,7 @@ Player::AetheryteList& Player::getAetheryteArray() void Player::setHomepoint( uint8_t aetheryteId ) { m_homePoint = aetheryteId; - Network::Util::Player::sendActorControlSelf( *this, SetHomepoint, aetheryteId ); + Network::Util::Packet::sendActorControlSelf( *this, SetHomepoint, aetheryteId ); } /*! get homepoint */ @@ -1002,7 +1002,7 @@ void Player::unlockMount( uint32_t mountId ) m_mountGuide[ mount->data().MountOrder / 8 ] |= ( 1 << ( mount->data().MountOrder % 8 ) ); - Network::Util::Player::sendActorControlSelf( *this, SetMountBitmask, mount->data().MountOrder, 1 ); + Network::Util::Packet::sendActorControlSelf( *this, SetMountBitmask, mount->data().MountOrder, 1 ); } void Player::unlockCompanion( uint32_t companionId ) @@ -1019,7 +1019,7 @@ void Player::unlockCompanion( uint32_t companionId ) m_minionGuide[ index ] |= value; - Network::Util::Player::sendActorControlSelf( *this, LearnCompanion, companionId, 1 ); + Network::Util::Packet::sendActorControlSelf( *this, LearnCompanion, companionId, 1 ); } Player::MinionList& Player::getMinionGuideBitmask() @@ -1109,7 +1109,7 @@ void Player::hateListAdd( const BNpc& bnpc ) uint8_t hateId = m_freeHateSlotQueue.front(); m_freeHateSlotQueue.pop(); m_actorIdTohateSlotMap[ bnpc.getId() ] = hateId; - Network::Util::Player::sendHateList( *this ); + Network::Util::Packet::sendHateList( *this ); } } @@ -1124,7 +1124,7 @@ void Player::hateListRemove( const BNpc& bnpc ) uint8_t hateSlot = it->second; m_freeHateSlotQueue.push( hateSlot ); m_actorIdTohateSlotMap.erase( it ); - Network::Util::Player::sendHateList( *this ); + Network::Util::Packet::sendHateList( *this ); return; } } @@ -1144,14 +1144,14 @@ const std::map< uint32_t, uint8_t >& Player::getActorIdToHateSlotMap() void Player::onMobAggro( const BNpc& bnpc ) { hateListAdd( bnpc ); - Network::Util::Player::sendActorControl( *this, SetBattle, 1 ); + Network::Util::Packet::sendActorControl( *this, SetBattle, 1 ); } void Player::onMobDeaggro( const BNpc& bnpc ) { hateListRemove( bnpc ); if( m_actorIdTohateSlotMap.empty() ) - Network::Util::Player::sendActorControl( *this, SetBattle, 0 ); + Network::Util::Packet::sendActorControl( *this, SetBattle, 0 ); } bool Player::isLogin() const @@ -1193,7 +1193,7 @@ void Player::setTitle( uint16_t titleId ) return; m_activeTitle = titleId; - Network::Util::Player::sendActorControl( getInRangePlayerIds( true ), *this, SetTitle, titleId ); + Network::Util::Packet::sendActorControl( getInRangePlayerIds( true ), *this, SetTitle, titleId ); } const Player::AchievementData& Player::getAchievementData() const @@ -1209,7 +1209,7 @@ void Player::setAchievementData( const Player::AchievementData& achievementData void Player::setMaxGearSets( uint8_t amount ) { m_equippedMannequin = amount; - Network::Util::Player::sendActorControlSelf( *this, SetMaxGearSets, m_equippedMannequin ); + Network::Util::Packet::sendActorControlSelf( *this, SetMaxGearSets, m_equippedMannequin ); } void Player::addGearSet() @@ -1234,7 +1234,7 @@ uint8_t Player::getMaxGearSets() const void Player::setConfigFlags( uint16_t state ) { m_configFlags = static_cast< uint8_t >( state ); - Network::Util::Player::sendConfigFlags( *this ); + Network::Util::Packet::sendConfigFlags( *this ); } uint8_t Player::getConfigFlags() const @@ -1245,7 +1245,7 @@ uint8_t Player::getConfigFlags() const void Player::setMount( uint32_t mountId ) { m_mount = mountId; - Network::Util::Player::sendMount( *this ); + Network::Util::Packet::sendMount( *this ); } void Player::setCompanion( uint8_t id ) @@ -1258,7 +1258,7 @@ void Player::setCompanion( uint8_t id ) m_companionId = id; - Network::Util::Player::sendActorControl( getInRangePlayerIds( true ), *this, ToggleCompanion, id ); + Network::Util::Packet::sendActorControl( getInRangePlayerIds( true ), *this, ToggleCompanion, id ); } uint8_t Player::getCurrentCompanion() const @@ -1418,7 +1418,7 @@ void Player::teleportQuery( uint16_t aetheryteId ) cost = std::min< uint16_t >( 999, cost ); bool insufficientGil = getCurrency( Common::CurrencyType::Gil ) < cost; - Network::Util::Player::sendActorControlSelf( *this, OnExecuteTelepo, insufficientGil ? 2 : 0, aetheryteId ); + Network::Util::Packet::sendActorControlSelf( *this, OnExecuteTelepo, insufficientGil ? 2 : 0, aetheryteId ); if( !insufficientGil ) { @@ -1493,7 +1493,7 @@ void Player::dyeItemFromDyeingInfo() insertInventoryItem( static_cast< Sapphire::Common::InventoryType >( itemToDyeContainer ), static_cast< uint16_t >( itemToDyeSlot ), itemToDye ); writeItem( itemToDye ); - Network::Util::Player::sendActorControlSelf( *this, DyeMsg, itemToDye->getId(), shouldDye, invalidateGearSet ); + Network::Util::Packet::sendActorControlSelf( *this, DyeMsg, itemToDye->getId(), shouldDye, invalidateGearSet ); } void Player::setGlamouringInfo( uint32_t itemToGlamourContainer, uint32_t itemToGlamourSlot, uint32_t glamourBagContainer, uint32_t glamourBagSlot, bool shouldGlamour ) @@ -1515,7 +1515,7 @@ void Player::glamourItemFromGlamouringInfo() uint32_t glamourBagSlot = m_glamouringInfo.glamourBagSlot; bool shouldGlamour = m_glamouringInfo.shouldGlamour; - Network::Util::Player::sendCondition( *this ); + Network::Util::Packet::sendCondition( *this ); auto itemToGlamour = getItemAt( itemToGlamourContainer, itemToGlamourSlot ); auto glamourToUse = getItemAt( glamourBagContainer, glamourBagSlot ); @@ -1547,9 +1547,9 @@ void Player::glamourItemFromGlamouringInfo() writeItem( itemToGlamour ); if( shouldGlamour ) - Network::Util::Player::sendActorControlSelf( *this, GlamourCastMsg, itemToGlamour->getId(), glamourToUse->getId(), invalidateGearSet ); + Network::Util::Packet::sendActorControlSelf( *this, GlamourCastMsg, itemToGlamour->getId(), glamourToUse->getId(), invalidateGearSet ); else - Network::Util::Player::sendActorControlSelf( *this, GlamourRemoveMsg, itemToGlamour->getId(), invalidateGearSet ); + Network::Util::Packet::sendActorControlSelf( *this, GlamourRemoveMsg, itemToGlamour->getId(), invalidateGearSet ); } void Player::resetObjSpawnIndex() @@ -1565,7 +1565,7 @@ void Player::freeObjSpawnIndexForActorId( uint32_t actorId ) if( spawnId == m_objSpawnIndexAllocator.getAllocFailId() ) return; - Network::Util::Player::sendDeleteObject( *this, spawnId ); + Network::Util::Packet::sendDeleteObject( *this, spawnId ); } bool Player::isObjSpawnIndexValid( uint8_t index ) @@ -1634,7 +1634,7 @@ void Player::updateHuntingLog( uint16_t id ) if( note1->data().Monster == id && logEntry.entries[ i - 1 ][ x ] < note->data().NeededKills[ x ] ) { logEntry.entries[ i - 1 ][ x ]++; - Network::Util::Player::sendActorControlSelf( *this, HuntingLogEntryUpdate, monsterNoteId, x, logEntry.entries[ i - 1 ][ x ] ); + Network::Util::Packet::sendActorControlSelf( *this, HuntingLogEntryUpdate, monsterNoteId, x, logEntry.entries[ i - 1 ][ x ] ); logChanged = true; sectionChanged = true; } @@ -1643,7 +1643,7 @@ void Player::updateHuntingLog( uint16_t id ) } if( logChanged && sectionComplete && sectionChanged ) { - Network::Util::Player::sendActorControlSelf( *this, HuntingLogSectionFinish, monsterNoteId, i, 0 ); + Network::Util::Packet::sendActorControlSelf( *this, HuntingLogSectionFinish, monsterNoteId, i, 0 ); gainExp( note->data().RewardExp ); } if( !sectionComplete ) @@ -1653,18 +1653,18 @@ void Player::updateHuntingLog( uint16_t id ) } if( logChanged && allSectionsComplete ) { - Network::Util::Player::sendActorControlSelf( *this, HuntingLogRankFinish, 4 ); + Network::Util::Packet::sendActorControlSelf( *this, HuntingLogRankFinish, 4 ); gainExp( rankRewards[ logEntry.rank ] ); if( logEntry.rank < 4 ) { logEntry.rank++; memset( logEntry.entries, 0, 40 ); - Network::Util::Player::sendActorControlSelf( *this, HuntingLogRankUnlock, currentClassId, logEntry.rank + 1, 0 ); + Network::Util::Packet::sendActorControlSelf( *this, HuntingLogRankUnlock, currentClassId, logEntry.rank + 1, 0 ); } } if( logChanged ) - Network::Util::Player::sendHuntingLog( *this ); + Network::Util::Packet::sendHuntingLog( *this ); } void Player::setActiveLand( uint8_t land, uint8_t ward ) @@ -1727,7 +1727,7 @@ void Player::resetRecastGroups() m_recast[ i ] = 0.0f; m_recastMax[ i ] = 0.0f; } - Network::Util::Player::sendRecastGroups( *this ); + Network::Util::Packet::sendRecastGroups( *this ); } bool Player::checkAction() @@ -1826,7 +1826,7 @@ void Player::setFalling( bool state, const Common::FFXIVARR_POSITION3& pos, bool // no mercy on hated players takeDamage( damage ); } - Network::Util::Player::sendActorControl( getInRangePlayerIds( true ), *this, SetFallDamage, damage ); + Network::Util::Packet::sendActorControl( getInRangePlayerIds( true ), *this, SetFallDamage, damage ); } } } diff --git a/src/world/Actor/PlayerEvent.cpp b/src/world/Actor/PlayerEvent.cpp index aaf2bbc0..fd1de801 100644 --- a/src/world/Actor/PlayerEvent.cpp +++ b/src/world/Actor/PlayerEvent.cpp @@ -12,7 +12,9 @@ #include "Manager/PlayerMgr.h" #include "Service.h" #include +#include +using namespace Sapphire; using namespace Sapphire::Common; using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::WorldPackets::Server; @@ -71,7 +73,7 @@ void Sapphire::Entity::Player::onTick() bool sendUpdate = performResting(); if( sendUpdate ) - server().queueForPlayers( getInRangePlayerIds( true ), std::make_shared< RestingPacket >( *this ) ); + Network::Util::Packet::sendRestingUpdate( *this ); } bool Sapphire::Entity::Player::performResting() diff --git a/src/world/Actor/PlayerInventory.cpp b/src/world/Actor/PlayerInventory.cpp index ff6ff745..5b262f25 100644 --- a/src/world/Actor/PlayerInventory.cpp +++ b/src/world/Actor/PlayerInventory.cpp @@ -18,7 +18,7 @@ #include "Network/PacketWrappers/ActorControlSelfPacket.h" #include "Network/PacketWrappers/UpdateInventorySlotPacket.h" #include -#include +#include #include "Manager/InventoryMgr.h" #include "Manager/ItemMgr.h" @@ -225,10 +225,10 @@ void Sapphire::Entity::Player::equipItem( Common::GearSetSlot equipSlotId, Item& calculateItemLevel(); if( sendUpdate ) { - Network::Util::Player::sendEquip( *this ); - Network::Util::Player::sendActorControl( *this, SetItemLevel, getItemLevel() ); - Network::Util::Player::sendBaseParams( *this ); - Network::Util::Player::sendHudParam( *this ); + Network::Util::Packet::sendEquip( *this ); + Network::Util::Packet::sendActorControl( *this, SetItemLevel, getItemLevel() ); + Network::Util::Packet::sendBaseParams( *this ); + Network::Util::Packet::sendHudParam( *this ); } } @@ -247,10 +247,10 @@ void Sapphire::Entity::Player::unequipItem( Common::GearSetSlot equipSlotId, Ite if( sendUpdate ) { - Network::Util::Player::sendEquip( *this ); - Network::Util::Player::sendActorControl( *this, SetItemLevel, getItemLevel() ); - Network::Util::Player::sendBaseParams( *this ); - Network::Util::Player::sendHudParam( *this ); + Network::Util::Packet::sendEquip( *this ); + Network::Util::Packet::sendActorControl( *this, SetItemLevel, getItemLevel() ); + Network::Util::Packet::sendBaseParams( *this ); + Network::Util::Packet::sendHudParam( *this ); } } diff --git a/src/world/Manager/AchievementMgr.cpp b/src/world/Manager/AchievementMgr.cpp index 75fbe184..3de7d4d8 100644 --- a/src/world/Manager/AchievementMgr.cpp +++ b/src/world/Manager/AchievementMgr.cpp @@ -2,7 +2,7 @@ #include #include "AchievementMgr.h" -#include +#include #include using namespace Sapphire; @@ -69,9 +69,9 @@ void AchievementMgr::unlockAchievement( Entity::Player& player, uint32_t achieve // fire packets player.setAchievementData( achvData ); - Network::Util::Player::sendAchievementList( player ); - Network::Util::Player::sendActorControl( player, AchievementComplete, achievementId ); - Network::Util::Player::sendActorControl( player, AchievementObtainMsg, achievementId ); + Network::Util::Packet::sendAchievementList( player ); + Network::Util::Packet::sendActorControl( player, AchievementComplete, achievementId ); + Network::Util::Packet::sendActorControl( player, AchievementObtainMsg, achievementId ); // check and add title to player auto achvTitleId = achvExd->data().Title; diff --git a/src/world/Manager/PlayerMgr.cpp b/src/world/Manager/PlayerMgr.cpp index 48e64eaa..19237200 100644 --- a/src/world/Manager/PlayerMgr.cpp +++ b/src/world/Manager/PlayerMgr.cpp @@ -7,8 +7,6 @@ #include #include -#include -#include #include #include @@ -18,18 +16,8 @@ #include #include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include #include #include @@ -218,9 +206,7 @@ void PlayerMgr::onMobKill( Entity::Player& player, Entity::BNpc& bnpc ) scriptMgr.onBNpcKill( player, bnpc ); if( player.hasReward( Common::UnlockEntry::HuntingLog ) ) - { player.updateHuntingLog( bnpc.getBNpcNameId() ); - } } void PlayerMgr::sendLoginMessage( Entity::Player& player ) @@ -262,48 +248,48 @@ void PlayerMgr::onMoveZone( Sapphire::Entity::Player& player ) } auto& teri = *pZone; - Network::Util::Player::sendLogin( player ); + Network::Util::Packet::sendLogin( player ); player.sendInventory(); if( player.isLogin() ) { - Network::Util::Player::sendActorControlSelf( player, SetConfigFlags, player.getConfigFlags(), 1 ); - Network::Util::Player::sendActorControlSelf( player, SetMaxGearSets, player.getMaxGearSets() ); + Network::Util::Packet::sendActorControlSelf( player, SetConfigFlags, player.getConfigFlags(), 1 ); + Network::Util::Packet::sendActorControlSelf( player, SetMaxGearSets, player.getMaxGearSets() ); } // set flags, will be reset automatically by zoning ( only on client side though ) //setStateFlag( PlayerStateFlag::BetweenAreas ); //setStateFlag( PlayerStateFlag::BetweenAreas1 ); - Network::Util::Player::sendHuntingLog( player ); + Network::Util::Packet::sendHuntingLog( player ); if( player.isLogin() ) - Network::Util::Player::sendPlayerSetup( player ); + Network::Util::Packet::sendPlayerSetup( player ); - Network::Util::Player::sendRecastGroups( player ); - Network::Util::Player::sendBaseParams( player ); - Network::Util::Player::sendActorControl( player, SetItemLevel, player.getItemLevel() ); + Network::Util::Packet::sendRecastGroups( player ); + Network::Util::Packet::sendBaseParams( player ); + Network::Util::Packet::sendActorControl( player, SetItemLevel, player.getItemLevel() ); if( player.isLogin() ) { - Network::Util::Player::sendChangeClass( player ); - Network::Util::Player::sendActorControl( player, 0x112, 0x24 ); // unknown - Network::Util::Player::sendContentAttainFlags( player ); + Network::Util::Packet::sendChangeClass( player ); + Network::Util::Packet::sendActorControl( player, 0x112, 0x24 ); // unknown + Network::Util::Packet::sendContentAttainFlags( player ); player.clearSoldItems(); } housingMgr.sendLandFlags( player ); - Network::Util::Player::sendInitZone( player ); + Network::Util::Packet::sendInitZone( player ); if( player.isLogin() ) { - Network::Util::Player::sendDailyQuests( player ); - Network::Util::Player::sendQuestRepeatFlags( player ); + Network::Util::Packet::sendDailyQuests( player ); + Network::Util::Packet::sendQuestRepeatFlags( player ); auto &questMgr = Common::Service< World::Manager::QuestMgr >::ref(); questMgr.sendQuestsInfo( player ); - Network::Util::Player::sendGrandCompany( player ); + Network::Util::Packet::sendGrandCompany( player ); } teri.onPlayerZoneIn( player ); @@ -357,22 +343,21 @@ void PlayerMgr::onUpdate( Entity::Player& player, uint64_t tickCount ) void PlayerMgr::sendServerNotice( Entity::Player& player, const std::string& message ) //Purple Text { - server().queueForPlayer( player.getCharacterId(), std::make_shared< ServerNoticePacket >( player.getId(), message ) ); + Network::Util::Packet::sendServerNotice( player, message ); } void PlayerMgr::sendUrgent( Entity::Player& player, const std::string& message ) //Red Text { - server().queueForPlayer( player.getCharacterId(), std::make_shared< ChatPacket >( player, Common::ChatType::ServerUrgent, message ) ); + Network::Util::Packet::sendChat( player, Common::ChatType::ServerUrgent, message ); } void PlayerMgr::sendDebug( Entity::Player& player, const std::string& message ) //Grey Text { - server().queueForPlayer( player.getCharacterId(), std::make_shared< ChatPacket >( player, Common::ChatType::SystemMessage, message ) ); + Network::Util::Packet::sendChat( player, Common::ChatType::SystemMessage, message ); } void PlayerMgr::sendLogMessage( Entity::Player& player, uint32_t messageId, uint32_t param2, uint32_t param3, uint32_t param4, uint32_t param5, uint32_t param6 ) { - server().queueForPlayer( player.getCharacterId(), makeActorControlTarget( player.getId(), ActorControlType::LogMsg, messageId, - param2, param3, param4, param5, param6 ) ); + Network::Util::Packet::sendActorControlTarget( player, LogMsg, messageId, param2, param3, param4, param5, param6 ); } diff --git a/src/world/Network/Handlers/PacketCommandHandler.cpp b/src/world/Network/Handlers/PacketCommandHandler.cpp index 54acc210..ac594db1 100644 --- a/src/world/Network/Handlers/PacketCommandHandler.cpp +++ b/src/world/Network/Handlers/PacketCommandHandler.cpp @@ -17,7 +17,7 @@ #include "Network/PacketWrappers/ActorControlPacket.h" #include "Network/PacketWrappers/ActorControlTargetPacket.h" #include "Network/PacketWrappers/MoveActorPacket.h" -#include "Network/Util/PlayerUtil.h" +#include "Network/Util/PacketUtil.h" #include "Action/Action.h" @@ -388,15 +388,9 @@ void examineHandler( Sapphire::Entity::Player& player, uint32_t targetId ) return; if( pPlayer->isActingAsGm() || pPlayer->getTerritoryTypeId() != player.getTerritoryTypeId() ) - { - server().queueForPlayer( player.getCharacterId(), makeActorControl( player.getId(), ActorControlType::ExamineError ) ); - } + Network::Util::Packet::sendActorControl( player, ExamineError ); else - { server().queueForPlayer( player.getCharacterId(), std::make_shared< InspectPacket >( player, pPlayer ) ); - } - - } void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) @@ -424,7 +418,7 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ player.setStance( Stance::Passive ); player.setAutoattack( false ); } - server().queueForPlayers( player.getInRangePlayerIds(), makeActorControl( player.getId(), 0, data.Arg0, 1 ) ); + Network::Util::Packet::sendActorControl( player.getInRangePlayerIds(), player, ToggleWeapon, data.Arg0, 1 ); break; } case PacketCommand::AUTO_ATTACK: // Toggle auto-attack @@ -437,7 +431,7 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ else player.setAutoattack( false ); - server().queueForPlayers( player.getInRangePlayerIds(), makeActorControl( player.getId(), 1, data.Arg0, 1 ) ); + Network::Util::Packet::sendActorControl( player.getInRangePlayerIds(), player, AutoAttack, data.Arg0, 1 ); break; } @@ -494,7 +488,7 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ } case PacketCommand::TITLE_LIST: // Get title list { - Network::Util::Player::sendTitleList( player ); + Network::Util::Packet::sendTitleList( player ); break; } case PacketCommand::SET_HOWTO: // Update howtos seen @@ -504,7 +498,7 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ } case PacketCommand::SET_CUTSCENE: { - server().queueForPlayer( player.getCharacterId(), makeActorControl( player.getId(), ActorControlType::SetCutsceneFlag, data.Arg0, 1 ) ); + Network::Util::Packet::sendActorControl( player, SetCutsceneFlag, data.Arg0, 1 ); break; } case PacketCommand::EMOTE: // emote @@ -519,8 +513,7 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ if( !emoteData ) return; - server().queueForPlayers( player.getInRangePlayerIds(), - makeActorControlTarget( player.getId(), ActorControlType::Emote, emoteId, 0, isSilent ? 1 : 0, 0, targetId ) ); + Network::Util::Packet::sendActorControlTarget( player.getInRangePlayerIds(), player, Emote, emoteId, 0, isSilent ? 1 : 0, 0, targetId ); bool isPersistent = emoteData->data().Mode != 0; @@ -531,9 +524,8 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ player.setPersistentEmote( emoteData->data().Mode ); player.setStatus( ActorStatus::EmoteMode ); - server().queueForPlayers( player.getInRangePlayerIds( true ), makeActorControl( player.getId(), ActorControlType::SetStatus, - static_cast< uint8_t >( ActorStatus::EmoteMode ), - emoteData->data().IsEndEmoteMode ? 1 : 0 ) ); + Network::Util::Packet::sendActorControl( player.getInRangePlayerIds( true ), player, SetStatus, static_cast< uint8_t >( ActorStatus::EmoteMode ), + emoteData->data().IsEndEmoteMode ? 1 : 0 ); } if( emoteData->data().IsAvailableWhenDrawn ) @@ -545,7 +537,7 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ } case PacketCommand::EMOTE_CANCEL: // emote { - server().queueForPlayers( player.getInRangePlayerIds(), makeActorControl( player.getId(), ActorControlType::EmoteInterrupt ) ); + Network::Util::Packet::sendActorControl( player.getInRangePlayerIds(), player, EmoteModeInterrupt ); break; } case PacketCommand::EMOTE_MODE_CANCEL: @@ -556,8 +548,9 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ player.setStatus( ActorStatus::Idle ); server().queueForPlayers( player.getInRangePlayerIds(), std::make_shared< MoveActorPacket >( player, player.getRot(), 2, 0, 0, 0x5A / 4 ) ); - server().queueForPlayers( player.getInRangePlayerIds(), makeActorControl( player.getId(), ActorControlType::EmoteModeInterrupt ) ); - server().queueForPlayers( player.getInRangePlayerIds(), makeActorControl( player.getId(), SetStatus, static_cast< uint8_t >( ActorStatus::Idle ) ) ); + + Network::Util::Packet::sendActorControl( player.getInRangePlayerIds(), player, EmoteModeInterrupt ); + Network::Util::Packet::sendActorControl( player.getInRangePlayerIds(), player, SetStatus, static_cast< uint8_t >( ActorStatus::Idle ) ); } break; } @@ -565,7 +558,7 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ case PacketCommand::POSE_EMOTE_WORK: // reapply pose { player.setPose( static_cast< uint8_t >( data.Arg1 ) ); - server().queueForPlayers( player.getInRangePlayerIds( true ), makeActorControl( player.getId(), SetPose, data.Arg0, data.Arg1 ) ); + Network::Util::Packet::sendActorControl( player.getInRangePlayerIds( true ), player, SetPose, data.Arg0, data.Arg1 ); break; } case PacketCommand::POSE_EMOTE_CANCEL: // cancel pose @@ -604,12 +597,12 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ auto achievementId = data.Arg0; auto& achvMgr = Common::Service< AchievementMgr >::ref(); auto achvProgress = achvMgr.getAchievementDataById( player, achievementId ); - Network::Util::Player::sendActorControl( player, AchievementSetRate, achievementId, achvProgress.first, achvProgress.second ); + Network::Util::Packet::sendActorControl( player, AchievementSetRate, achievementId, achvProgress.first, achvProgress.second ); break; } case PacketCommand::ACHIEVEMENT_REQUEST: { - Network::Util::Player::sendAchievementList( player ); + Network::Util::Packet::sendAchievementList( player ); break; } case PacketCommand::TELEPO_INQUIRY: // Teleport @@ -670,7 +663,7 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ player.setActiveLand( static_cast< uint8_t >( data.Arg0 ), hZone->getWardNum() ); - server().queueForPlayer( player.getCharacterId(), makeActorControl( player.getId(), ShowBuildPresetUI, data.Arg0 ) ); + Network::Util::Packet::sendActorControl( player, ShowBuildPresetUI, data.Arg0 ); break; } case PacketCommand::HOUSING_AUCTION_INFO: @@ -748,8 +741,7 @@ void Sapphire::Network::GameConnection::commandHandler( const Packets::FFXIVARR_ uint8_t ward = ( data.Arg1 >> 16 ) & 0xFF; uint8_t plot = ( data.Arg1 & 0xFF ); - server().queueForPlayer( player.getCharacterId(), makeActorControl( player.getId(), ShowHousingItemUI, 0, plot ) ); - + Network::Util::Packet::sendActorControl( player, ShowHousingItemUI, 0, plot ); //TODO: show item housing container break; diff --git a/src/world/Network/Handlers/PacketHandlers.cpp b/src/world/Network/Handlers/PacketHandlers.cpp index 19057acb..3d03fbb0 100644 --- a/src/world/Network/Handlers/PacketHandlers.cpp +++ b/src/world/Network/Handlers/PacketHandlers.cpp @@ -29,6 +29,7 @@ #include "Network/PacketWrappers/ActorControlSelfPacket.h" #include "Network/PacketWrappers/ActorControlTargetPacket.h" #include "Network/PacketWrappers/UpdateInventorySlotPacket.h" +#include "Network/Util/PacketUtil.h" #include "Manager/DebugCommandMgr.h" #include "Manager/MarketMgr.h" @@ -83,8 +84,7 @@ void Sapphire::Network::GameConnection::setProfileHandler( const Packets::FFXIVA strcpy( searchInfoPacket->data().SearchComment, player.getSearchMessage() ); queueOutPacket( searchInfoPacket ); - server().queueForPlayers( player.getInRangePlayerIds( true ), makeActorControl( player.getId(), SetStatusIcon, - static_cast< uint8_t >( player.getOnlineStatus() ) ) ); + Network::Util::Packet::sendActorControl( player.getInRangePlayerIds( true ), player, SetStatusIcon, static_cast< uint8_t >( player.getOnlineStatus() ) ); } void Sapphire::Network::GameConnection::getProfileHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) @@ -236,7 +236,7 @@ void Sapphire::Network::GameConnection::moveHandler( const Packets::FFXIVARR_PAC unknownRotation = 0x7F; } - uint64_t currentTime = Util::getTimeMs(); + uint64_t currentTime = Common::Util::getTimeMs(); player.m_lastMoveTime = currentTime; player.m_lastMoveflag = animationType; diff --git a/src/world/Network/Util/PlayerUtil.cpp b/src/world/Network/Util/PacketUtil.cpp similarity index 76% rename from src/world/Network/Util/PlayerUtil.cpp rename to src/world/Network/Util/PacketUtil.cpp index f9f3d611..fe1fa27a 100644 --- a/src/world/Network/Util/PlayerUtil.cpp +++ b/src/world/Network/Util/PacketUtil.cpp @@ -1,4 +1,4 @@ -#include "PlayerUtil.h" +#include "PacketUtil.h" #include @@ -18,23 +18,25 @@ #include #include #include +#include +#include using namespace Sapphire; using namespace Sapphire::World::Manager; using namespace Sapphire::Network; -using namespace Sapphire::Network::Util::Player; +using namespace Sapphire::Network::Util::Packet; using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::WorldPackets::Server; using namespace Sapphire::Network::ActorControl; -void Util::Player::sendConfigFlags( Entity::Player& player ) +void Util::Packet::sendConfigFlags( Entity::Player& player ) { auto paramPacket = makeZonePacket< FFXIVIpcConfig >( player.getId() ); paramPacket->data().flag = player.getConfigFlags(); server().queueForPlayers( player.getInRangePlayerIds( true ), paramPacket ); } -void Util::Player::sendOnlineStatus( Entity::Player& player ) +void Util::Packet::sendOnlineStatus( Entity::Player& player ) { auto statusPacket = makeZonePacket< FFXIVIpcSetOnlineStatus >( player.getId() ); statusPacket->data().onlineStatusFlags = player.getFullOnlineStatusMask(); @@ -44,7 +46,7 @@ void Util::Player::sendOnlineStatus( Entity::Player& player ) makeActorControl( player.getId(), SetStatusIcon, static_cast< uint8_t >( player.getOnlineStatus() ) ) ); } -void Util::Player::sendBaseParams( Entity::Player& player ) +void Util::Packet::sendBaseParams( Entity::Player& player ) { std::array< uint32_t, 50 > statParams{}; std::fill( std::begin( statParams ), std::end( statParams ), 0 ); @@ -67,13 +69,13 @@ void Util::Player::sendBaseParams( Entity::Player& player ) server().queueForPlayer( player.getCharacterId(), statPacket ); } -void Util::Player::sendHudParam( Entity::Player& player ) +void Util::Packet::sendHudParam( Entity::Player& player ) { auto hudParamPacket = makeHudParam( player ); server().queueForPlayer( player.getCharacterId(), hudParamPacket ); } -void Util::Player::sendStatusUpdate( Entity::Player& player ) +void Util::Packet::sendStatusUpdate( Entity::Player& player ) { auto playerStatusUpdate = makeZonePacket< FFXIVIpcPlayerStatusUpdate >( player.getId() ); playerStatusUpdate->data().ClassJob = static_cast< uint8_t >( player.getClass() ); @@ -85,7 +87,7 @@ void Util::Player::sendStatusUpdate( Entity::Player& player ) server().queueForPlayer( player.getCharacterId(), playerStatusUpdate ); } -void Util::Player::sendHuntingLog( Entity::Player& player ) +void Util::Packet::sendHuntingLog( Entity::Player& player ) { auto& exdData = Common::Service< Data::ExdData >::ref(); for( auto entryCount = 0; entryCount < Common::ARRSIZE_MONSTERNOTE; ++entryCount ) @@ -128,37 +130,49 @@ void Util::Player::sendHuntingLog( Entity::Player& player ) } } -void Util::Player::sendActorControlSelf( Entity::Player& player, uint16_t category, uint32_t param1, uint32_t param2, uint32_t param3, +void Util::Packet::sendActorControlSelf( Entity::Player& player, uint16_t category, uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4, uint32_t param5 ) { server().queueForPlayer( player.getCharacterId(), makeActorControlSelf( player.getId(), category, param1, param2, param3, param4, param5 ) ); } -void Util::Player::sendActorControlSelf( const std::set< uint64_t >& characterIds, Entity::Player& player, uint16_t category, uint32_t param1, +void Util::Packet::sendActorControlSelf( const std::set< uint64_t >& characterIds, Entity::Player& player, uint16_t category, uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4, uint32_t param5 ) { server().queueForPlayers( characterIds, makeActorControlSelf( player.getId(), category, param1, param2, param3, param4, param5 ) ); } -void Util::Player::sendActorControl( Entity::Player& player, uint16_t category, uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4 ) +void Util::Packet::sendActorControl( Entity::Player& player, uint16_t category, uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4 ) { server().queueForPlayer( player.getCharacterId(), makeActorControl( player.getId(), category, param1, param2, param3, param4 ) ); } -void Util::Player::sendActorControl( const std::set< uint64_t >& characterIds, Entity::Player& player, uint16_t category, uint32_t param1, +void Util::Packet::sendActorControl( const std::set< uint64_t >& characterIds, Entity::Player& player, uint16_t category, uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4 ) { server().queueForPlayers( characterIds, makeActorControl( player.getId(), category, param1, param2, param3, param4 ) ); } -void Util::Player::sendTitleList( Entity::Player& player ) +void Util::Packet::sendActorControlTarget( Entity::Player& player, uint16_t category, uint32_t param1, uint32_t param2, uint32_t param3, + uint32_t param4, uint32_t param5, uint32_t param6 ) +{ + server().queueForPlayer( player.getCharacterId(), makeActorControlTarget( player.getId(), category, param1, param2, param3, param4, param5, param6 ) ); +} + +void Util::Packet::sendActorControlTarget( const std::set< uint64_t >& characterIds, Entity::Player& player, uint16_t category, uint32_t param1, + uint32_t param2, uint32_t param3, uint32_t param4, uint32_t param5, uint32_t param6 ) +{ + server().queueForPlayers( characterIds, makeActorControlTarget( player.getId(), category, param1, param2, param3, param4, param5, param6 ) ); +} + +void Util::Packet::sendTitleList( Entity::Player& player ) { auto titleListPacket = makeZonePacket< FFXIVIpcTitleList >( player.getId() ); memcpy( titleListPacket->data().TitleFlagsArray, player.getTitleList().data(), sizeof( titleListPacket->data().TitleFlagsArray ) ); server().queueForPlayer( player.getCharacterId(), titleListPacket ); } -void Util::Player::sendGrandCompany( Entity::Player& player ) +void Util::Packet::sendGrandCompany( Entity::Player& player ) { auto gcAffPacket = makeZonePacket< FFXIVIpcGrandCompany >( player.getId() ); gcAffPacket->data().ActiveCompanyId = player.getGc(); @@ -168,7 +182,7 @@ void Util::Player::sendGrandCompany( Entity::Player& player ) server().queueForPlayer( player.getCharacterId(), gcAffPacket ); } -void Util::Player::sendDeletePlayer( Entity::Player& player, uint32_t actorId, uint8_t spawnIndex ) +void Util::Packet::sendDeletePlayer( Entity::Player& player, uint32_t actorId, uint8_t spawnIndex ) { auto freeActorSpawnPacket = makeZonePacket< FFXIVIpcActorFreeSpawn >( player.getId() ); freeActorSpawnPacket->data().actorId = actorId; @@ -176,14 +190,14 @@ void Util::Player::sendDeletePlayer( Entity::Player& player, uint32_t actorId, u server().queueForPlayer( player.getCharacterId(), freeActorSpawnPacket ); } -void Util::Player::sendDeleteObject( Entity::Player& player, uint8_t spawnIndex ) +void Util::Packet::sendDeleteObject( Entity::Player& player, uint8_t spawnIndex ) { auto freeObjectSpawnPacket = makeZonePacket< FFXIVIpcDeleteObject >( player.getId() ); freeObjectSpawnPacket->data().Index = spawnIndex; server().queueForPlayer( player.getCharacterId(), freeObjectSpawnPacket ); } -void Util::Player::sendHateList( Entity::Player& player ) +void Util::Packet::sendHateList( Entity::Player& player ) { auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); @@ -211,7 +225,7 @@ void Util::Player::sendHateList( Entity::Player& player ) if( hateValue == 0 ) continue; - auto hatePercent = ( hateValue / static_cast< float >( pBNpc->hateListGetHighestValue() ) ) * 100.f; + auto hatePercent = ( static_cast< float >( hateValue ) / static_cast< float >( pBNpc->hateListGetHighestValue() ) ) * 100.f; hateListPacket->data().List[ i ].Id = player.getId(); hateListPacket->data().List[ i ].Value = hateValue; @@ -223,36 +237,36 @@ void Util::Player::sendHateList( Entity::Player& player ) server().queueForPlayer( player.getCharacterId(), { hateListPacket, hateRankPacket } ); } -void Util::Player::sendMount( Entity::Player& player ) +void Util::Packet::sendMount( Entity::Player& player ) { auto mountId = player.getCurrentMount(); auto inRangePlayerIds = player.getInRangePlayerIds( true ); if( mountId != 0 ) { - Network::Util::Player::sendActorControl( inRangePlayerIds, player, SetStatus, static_cast< uint8_t >( Common::ActorStatus::Mounted ) ); - Network::Util::Player::sendActorControlSelf( inRangePlayerIds, player, 0x39e, 12 ); + Network::Util::Packet::sendActorControl( inRangePlayerIds, player, SetStatus, static_cast< uint8_t >( Common::ActorStatus::Mounted ) ); + Network::Util::Packet::sendActorControlSelf( inRangePlayerIds, player, 0x39e, 12 ); } else { - Network::Util::Player::sendActorControl( inRangePlayerIds, player, SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) ); - Network::Util::Player::sendActorControlSelf( inRangePlayerIds, player, Dismount, 1 ); + Network::Util::Packet::sendActorControl( inRangePlayerIds, player, SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) ); + Network::Util::Packet::sendActorControlSelf( inRangePlayerIds, player, Dismount, 1 ); } auto mountPacket = makeZonePacket< FFXIVIpcMount >( player.getId() ); mountPacket->data().id = mountId; server().queueForPlayers( inRangePlayerIds, mountPacket ); } -void Util::Player::sendEquip( Entity::Player& player ) +void Util::Packet::sendEquip( Entity::Player& player ) { server().queueForPlayers( player.getInRangePlayerIds( true ), std::make_shared< ModelEquipPacket >( player ) ); } -void Util::Player::sendCondition( Entity::Player& player ) +void Util::Packet::sendCondition( Entity::Player& player ) { server().queueForPlayer( player.getCharacterId(), std::make_shared< ConditionPacket >( player ) ); } -void Util::Player::sendRecastGroups( Entity::Player& player ) +void Util::Packet::sendRecastGroups( Entity::Player& player ) { const auto& recastGroups = player.getRecastGroups(); const auto& recastGroupsMax = player.getRecastGroupsMax(); @@ -262,7 +276,7 @@ void Util::Player::sendRecastGroups( Entity::Player& player ) server().queueForPlayer( player.getCharacterId(), recastGroupPaket ); } -void Util::Player::sendAchievementList( Entity::Player& player ) +void Util::Packet::sendAchievementList( Entity::Player& player ) { auto achvData = player.getAchievementData(); auto achvPacket = makeZonePacket< FFXIVIpcAchievement >( player.getId() ); @@ -271,24 +285,24 @@ void Util::Player::sendAchievementList( Entity::Player& player ) server().queueForPlayer( player.getCharacterId(), achvPacket ); } -void Util::Player::sendRestingUpdate( Entity::Player& player ) +void Util::Packet::sendRestingUpdate( Entity::Player& player ) { server().queueForPlayers( player.getInRangePlayerIds( true ), std::make_shared< RestingPacket >( player ) ); } -void Util::Player::sendLogin( Entity::Player& player ) +void Util::Packet::sendLogin( Entity::Player& player ) { auto initPacket = makeZonePacket< FFXIVIpcLogin >( player.getId() ); initPacket->data().playerActorId = player.getId(); server().queueForPlayer( player.getCharacterId(), initPacket ); } -void Util::Player::sendPlayerSetup( Entity::Player& player ) +void Util::Packet::sendPlayerSetup( Entity::Player& player ) { server().queueForPlayer( player.getCharacterId(), makePlayerSetup( player ) ); } -void Util::Player::sendChangeClass( Entity::Player& player ) +void Util::Packet::sendChangeClass( Entity::Player& player ) { auto classInfo = makeZonePacket< FFXIVIpcChangeClass >( player.getId() ); classInfo->data().ClassJob = static_cast< uint8_t >( player.getClass() ); @@ -298,7 +312,7 @@ void Util::Player::sendChangeClass( Entity::Player& player ) server().queueForPlayer( player.getCharacterId(), classInfo ); } -void Util::Player::sendContentAttainFlags( Entity::Player& player ) +void Util::Packet::sendContentAttainFlags( Entity::Player& player ) { // todo - fill with actual data from player auto contentFinderList = makeZonePacket< FFXIVIpcContentAttainFlags >( player.getId() ); @@ -306,7 +320,7 @@ void Util::Player::sendContentAttainFlags( Entity::Player& player ) server().queueForPlayer( player.getCharacterId(), contentFinderList ); } -void Util::Player::sendInitZone( Entity::Player& player ) +void Util::Packet::sendInitZone( Entity::Player& player ) { auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); auto pZone = teriMgr.getTerritoryByGuId( player.getTerritoryId() ); @@ -319,12 +333,22 @@ void Util::Player::sendInitZone( Entity::Player& player ) server().queueForPlayer( player.getCharacterId(), makeInitZone( player, teri ) ); } -void Util::Player::sendDailyQuests( Entity::Player& player ) +void Util::Packet::sendDailyQuests( Entity::Player& player ) { server().queueForPlayer( player.getCharacterId(), makeZonePacket< FFXIVIpcDailyQuests >( player.getId() ) ); } -void Util::Player::sendQuestRepeatFlags( Entity::Player& player ) +void Util::Packet::sendQuestRepeatFlags( Entity::Player& player ) { server().queueForPlayer( player.getCharacterId(), makeZonePacket< FFXIVIpcQuestRepeatFlags >( player.getId() ) ); +} + +void Util::Packet::sendServerNotice( Entity::Player& player, const std::string& message ) +{ + server().queueForPlayer( player.getCharacterId(), std::make_shared< ServerNoticePacket >( player.getId(), message ) ); +} + +void Util::Packet::sendChat( Entity::Player& player, Common::ChatType chatType, const std::string& message ) +{ + server().queueForPlayer( player.getCharacterId(), std::make_shared< ChatPacket >( player, chatType, message ) ); } \ No newline at end of file diff --git a/src/world/Network/Util/PlayerUtil.h b/src/world/Network/Util/PacketUtil.h similarity index 75% rename from src/world/Network/Util/PlayerUtil.h rename to src/world/Network/Util/PacketUtil.h index fab84d70..6a119eab 100644 --- a/src/world/Network/Util/PlayerUtil.h +++ b/src/world/Network/Util/PacketUtil.h @@ -5,7 +5,7 @@ #include #include "Forwards.h" -namespace Sapphire::Network::Util::Player +namespace Sapphire::Network::Util::Packet { void sendConfigFlags( Entity::Player& player ); void sendOnlineStatus( Entity::Player& player ); @@ -48,6 +48,10 @@ namespace Sapphire::Network::Util::Player void sendDailyQuests( Entity::Player& player ); void sendQuestRepeatFlags( Entity::Player& player ); + void sendServerNotice( Entity::Player& player, const std::string& message ); + + void sendChat( Entity::Player& player, Common::ChatType chatType, const std::string& message ); + void sendActorControlSelf( Entity::Player& player, uint16_t category, uint32_t param1 = 0, uint32_t param2 = 0, uint32_t param3 = 0, uint32_t param4 = 0, uint32_t param5 = 0 ); @@ -59,4 +63,9 @@ namespace Sapphire::Network::Util::Player void sendActorControl( const std::set< uint64_t >& characterIds, Entity::Player& player, uint16_t category, uint32_t param1 = 0, uint32_t param2 = 0, uint32_t param3 = 0, uint32_t param4 = 0 ); + void sendActorControlTarget( Entity::Player& player, uint16_t category, uint32_t param1 = 0, uint32_t param2 = 0, uint32_t param3 = 0, + uint32_t param4 = 0, uint32_t param5 = 0, uint32_t param6 = 0 ); + + void sendActorControlTarget( const std::set< uint64_t >& characterIds, Entity::Player& player, uint16_t category, uint32_t param1 = 0, + uint32_t param2 = 0, uint32_t param3 = 0, uint32_t param4 = 0, uint32_t param5 = 0, uint32_t param6 = 0 ); } \ No newline at end of file