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(localPlayer, out var content) || !TryComp(localPlayer, out var eye)) { return; } UpdateEye(localPlayer.Value, content, eye, frameTime); } }