58 lines
1.4 KiB
C#
58 lines
1.4 KiB
C#
using Content.Shared.Movement.Components;
|
|
using Content.Shared.Movement.Systems;
|
|
using Robust.Client.GameObjects;
|
|
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, ContentEyeComponent? content = null)
|
|
{
|
|
if (!Resolve(uid, ref content, false))
|
|
return;
|
|
|
|
RaisePredictiveEvent(new RequestTargetZoomEvent()
|
|
{
|
|
TargetZoom = zoom,
|
|
});
|
|
}
|
|
|
|
public void RequestToggleFov()
|
|
{
|
|
if (_player.LocalPlayer?.ControlledEntity is { } player)
|
|
RequestToggleFov(player);
|
|
}
|
|
|
|
public void RequestToggleFov(EntityUid uid, EyeComponent? eye = null)
|
|
{
|
|
if (Resolve(uid, ref eye, false))
|
|
RequestFov(!eye.DrawFov);
|
|
}
|
|
|
|
public void RequestFov(bool value)
|
|
{
|
|
RaisePredictiveEvent(new RequestFovEvent()
|
|
{
|
|
Fov = value,
|
|
});
|
|
}
|
|
|
|
public override void Update(float frameTime)
|
|
{
|
|
base.Update(frameTime);
|
|
|
|
var localPlayer = _player.LocalPlayer?.ControlledEntity;
|
|
|
|
if (!TryComp<ContentEyeComponent>(localPlayer, out var content) ||
|
|
!TryComp<EyeComponent>(localPlayer, out var eye))
|
|
{
|
|
return;
|
|
}
|
|
|
|
UpdateEye(localPlayer.Value, content, eye, frameTime);
|
|
}
|
|
}
|