From f2c2087d7b91c27d0c8a4256f3a73819e444fc05 Mon Sep 17 00:00:00 2001 From: goaaats Date: Sat, 23 Jun 2018 21:38:04 +0200 Subject: [PATCH] Streamline ActorControlTypes, refactor ActionHandler/ClientTrigger to ClientActorControl --- src/common/Common.h | 202 ------------ src/common/Network/CommonActorControl.h | 291 ++++++++++++++++++ src/common/Network/PacketDef/Ipcs.h | 2 +- .../sapphire_zone/Action/ActionCast.cpp | 2 + .../sapphire_zone/Action/ActionMount.cpp | 2 + .../sapphire_zone/Action/ActionTeleport.cpp | 2 + .../sapphire_zone/Action/EventAction.cpp | 6 +- .../sapphire_zone/Action/EventItemAction.cpp | 2 + src/servers/sapphire_zone/Actor/Chara.cpp | 2 + .../sapphire_zone/Actor/EventObject.cpp | 6 +- src/servers/sapphire_zone/Actor/Player.cpp | 4 +- .../sapphire_zone/Actor/PlayerInventory.cpp | 4 +- src/servers/sapphire_zone/Event/Director.cpp | 2 + .../sapphire_zone/Inventory/Inventory.cpp | 2 + .../sapphire_zone/Network/GameConnection.cpp | 2 +- .../sapphire_zone/Network/GameConnection.h | 2 +- ...dler.cpp => ClientActorControlHandler.cpp} | 123 ++------ .../Network/Handlers/GMCommandHandlers.cpp | 2 + .../Network/Handlers/PacketHandlers.cpp | 2 + .../Network/Handlers/SkillHandler.cpp | 2 + .../sapphire_zone/Zone/InstanceContent.cpp | 2 + src/servers/sapphire_zone/Zone/Zone.cpp | 5 +- 22 files changed, 360 insertions(+), 309 deletions(-) create mode 100644 src/common/Network/CommonActorControl.h rename src/servers/sapphire_zone/Network/Handlers/{ActionHandler.cpp => ClientActorControlHandler.cpp} (62%) diff --git a/src/common/Common.h b/src/common/Common.h index f1336445..da5f6a6f 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -406,208 +406,6 @@ namespace Common { Completed = 8, }; - enum ActorControlType : uint16_t - { - ToggleWeapon = 0x01, - SetStatus = 0x02, - CastStart = 0x03, - ToggleAggro = 0x04, - ClassJobChange = 0x05, - DefeatMsg = 0x06, - GainExpMsg = 0x07, - - LevelUpEffect = 0x0A, - - ExpChainMsg = 0x0C, - HpSetStat = 0x0D, - DeathAnimation = 0x0E, - CastInterrupt = 0x0F, - - ActionStart = 0x11, - - StatusEffectGain = 0x14, - StatusEffectLose = 0x15, - - HPFloatingText = 0x17, - UpdateRestedExp = 0x018, - Unk2 = 0x19, - - Flee = 0x1B, - - Unk3 = 0x20, // Animation related? - - CombatIndicationShow = 0x22, - - SpawnEffect = 0x25, - ToggleInvisible = 0x26, - - ToggleActionUnlock = 0x29, - - UpdateUiExp = 0x2B, - DmgTakenMsg = 0x2D, - - SetTarget = 0x32, - ToggleNameHidden = 0x36, - - LimitbreakStart = 0x47, - LimitbreakPartyStart = 0x48, - BubbleText = 0x49, - - DamageEffect = 0x50, - RaiseAnimation = 0x51, - TreasureScreenMsg = 0x57, - SetOwnerId = 0x59, - ItemRepairMsg = 0x5C, - - DirectorInit = 0x64, - DirectorClear = 0x65, - - LeveStartAnim = 0x66, - LeveStartError = 0x67, - DirectorEObjMod = 0x6A, - - DirectorUpdate = 0x6D, - - ItemObtainMsg = 0x75, - DutyQuestScreenMsg = 0x7B, - - ItemObtainIcon = 0x84, - FateItemFailMsg = 0x85, - ItemFailMsg = 0x86, - ActionLearnMsg1 = 0x87, - - FreeEventPos = 0x8A, - - SetBGM = 0xA1, - - UnlockAetherCurrentMsg = 0xA4, - - RemoveName = 0xA8, - - ScreenFadeOut = 0xAA, - - ZoneIn = 0xC8, - ZoneInDefaultPos = 0xC9, - - TeleportStart = 0xCB, - - TeleportDone = 0xCD, - TeleportDoneFadeOut = 0xCE, - DespawnZoneScreenMsg = 0xCF, - - InstanceSelectDlg = 0xD2, - ActorDespawnEffect = 0xD4, - - CompanionUnlock = 0xFD, - ObtainBarding = 0xFE, - EquipBarding = 0xFF, - - CompanionMsg1 = 0x102, - CompanionMsg2 = 0x103, - ShowPetHotbar = 0x104, - - ActionLearnMsg = 0x109, - ActorFadeOut = 0x10A, - ActorFadeIn = 0x10B, - WithdrawMsg = 0x10C, - OrderMinion = 0x10D, - ToggleMinion = 0x10E, - LearnMinion = 0x10F, - ActorFateOut1 = 0x110, - - Emote = 0x122, - - SetPose = 0x127, - - CraftingUnk = 0x12C, - - GatheringSenseMsg = 0x130, - PartyMsg = 0x131, - GatheringSenseMsg1 = 0x132, - - GatheringSenseMsg2 = 0x138, - - FishingMsg = 0x140, - - FishingBaitMsg = 0x145, - - FishingReachMsg = 0x147, - FishingFailMsg = 0x148, - - MateriaConvertMsg = 0x15E, - MeldSuccessMsg = 0x15F, - MeldFailMsg = 0x160, - MeldModeToggle = 0x161, - - AetherRestoreMsg = 0x163, - - DyeMsg = 0x168, - - ToggleCrestMsg = 0x16A, - ToggleBulkCrestMsg = 0x16B, - MateriaRemoveMsg = 0x16C, - GlamourCastMsg = 0x16D, - GlamourRemoveMsg = 0x16E, - - RelicInfuseMsg = 0x179, - - AetherReductionDlg = 0x17D, - - Unk6 = 0x19C, - EObjAnimation = 0x19D, - - SetTitle = 0x1F4, - - SetStatusIcon = 0x1F8, - LimitBreakGauge = 0x1F9, // Max level, amount, build type (chop sound), lb type(0=pve lb 1=pvp lb) - SetHomepoint = 0x1FB, - SetFavorite = 0x1FC, - LearnTeleport = 0x1FD, - - OpenRecommendationGuide = 0x200, - ArmoryErrorMsg = 0x201, - - AchievementPopup = 0x203, - - Unk7 = 0x205, // LogMessage? - AchievementMsg = 0x206, - - SetItemLevel = 0x209, - - ChallengeEntryCompleteMsg = 0x20B, - ChallengeEntryUnlockMsg = 0x20C, - - GilTrailMsg = 0x211, - - SetMaxGearSets = 0x230, - - SetCharaGearParamUI = 0x260, - - GearSetEquipMsg = 0x321, - - SetFestival = 0x386, // param1: festival.exd index - - ToggleOrchestrionUnlock = 0x396, - Dismount = 0x3A0, - - // Duty Recorder - BeginReplayAck = 0x3A1, - EndReplayAck = 0x3A2, - - // PvP Duel - SetPvPState = 0x5E0, // param3 must be 6 to engage a duel (hardcoded in the client) - EndDuelSession = 0x5E1, // because someone went oob? - StartDuelCountdown = 0x5E2, // begins a countdown; also does some duel bgm thing. - StartDuel = 0x5E3, // actually all it does is set the challenger actor id; - DuelResultScreen = 0x5E4, // win/lose thing, also reset a target id just like what EndDuelSession does. - - // Duty Action - SetDutyActionId = 0x5E8, // ContentExAction - SetDutyActionHud = 0x5E9, // disable/enable - SetDutyActionActive = 0x5EA, - SetDutyActionRemaining = 0x5EB, - }; - enum struct ChatType : uint16_t { LogKindError, diff --git a/src/common/Network/CommonActorControl.h b/src/common/Network/CommonActorControl.h new file mode 100644 index 00000000..4bf8328a --- /dev/null +++ b/src/common/Network/CommonActorControl.h @@ -0,0 +1,291 @@ +#ifndef _COMMONACTORCONTROL_H +#define _COMMONACTORCONTROL_H + +#include +#include + +#include +#include "CommonGen.h" + +// +--------------------------------------------------------------------------- +// The following enumerations are structures to require their type be included. +// They are also defined within the Core::Common namespace to avoid collisions. +// +--------------------------------------------------------------------------- +namespace Core { + namespace Network { + namespace ActorControl { + + enum ActorControlType : uint16_t + { + ToggleWeapon = 0x01, + SetStatus = 0x02, + CastStart = 0x03, + ToggleAggro = 0x04, + ClassJobChange = 0x05, + DefeatMsg = 0x06, + GainExpMsg = 0x07, + + LevelUpEffect = 0x0A, + + ExpChainMsg = 0x0C, + HpSetStat = 0x0D, + DeathAnimation = 0x0E, + CastInterrupt = 0x0F, + + ActionStart = 0x11, + + StatusEffectGain = 0x14, + StatusEffectLose = 0x15, + + HPFloatingText = 0x17, + UpdateRestedExp = 0x018, + Unk2 = 0x19, + + Flee = 0x1B, + + Unk3 = 0x20, // Animation related? + + CombatIndicationShow = 0x22, + + SpawnEffect = 0x25, + ToggleInvisible = 0x26, + + ToggleActionUnlock = 0x29, + + UpdateUiExp = 0x2B, + DmgTakenMsg = 0x2D, + + SetTarget = 0x32, + ToggleNameHidden = 0x36, + + LimitbreakStart = 0x47, + LimitbreakPartyStart = 0x48, + BubbleText = 0x49, + + DamageEffect = 0x50, + RaiseAnimation = 0x51, + TreasureScreenMsg = 0x57, + SetOwnerId = 0x59, + ItemRepairMsg = 0x5C, + + DirectorInit = 0x64, + DirectorClear = 0x65, + + LeveStartAnim = 0x66, + LeveStartError = 0x67, + DirectorEObjMod = 0x6A, + + DirectorUpdate = 0x6D, + + ItemObtainMsg = 0x75, + DutyQuestScreenMsg = 0x7B, + + ItemObtainIcon = 0x84, + FateItemFailMsg = 0x85, + ItemFailMsg = 0x86, + ActionLearnMsg1 = 0x87, + + FreeEventPos = 0x8A, + + SetBGM = 0xA1, + + UnlockAetherCurrentMsg = 0xA4, + + RemoveName = 0xA8, + + ScreenFadeOut = 0xAA, + + ZoneIn = 0xC8, + ZoneInDefaultPos = 0xC9, + + TeleportStart = 0xCB, + + TeleportDone = 0xCD, + TeleportDoneFadeOut = 0xCE, + DespawnZoneScreenMsg = 0xCF, + + InstanceSelectDlg = 0xD2, + ActorDespawnEffect = 0xD4, + + CompanionUnlock = 0xFD, + ObtainBarding = 0xFE, + EquipBarding = 0xFF, + + CompanionMsg1 = 0x102, + CompanionMsg2 = 0x103, + ShowPetHotbar = 0x104, + + ActionLearnMsg = 0x109, + ActorFadeOut = 0x10A, + ActorFadeIn = 0x10B, + WithdrawMsg = 0x10C, + OrderMinion = 0x10D, + ToggleMinion = 0x10E, + LearnMinion = 0x10F, + ActorFateOut1 = 0x110, + + Emote = 0x122, + + SetPose = 0x127, + + CraftingUnk = 0x12C, + + GatheringSenseMsg = 0x130, + PartyMsg = 0x131, + GatheringSenseMsg1 = 0x132, + + GatheringSenseMsg2 = 0x138, + + FishingMsg = 0x140, + + FishingBaitMsg = 0x145, + + FishingReachMsg = 0x147, + FishingFailMsg = 0x148, + + MateriaConvertMsg = 0x15E, + MeldSuccessMsg = 0x15F, + MeldFailMsg = 0x160, + MeldModeToggle = 0x161, + + AetherRestoreMsg = 0x163, + + DyeMsg = 0x168, + + ToggleCrestMsg = 0x16A, + ToggleBulkCrestMsg = 0x16B, + MateriaRemoveMsg = 0x16C, + GlamourCastMsg = 0x16D, + GlamourRemoveMsg = 0x16E, + + RelicInfuseMsg = 0x179, + + AetherReductionDlg = 0x17D, + + Unk6 = 0x19C, + EObjAnimation = 0x19D, + + SetTitle = 0x1F4, + + SetStatusIcon = 0x1F8, + LimitBreakGauge = 0x1F9, // Max level, amount, build type (chop sound), lb type(0=pve lb 1=pvp lb) + SetHomepoint = 0x1FB, + SetFavorite = 0x1FC, + LearnTeleport = 0x1FD, + + OpenRecommendationGuide = 0x200, + ArmoryErrorMsg = 0x201, + + AchievementPopup = 0x203, + + Unk7 = 0x205, // LogMessage? + AchievementMsg = 0x206, + + SetItemLevel = 0x209, + + ChallengeEntryCompleteMsg = 0x20B, + ChallengeEntryUnlockMsg = 0x20C, + + GilTrailMsg = 0x211, + + SetMaxGearSets = 0x230, + + SetCharaGearParamUI = 0x260, + + GearSetEquipMsg = 0x321, + + SetFestival = 0x386, // param1: festival.exd index + + ToggleOrchestrionUnlock = 0x396, + Dismount = 0x3A0, + + // Duty Recorder + BeginReplayAck = 0x3A1, + EndReplayAck = 0x3A2, + + // PvP Duel + SetPvPState = 0x5E0, // param3 must be 6 to engage a duel (hardcoded in the client) + EndDuelSession = 0x5E1, // because someone went oob? + StartDuelCountdown = 0x5E2, // begins a countdown; also does some duel bgm thing. + StartDuel = 0x5E3, // actually all it does is set the challenger actor id; + DuelResultScreen = 0x5E4, // win/lose thing, also reset a target id just like what EndDuelSession does. + + // Duty Action + SetDutyActionId = 0x5E8, // ContentExAction + SetDutyActionHud = 0x5E9, // disable/enable + SetDutyActionActive = 0x5EA, + SetDutyActionRemaining = 0x5EB, + }; + + enum ClientActorControlType + { + ToggleSeathe = 0x01, + ToggleAutoAttack = 0x02, + ChangeTarget = 0x03, + + DismountReq = 0x65, + + RemoveStatusEffect = 0x68, + CastCancel = 0x69, + + Return = 0xC8, // return dead / accept raise + FinishZoning = 0xC9, + Teleport = 0xCA, + + MarkPlayer = 0x12D, // Mark player, visible to party only + SetTitleReq = 0x12E, + TitleList = 0x12F, + + UpdatedSeenHowTos = 0x133, + AllotAttribute = 0x135, + + ClearWaymarks = 0x13A, + + HuntingLogDetails = 0x194, + + Timers = 0x1AB, + + DyeItem = 0x1B5, + + RequestChocoboInventory = 0x1C4, + + EmoteReq = 0x1F4, + PersistantEmoteCancel = 0x1F7, + PoseChange = 0x1F9, + PoseReapply = 0x1FA, + PoseCancel = 0x1FB, + + AchievementCrit = 0x202, + AchievementComp = 0x203, + AchievementCatChat = 0x206, + + + DirectorInitFinish = 0x321, + + SomeDirectorEvent = 0x328, // unsure what exactly triggers it, starts director when returning to instance though + + EnterTerritoryEventFinished = 0x330, + RequestInstanceLeave = 0x333, // df menu button + + AchievementCritReq = 0x3E8, + AchievementList = 0x3E9, + + CompanionAction = 0x6A4, + CompanionSetBarding = 0x6A5, + CompanionActionUnlock = 0x6A6, + + OpenPerformInstrumentUI = 0x71C, + + StartReplay = 0x7BC, + EndReplay = 0x7BD, // request for restoring the original player state (actor, buff, gauge, etc..) + + OpenDuelUI = 0x898, // Open a duel ui + DuelRequestResult = 0x899, // either accept/reject + + }; + + } /* ActorControl */ + } /* Common */ +} /* Core */ + +#endif diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index 0743420b..25e51205 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -227,7 +227,7 @@ namespace Packets { ReqCountdownCancel = 0x012D, // updated 4.2 ZoneLineHandler = 0x013C, // updated 4.3 - ActionHandler = 0x013D, // updated 4.3 + ClientActorControl = 0x013D, // updated 4.3 DiscoveryHandler = 0x013E, // updated 4.3 SkillHandler = 0x0140, // updated 4.3 diff --git a/src/servers/sapphire_zone/Action/ActionCast.cpp b/src/servers/sapphire_zone/Action/ActionCast.cpp index 37806683..cc155c7a 100644 --- a/src/servers/sapphire_zone/Action/ActionCast.cpp +++ b/src/servers/sapphire_zone/Action/ActionCast.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "Network/PacketWrappers/ActorControlPacket142.h" #include "Network/PacketWrappers/ActorControlPacket143.h" @@ -19,6 +20,7 @@ using namespace Core::Common; using namespace Core::Network; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; extern Core::Framework g_fw; diff --git a/src/servers/sapphire_zone/Action/ActionMount.cpp b/src/servers/sapphire_zone/Action/ActionMount.cpp index 870da031..487a120a 100644 --- a/src/servers/sapphire_zone/Action/ActionMount.cpp +++ b/src/servers/sapphire_zone/Action/ActionMount.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "Network/PacketWrappers/ActorControlPacket142.h" #include "Network/PacketWrappers/ActorControlPacket143.h" @@ -17,6 +18,7 @@ using namespace Core::Common; using namespace Core::Network; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; extern Core::Framework g_framework; diff --git a/src/servers/sapphire_zone/Action/ActionTeleport.cpp b/src/servers/sapphire_zone/Action/ActionTeleport.cpp index 88ffc71e..9ca4791d 100644 --- a/src/servers/sapphire_zone/Action/ActionTeleport.cpp +++ b/src/servers/sapphire_zone/Action/ActionTeleport.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "Network/PacketWrappers/ActorControlPacket142.h" #include "Network/PacketWrappers/ActorControlPacket143.h" @@ -14,6 +15,7 @@ using namespace Core::Common; using namespace Core::Network; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; extern Core::Framework g_fw; diff --git a/src/servers/sapphire_zone/Action/EventAction.cpp b/src/servers/sapphire_zone/Action/EventAction.cpp index a21400f0..9d804afa 100644 --- a/src/servers/sapphire_zone/Action/EventAction.cpp +++ b/src/servers/sapphire_zone/Action/EventAction.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "Network/PacketWrappers/ActorControlPacket142.h" #include "Network/PacketWrappers/ActorControlPacket143.h" @@ -16,6 +17,7 @@ using namespace Core::Common; using namespace Core::Network; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; Core::Action::EventAction::EventAction() { @@ -50,7 +52,7 @@ void Core::Action::EventAction::onStart() m_startTime = Util::getTimeMs(); - auto control = ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::CastStart, + auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastStart, 1, m_id, 0x4000004E ); if( m_pSource->isPlayer() ) @@ -77,7 +79,7 @@ void Core::Action::EventAction::onFinish() if( m_onActionFinishClb ) m_onActionFinishClb( *m_pSource->getAsPlayer(), m_eventId, m_additional ); - auto control = ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::CastStart, 0, m_id ); + auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastStart, 0, m_id ); if( !pEvent->hasPlayedScene() ) m_pSource->getAsPlayer()->eventFinish( m_eventId, 1 ); diff --git a/src/servers/sapphire_zone/Action/EventItemAction.cpp b/src/servers/sapphire_zone/Action/EventItemAction.cpp index 91f40ca5..92db772c 100644 --- a/src/servers/sapphire_zone/Action/EventItemAction.cpp +++ b/src/servers/sapphire_zone/Action/EventItemAction.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "Network/PacketWrappers/ActorControlPacket142.h" #include "Network/PacketWrappers/ActorControlPacket143.h" @@ -18,6 +19,7 @@ using namespace Core::Common; using namespace Core::Network; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; Core::Action::EventItemAction::EventItemAction() { diff --git a/src/servers/sapphire_zone/Actor/Chara.cpp b/src/servers/sapphire_zone/Actor/Chara.cpp index 841e75fa..cbbfc413 100644 --- a/src/servers/sapphire_zone/Actor/Chara.cpp +++ b/src/servers/sapphire_zone/Actor/Chara.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "Forwards.h" #include "Action/Action.h" @@ -29,6 +30,7 @@ extern Core::Framework g_fw; using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; Core::Entity::Chara::Chara( ObjKind type ) : Actor( type ) diff --git a/src/servers/sapphire_zone/Actor/EventObject.cpp b/src/servers/sapphire_zone/Actor/EventObject.cpp index 1f122ca0..bc1597e2 100644 --- a/src/servers/sapphire_zone/Actor/EventObject.cpp +++ b/src/servers/sapphire_zone/Actor/EventObject.cpp @@ -7,11 +7,13 @@ #include #include #include +#include #include using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; #include "Framework.h" extern Core::Framework g_fw; @@ -79,7 +81,7 @@ void Core::Entity::EventObject::setState( uint8_t state ) for( const auto& player : m_inRangePlayers ) { ZoneChannelPacket< FFXIVIpcActorControl142 > eobjUpdatePacket( getId(), player->getId() ); - eobjUpdatePacket.data().category = Common::ActorControlType::DirectorEObjMod; + eobjUpdatePacket.data().category = ActorControlType::DirectorEObjMod; eobjUpdatePacket.data().param1 = state; player->queuePacket( eobjUpdatePacket ); @@ -90,7 +92,7 @@ void Core::Entity::EventObject::setAnimationFlag( uint32_t flag, uint32_t animat for( const auto& player : m_inRangePlayers ) { ZoneChannelPacket< FFXIVIpcActorControl142 > eobjUpdatePacket( getId(), player->getId() ); - eobjUpdatePacket.data().category = Common::ActorControlType::EObjAnimation; + eobjUpdatePacket.data().category = ActorControlType::EObjAnimation; eobjUpdatePacket.data().param1 = flag; eobjUpdatePacket.data().param2 = animationFlag; diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 1b1ed8a6..05b88294 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "Session.h" #include "Player.h" @@ -45,6 +46,7 @@ extern Core::Framework g_fw; using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; // player constructor Core::Entity::Player::Player() : @@ -1336,7 +1338,7 @@ void Core::Entity::Player::setTitle( uint16_t titleId ) m_activeTitle = titleId; - sendToInRangeSet( ActorControlPacket142( getId(), SetTitle, titleId ), true ); + sendToInRangeSet( ActorControlPacket142( getId(), ActorControlType::SetTitle, titleId ), true ); } void Core::Entity::Player::setEquipDisplayFlags( uint8_t state ) diff --git a/src/servers/sapphire_zone/Actor/PlayerInventory.cpp b/src/servers/sapphire_zone/Actor/PlayerInventory.cpp index 9cf412ca..a7b28495 100644 --- a/src/servers/sapphire_zone/Actor/PlayerInventory.cpp +++ b/src/servers/sapphire_zone/Actor/PlayerInventory.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "Zone/Zone.h" @@ -18,6 +19,7 @@ extern Core::Framework g_framework; using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; Core::InventoryPtr Core::Entity::Player::getInventory() const { @@ -26,7 +28,7 @@ Core::InventoryPtr Core::Entity::Player::getInventory() const void Core::Entity::Player::sendItemLevel() { - queuePacket( ActorControlPacket142( getId(), SetItemLevel, getItemLevel(), 0 ) ); + queuePacket( ActorControlPacket142( getId(), ActorControlType::SetItemLevel, getItemLevel(), 0 ) ); } // TODO: This has to be redone and simplified diff --git a/src/servers/sapphire_zone/Event/Director.cpp b/src/servers/sapphire_zone/Event/Director.cpp index dc622023..9d67c49a 100644 --- a/src/servers/sapphire_zone/Event/Director.cpp +++ b/src/servers/sapphire_zone/Event/Director.cpp @@ -2,6 +2,7 @@ #include #include +#include #include "Actor/Player.h" @@ -12,6 +13,7 @@ using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; Core::Event::Director::Director( Core::Event::Director::DirectorType type, uint16_t contentId ) : m_contentId( contentId ), diff --git a/src/servers/sapphire_zone/Inventory/Inventory.cpp b/src/servers/sapphire_zone/Inventory/Inventory.cpp index e1d2078b..5005c685 100644 --- a/src/servers/sapphire_zone/Inventory/Inventory.cpp +++ b/src/servers/sapphire_zone/Inventory/Inventory.cpp @@ -15,6 +15,7 @@ #include "ItemContainer.h" #include "Item.h" #include "Framework.h" +#include extern Core::Framework g_fw; @@ -22,6 +23,7 @@ using namespace Core::Common; using namespace Core::Network; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; Core::Inventory::Inventory( Core::Entity::Player* pOwner ) { diff --git a/src/servers/sapphire_zone/Network/GameConnection.cpp b/src/servers/sapphire_zone/Network/GameConnection.cpp index e885a994..ee89e252 100644 --- a/src/servers/sapphire_zone/Network/GameConnection.cpp +++ b/src/servers/sapphire_zone/Network/GameConnection.cpp @@ -66,7 +66,7 @@ Core::Network::GameConnection::GameConnection( Core::Network::HivePtr pHive, setZoneHandler( ClientZoneIpcType::FcInfoReqHandler, "FcInfoReqHandler", &GameConnection::fcInfoReqHandler ); setZoneHandler( ClientZoneIpcType::ZoneLineHandler, "ZoneLineHandler", &GameConnection::zoneLineHandler ); - setZoneHandler( ClientZoneIpcType::ActionHandler, "ActionHandler", &GameConnection::actionHandler ); + setZoneHandler( ClientZoneIpcType::ClientActorControl, "ClientActorControl", &GameConnection::clientActorControlHandler ); setZoneHandler( ClientZoneIpcType::DiscoveryHandler, "DiscoveryHandler", &GameConnection::discoveryHandler ); diff --git a/src/servers/sapphire_zone/Network/GameConnection.h b/src/servers/sapphire_zone/Network/GameConnection.h index 07e17bc3..50a51c38 100644 --- a/src/servers/sapphire_zone/Network/GameConnection.h +++ b/src/servers/sapphire_zone/Network/GameConnection.h @@ -98,7 +98,7 @@ public: DECLARE_HANDLER( updatePositionHandler ); DECLARE_HANDLER( chatHandler ); DECLARE_HANDLER( zoneLineHandler ); - DECLARE_HANDLER( actionHandler ); + DECLARE_HANDLER( clientActorControlHandler ); DECLARE_HANDLER( inventoryModifyHandler ); DECLARE_HANDLER( discoveryHandler ); DECLARE_HANDLER( eventHandlerTalk ); diff --git a/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/ClientActorControlHandler.cpp similarity index 62% rename from src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp rename to src/servers/sapphire_zone/Network/Handlers/ClientActorControlHandler.cpp index 50c81fb0..275e6035 100644 --- a/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/ClientActorControlHandler.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include "Zone/Zone.h" #include "Zone/ZonePosition.h" @@ -17,11 +18,6 @@ #include "Network/PacketWrappers/ChatPacket.h" #include "Network/PacketWrappers/ServerNoticePacket.h" #include "Network/PacketWrappers/ActorControlPacket142.h" -#include "Network/PacketWrappers/ActorControlPacket143.h" -#include "Network/PacketWrappers/ActorControlPacket144.h" -#include "Network/PacketWrappers/EventStartPacket.h" -#include "Network/PacketWrappers/EventFinishPacket.h" -#include "Network/PacketWrappers/PlayerStateFlagsPacket.h" #include "DebugCommand/DebugCommandHandler.h" @@ -34,81 +30,16 @@ #include "ServerZone.h" #include "Forwards.h" #include "Framework.h" +#include extern Core::Framework g_fw; using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; -enum ClientTrigger -{ - ToggleSeathe = 0x01, - ToggleAutoAttack = 0x02, - ChangeTarget = 0x03, - - Dismount = 0x65, - - RemoveStatusEffect = 0x68, - CastCancel = 0x69, - - Return = 0xC8, // return dead / accept raise - FinishZoning = 0xC9, - Teleport = 0xCA, - - MarkPlayer = 0x12D, // Mark player, visible to party only - SetTitle = 0x12E, - TitleList = 0x12F, - - UpdatedSeenHowTos = 0x133, - AllotAttribute = 0x135, - - ClearWaymarks = 0x13A, - - HuntingLogDetails = 0x194, - - Timers = 0x1AB, - - DyeItem = 0x1B5, - - RequestChocoboInventory = 0x1C4, - - Emote = 0x1F4, - PersistantEmoteCancel = 0x1F7, - PoseChange = 0x1F9, - PoseReapply = 0x1FA, - PoseCancel = 0x1FB, - - AchievementCrit = 0x202, - AchievementComp = 0x203, - AchievementCatChat = 0x206, - - - DirectorInitFinish = 0x321, - - SomeDirectorEvent = 0x328, // unsure what exactly triggers it, starts director when returning to instance though - - EnterTerritoryEventFinished = 0x330, - RequestInstanceLeave = 0x333, // df menu button - - AchievementCritReq = 0x3E8, - AchievementList = 0x3E9, - - CompanionAction = 0x6A4, - CompanionSetBarding = 0x6A5, - CompanionActionUnlock = 0x6A6, - - OpenPerformInstrumentUI = 0x71C, - - StartReplay = 0x7BC, - EndReplay = 0x7BD, // request for restoring the original player state (actor, buff, gauge, etc..) - - OpenDuelUI = 0x898, // Open a duel ui - DuelRequestResult = 0x899, // either accept/reject - -}; - -void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& inPacket, +void Core::Network::GameConnection::clientActorControlHandler( const Packets::GamePacket& inPacket, Entity::Player& player ) { auto pLog = g_fw.get< Logger >(); @@ -131,7 +62,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in switch( commandId ) { - case ClientTrigger::ToggleSeathe: // Toggle sheathe + case ClientActorControlType::ToggleSeathe: // Toggle sheathe { if ( param11 == 1 ) player.setStance( Entity::Chara::Stance::Active ); @@ -145,7 +76,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in break; } - case ClientTrigger::ToggleAutoAttack: // Toggle auto-attack + case ClientActorControlType::ToggleAutoAttack: // Toggle auto-attack { if ( param11 == 1 ) { @@ -159,51 +90,51 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in break; } - case ClientTrigger::ChangeTarget: // Change target + case ClientActorControlType::ChangeTarget: // Change target { uint64_t targetId = inPacket.getValAt< uint64_t >( 0x24 ); player.changeTarget( targetId ); break; } - case ClientTrigger::Dismount: + case ClientActorControlType::DismountReq: { player.dismount(); break; } - case ClientTrigger::RemoveStatusEffect: // Remove status (clicking it off) + case ClientActorControlType::RemoveStatusEffect: // Remove status (clicking it off) { // todo: check if status can be removed by client from exd player.removeSingleStatusEffectById( static_cast< uint32_t >( param1 ) ); break; } - case ClientTrigger::CastCancel: // Cancel cast + case ClientActorControlType::CastCancel: // Cancel cast { if( player.getCurrentAction() ) player.getCurrentAction()->setInterrupted(); break; } - case ClientTrigger::MarkPlayer: // Mark player + case ClientActorControlType::MarkPlayer: // Mark player { break; } - case ClientTrigger::SetTitle: // Set player title + case ClientActorControlType::SetTitleReq: // Set player title { player.setTitle( static_cast< uint16_t >( param1 ) ); break; } - case ClientTrigger::TitleList: // Get title list + case ClientActorControlType::TitleList: // Get title list { player.sendTitleList(); break; } - case ClientTrigger::UpdatedSeenHowTos: // Update howtos seen + case ClientActorControlType::UpdatedSeenHowTos: // Update howtos seen { uint32_t howToId = param11; player.updateHowtosSeen( howToId ); break; } - case ClientTrigger::Emote: // emote + case ClientActorControlType::EmoteReq: // emote { uint64_t targetId = player.getTargetId(); uint32_t emoteId = inPacket.getValAt< uint32_t >( 0x24 ); @@ -211,23 +142,23 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in player.emote( emoteId, targetId ); break; } - case ClientTrigger::PersistantEmoteCancel: // cancel persistant emote + case ClientActorControlType::PersistantEmoteCancel: // cancel persistant emote { break; } - case ClientTrigger::PoseChange: // change pose + case ClientActorControlType::PoseChange: // change pose { break; } - case ClientTrigger::PoseReapply: // reapply pose + case ClientActorControlType::PoseReapply: // reapply pose { break; } - case ClientTrigger::PoseCancel: // cancel pose + case ClientActorControlType::PoseCancel: // cancel pose { break; } - case ClientTrigger::Return: // return dead / accept raise + case ClientActorControlType::Return: // return dead / accept raise { switch ( static_cast < ResurrectType >( param1 ) ) { @@ -243,38 +174,38 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in } } - case ClientTrigger::FinishZoning: // Finish zoning + case ClientActorControlType::FinishZoning: // Finish zoning { player.finishZoning(); break; } - case ClientTrigger::Teleport: // Teleport + case ClientActorControlType::Teleport: // Teleport { player.teleportQuery( param11 ); break; } - case ClientTrigger::DyeItem: // Dye item + case ClientActorControlType::DyeItem: // Dye item { break; } - case ClientTrigger::DirectorInitFinish: // Director init finish + case ClientActorControlType::DirectorInitFinish: // Director init finish { player.getCurrentZone()->onInitDirector( player ); break; } - case ClientTrigger::SomeDirectorEvent: // Director init finish + case ClientActorControlType::SomeDirectorEvent: // Director init finish { player.getCurrentZone()->onSomeDirectorEvent( player ); break; } - case ClientTrigger::EnterTerritoryEventFinished:// this may still be something else. I think i have seen it elsewhere + case ClientActorControlType::EnterTerritoryEventFinished:// this may still be something else. I think i have seen it elsewhere { player.setOnEnterEventDone( true ); break; } - case ClientTrigger::RequestInstanceLeave: + case ClientActorControlType::RequestInstanceLeave: { // todo: apply cf penalty if applicable, make sure player isnt in combat player.exitInstance(); diff --git a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp index 35808521..3bd34fd9 100644 --- a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include @@ -36,6 +37,7 @@ extern Core::Framework g_fw; using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; enum GmCommand { diff --git a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp index a0b55b65..cad3bd60 100644 --- a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -44,6 +45,7 @@ extern Core::Framework g_fw; using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; void Core::Network::GameConnection::fcInfoReqHandler( const Packets::GamePacket& inPacket, Entity::Player& player ) diff --git a/src/servers/sapphire_zone/Network/Handlers/SkillHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/SkillHandler.cpp index aa068d79..728ea48d 100644 --- a/src/servers/sapphire_zone/Network/Handlers/SkillHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/SkillHandler.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include "Network/GameConnection.h" @@ -32,6 +33,7 @@ extern Core::Framework g_fw; using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inPacket, Entity::Player& player ) diff --git a/src/servers/sapphire_zone/Zone/InstanceContent.cpp b/src/servers/sapphire_zone/Zone/InstanceContent.cpp index 69cd5c20..0a8988af 100644 --- a/src/servers/sapphire_zone/Zone/InstanceContent.cpp +++ b/src/servers/sapphire_zone/Zone/InstanceContent.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "Event/Director.h" #include "Event/EventDefs.h" @@ -26,6 +27,7 @@ extern Core::Framework g_fw; using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; Core::InstanceContent::InstanceContent( boost::shared_ptr< Core::Data::InstanceContent > pInstanceConfiguration, uint32_t guId, diff --git a/src/servers/sapphire_zone/Zone/Zone.cpp b/src/servers/sapphire_zone/Zone/Zone.cpp index 570de342..1f6ca652 100644 --- a/src/servers/sapphire_zone/Zone/Zone.cpp +++ b/src/servers/sapphire_zone/Zone/Zone.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -39,10 +40,10 @@ using namespace Core::Common; using namespace Core::Network::Packets; using namespace Core::Network::Packets::Server; +using namespace Core::Network::ActorControl; extern Core::Framework g_fw; - /** * \brief */ @@ -142,7 +143,7 @@ void Core::Zone::setCurrentFestival( uint16_t festivalId ) { auto player = playerEntry.second; - ActorControlPacket143 enableFestival( player->getId(), SetFestival, m_currentFestivalId ); + ActorControlPacket143 enableFestival( player->getId(), ActorControlType::SetFestival, m_currentFestivalId ); playerEntry.second->queuePacket( enableFestival ); } }