F4MP/codigos originales/tiltedcode/Code/server/Services/MapService.cpp
2026-01-06 18:53:59 +01:00

43 lines
1.5 KiB
C++

#include <Services/MapService.h>
#include <GameServer.h>
#include <Messages/NotifyRemoveWaypoint.h>
#include <Messages/NotifySetWaypoint.h>
#include <Messages/RequestRemoveWaypoint.h>
#include <Messages/RequestSetWaypoint.h>
MapService::MapService(World& aWorld, entt::dispatcher& aDispatcher) noexcept
: m_world(aWorld)
{
m_playerSetWaypointConnection =
aDispatcher.sink<PacketEvent<RequestSetWaypoint>>().connect<&MapService::OnSetWaypointRequest>(this);
m_playerRemoveWaypointConnection =
aDispatcher.sink<PacketEvent<RequestRemoveWaypoint>>().connect<&MapService::OnRemoveWaypointRequest>(this);
}
void MapService::OnSetWaypointRequest(const PacketEvent<RequestSetWaypoint>& acMessage) const noexcept
{
auto& message = acMessage.Packet;
NotifySetWaypoint notify{};
notify.Position = message.Position;
notify.WorldSpaceFormID = message.WorldSpaceFormID;
const auto& partyComponent = acMessage.pPlayer->GetParty();
if (!partyComponent.JoinedPartyId.has_value())
return;
GameServer::Get()->SendToParty(notify, partyComponent, acMessage.GetSender());
}
void MapService::OnRemoveWaypointRequest(const PacketEvent<RequestRemoveWaypoint>& acMessage) const noexcept
{
NotifyRemoveWaypoint notify{};
const auto& partyComponent = acMessage.pPlayer->GetParty();
if (!partyComponent.JoinedPartyId.has_value())
return;
GameServer::Get()->SendToParty(notify, partyComponent, acMessage.GetSender());
}