Separate ghost warp message into two (#3310)
* Separate ghost warp message into two * Remove redundant arguments * Address reviews * Move properties up
This commit is contained in:
@@ -12,6 +12,7 @@ using Robust.Server.Player;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Localization;
|
||||
using Robust.Shared.Log;
|
||||
using Robust.Shared.Network;
|
||||
using Robust.Shared.Players;
|
||||
using Robust.Shared.Timing;
|
||||
@@ -94,43 +95,51 @@ namespace Content.Server.GameObjects.Components.Observer
|
||||
Owner.EntityManager.EventBus.RaiseEvent(EventSource.Local, new GhostReturnMessage(mind.Mind));
|
||||
}
|
||||
break;
|
||||
case GhostWarpRequestMessage warp:
|
||||
case GhostWarpToLocationRequestMessage warp:
|
||||
{
|
||||
if (session?.AttachedEntity != Owner)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (warp.PlayerTarget != default)
|
||||
foreach (var warpPoint in FindWaypoints())
|
||||
{
|
||||
if (!Owner.EntityManager.TryGetEntity(warp.PlayerTarget, out var entity))
|
||||
if (warp.Name == warpPoint.Location)
|
||||
{
|
||||
Owner.Transform.Coordinates = warpPoint.Owner.Transform.Coordinates;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!entity.TryGetComponent(out IActorComponent? actor))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (!_playerManager.TryGetSessionByChannel(actor.playerSession.ConnectedClient, out var player) ||
|
||||
player.AttachedEntity != entity)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
Owner.Transform.Coordinates = entity.Transform.Coordinates;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var warpPoint in FindWaypoints())
|
||||
{
|
||||
if (warp.WarpName == warpPoint.Location)
|
||||
{
|
||||
Owner.Transform.Coordinates = warpPoint.Owner.Transform.Coordinates;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Logger.Warning($"User {session.Name} tried to warp to an invalid warp: {warp.Name}");
|
||||
|
||||
break;
|
||||
}
|
||||
case GhostWarpToTargetRequestMessage target:
|
||||
{
|
||||
if (session?.AttachedEntity != Owner)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (!Owner.TryGetComponent(out IActorComponent? actor))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (!Owner.EntityManager.TryGetEntity(target.Target, out var entity))
|
||||
{
|
||||
Logger.Warning($"User {session.Name} tried to warp to an invalid entity id: {target.Target}");
|
||||
break;
|
||||
}
|
||||
|
||||
if (!_playerManager.TryGetSessionByChannel(actor.playerSession.ConnectedClient, out var player) ||
|
||||
player.AttachedEntity != entity)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
Owner.Transform.Coordinates = entity.Transform.Coordinates;
|
||||
break;
|
||||
}
|
||||
case GhostRequestPlayerNameData _:
|
||||
|
||||
Reference in New Issue
Block a user