diff --git a/zone/dynamic_zone.cpp b/zone/dynamic_zone.cpp index 0b19e5ade..177d9c04c 100644 --- a/zone/dynamic_zone.cpp +++ b/zone/dynamic_zone.cpp @@ -209,8 +209,17 @@ void DynamicZone::HandleWorldMessage(ServerPacket* pack) void DynamicZone::ProcessCompassChange(const DynamicZoneLocation& location) { DynamicZoneBase::ProcessCompassChange(location); - if (m_on_compass_change) + SendCompassUpdateToZoneMembers(); +} + +void DynamicZone::SendCompassUpdateToZoneMembers() +{ + for (const auto& member : m_members) { - m_on_compass_change(); + Client* member_client = entity_list.GetClientByCharID(member.id); + if (member_client) + { + member_client->SendDzCompassUpdate(); + } } } diff --git a/zone/dynamic_zone.h b/zone/dynamic_zone.h index 3b421330a..a56947749 100644 --- a/zone/dynamic_zone.h +++ b/zone/dynamic_zone.h @@ -23,7 +23,6 @@ #include "../common/dynamic_zone_base.h" #include -#include #include #include #include @@ -47,7 +46,6 @@ public: void SetSecondsRemaining(uint32_t seconds_remaining) override; bool IsCurrentZoneDzInstance() const; - void RegisterOnCompassChange(const std::function& on_change) { m_on_compass_change = on_change; } void SetUpdatedDuration(uint32_t seconds); protected: @@ -61,8 +59,7 @@ protected: private: static void StartAllClientRemovalTimers(); - - std::function m_on_compass_change; + void SendCompassUpdateToZoneMembers(); }; #endif diff --git a/zone/expedition.cpp b/zone/expedition.cpp index 6b0465162..728e036d0 100644 --- a/zone/expedition.cpp +++ b/zone/expedition.cpp @@ -62,7 +62,6 @@ void Expedition::SetDynamicZone(DynamicZone&& dz) dz.SetLeader(GetLeader()); m_dynamiczone = std::move(dz); - m_dynamiczone.RegisterOnCompassChange([this]() { SendCompassUpdateToZoneMembers(); }); } Expedition* Expedition::TryCreate( @@ -1840,18 +1839,6 @@ void Expedition::HandleWorldMessage(ServerPacket* pack) } } -void Expedition::SendCompassUpdateToZoneMembers() -{ - for (const auto& member : GetDynamicZone().GetMembers()) - { - Client* member_client = entity_list.GetClientByCharID(member.id); - if (member_client) - { - member_client->SendDzCompassUpdate(); - } - } -} - bool Expedition::CanClientLootCorpse(Client* client, uint32_t npc_type_id, uint32_t spawn_id) { if (client && m_dynamiczone.IsCurrentZoneDzInstance()) diff --git a/zone/expedition.h b/zone/expedition.h index 56ffffc3c..106035479 100644 --- a/zone/expedition.h +++ b/zone/expedition.h @@ -150,7 +150,6 @@ private: void SendMemberStatusToZoneMembers(uint32_t update_character_id, DynamicZoneMemberStatus status); void SendMembersExpireWarning(uint32_t minutes); void SendUpdatesToZoneMembers(bool clear = false, bool message_on_clear = true); - void SendCompassUpdateToZoneMembers(); void SendWorldExpeditionUpdate(uint16_t server_opcode); void SendWorldAddPlayerInvite(const std::string& inviter_name, const std::string& swap_remove_name, const std::string& add_name, bool pending = false);