From ce3d73dc439e861658ad4561116e88796d8278c4 Mon Sep 17 00:00:00 2001 From: dannuic Date: Sat, 25 Apr 2026 15:09:04 -0600 Subject: [PATCH] More cleanup --- zone/client_version.h | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/zone/client_version.h b/zone/client_version.h index 5e4e9ce10..640720fb2 100644 --- a/zone/client_version.h +++ b/zone/client_version.h @@ -16,9 +16,10 @@ namespace ClientPatch { using ClientList = std::unordered_map; +template using ComponentGetter = std::function; template -requires std::is_member_function_pointer_v + requires std::is_member_function_pointer_v static void QueuePacket(Client* c, Fun fun, Obj* obj, Args&&... args) { std::unique_ptr app = std::invoke(fun, obj, std::forward(args)...); @@ -29,9 +30,8 @@ static void QueuePacket(Client* c, Fun fun, Obj* obj, Args&&... args) // packet generator queue functions static auto QueueClients(Mob* sender, bool ignore_sender = false, bool ackreq = true) { - return [=](Fun fun, - std::function component_getter, Args&&... args) - requires std::is_member_function_pointer_v + return [=](Fun fun, ComponentGetter component, Args&&... args) + requires std::is_member_function_pointer_v { std::vector>> build_packets; std::unordered_map client_list = entity_list.GetClientList(); @@ -45,7 +45,7 @@ static auto QueueClients(Mob* sender, bool ignore_sender = false, bool ackreq = if (packet_it == build_packets.end()) packet_it = build_packets.emplace(build_packets.end(), ent->ClientVersion(), - std::invoke(fun, component_getter(ent), std::forward(args)...)); + std::invoke(fun, component(ent), std::forward(args)...)); if (packet_it->second != nullptr) ent->QueuePacket(packet_it->second.get(), ackreq, Client::CLIENT_CONNECTED); @@ -61,12 +61,11 @@ static auto QueueCloseClients( { if (distance <= 0) distance = static_cast(zone->GetClientUpdateRange()); - return [=](Fun fun, - std::function component_getter, Args&&... args) - requires std::is_member_function_pointer_v + return [=](Fun fun, ComponentGetter component, Args&&... args) + requires std::is_member_function_pointer_v { if (sender == nullptr) { - QueueClients(sender, ignore_sender, is_ack_required)(fun, component_getter, std::forward(args)...); + QueueClients(sender, ignore_sender, is_ack_required)(fun, component, std::forward(args)...); } else { float distance_squared = distance * distance; std::vector>> build_packets; @@ -87,7 +86,7 @@ static auto QueueCloseClients( if (packet_it == build_packets.end()) packet_it = build_packets.emplace(build_packets.end(), client->ClientVersion(), - std::invoke(fun, component_getter(client), std::forward(args)...)); + std::invoke(fun, component(client), std::forward(args)...)); if (packet_it->second != nullptr) client->QueuePacket(packet_it->second.get(), is_ack_required, Client::CLIENT_CONNECTED); @@ -124,9 +123,9 @@ static auto CloseMessageString( Mob* skipped_mob = nullptr, bool is_ack_required = true, eqFilterType filter = FilterNone) { - return [=](uint32_t type, uint32_t id, Args&&... args) { - static_assert(sizeof...(Args) <= 9, "Too many arguments"); - + return [=](uint32_t type, uint32_t id, Args&&... args) + requires (sizeof...(Args) <= 9) + { auto queue_close_clients = ClientPatch::QueueCloseClients(sender, ignore_sender, distance, skipped_mob, is_ack_required, filter);