Allow zoom command to modify an eye's PVS range Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
56 lines
1.5 KiB
C#
56 lines
1.5 KiB
C#
using System.Numerics;
|
|
using Content.Shared.Movement.Components;
|
|
using Content.Shared.Movement.Systems;
|
|
using Robust.Client.Player;
|
|
|
|
namespace Content.Client.Movement.Systems;
|
|
|
|
public sealed class ContentEyeSystem : SharedContentEyeSystem
|
|
{
|
|
[Dependency] private readonly IPlayerManager _player = default!;
|
|
|
|
public void RequestZoom(EntityUid uid, Vector2 zoom, bool ignoreLimit, bool scalePvs, ContentEyeComponent? content = null)
|
|
{
|
|
if (!Resolve(uid, ref content, false))
|
|
return;
|
|
|
|
RaisePredictiveEvent(new RequestTargetZoomEvent()
|
|
{
|
|
TargetZoom = zoom,
|
|
IgnoreLimit = ignoreLimit,
|
|
});
|
|
|
|
if (scalePvs)
|
|
RequestPvsScale(Math.Max(zoom.X, zoom.Y));
|
|
}
|
|
|
|
public void RequestPvsScale(float scale)
|
|
{
|
|
RaiseNetworkEvent(new RequestPvsScaleEvent(scale));
|
|
}
|
|
|
|
public void RequestToggleFov()
|
|
{
|
|
if (_player.LocalEntity is { } player)
|
|
RequestToggleFov(player);
|
|
}
|
|
|
|
public void RequestToggleFov(EntityUid uid, EyeComponent? eye = null)
|
|
{
|
|
if (Resolve(uid, ref eye, false))
|
|
RequestEye(!eye.DrawFov, eye.DrawLight);
|
|
}
|
|
|
|
public void RequestToggleLight(EntityUid uid, EyeComponent? eye = null)
|
|
{
|
|
if (Resolve(uid, ref eye, false))
|
|
RequestEye(eye.DrawFov, !eye.DrawLight);
|
|
}
|
|
|
|
|
|
public void RequestEye(bool drawFov, bool drawLight)
|
|
{
|
|
RaisePredictiveEvent(new RequestEyeEvent(drawFov, drawLight));
|
|
}
|
|
}
|