ContentEyeSystem.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System.Numerics;
  2. using Content.Shared.Movement.Components;
  3. using Content.Shared.Movement.Systems;
  4. using Robust.Client.GameObjects;
  5. using Robust.Client.Player;
  6. namespace Content.Client.Movement.Systems;
  7. public sealed class ContentEyeSystem : SharedContentEyeSystem
  8. {
  9. [Dependency] private readonly IPlayerManager _player = default!;
  10. public void RequestZoom(EntityUid uid, Vector2 zoom, bool ignoreLimit, bool scalePvs, ContentEyeComponent? content = null)
  11. {
  12. if (!Resolve(uid, ref content, false))
  13. return;
  14. RaisePredictiveEvent(new RequestTargetZoomEvent()
  15. {
  16. TargetZoom = zoom,
  17. IgnoreLimit = ignoreLimit,
  18. });
  19. if (scalePvs)
  20. RequestPvsScale(Math.Max(zoom.X, zoom.Y));
  21. }
  22. public void RequestPvsScale(float scale)
  23. {
  24. RaiseNetworkEvent(new RequestPvsScaleEvent(scale));
  25. }
  26. public void RequestToggleFov()
  27. {
  28. if (_player.LocalEntity is { } player)
  29. RequestToggleFov(player);
  30. }
  31. public void RequestToggleFov(EntityUid uid, EyeComponent? eye = null)
  32. {
  33. if (Resolve(uid, ref eye, false))
  34. RequestEye(!eye.DrawFov, eye.DrawLight);
  35. }
  36. public void RequestToggleLight(EntityUid uid, EyeComponent? eye = null)
  37. {
  38. if (Resolve(uid, ref eye, false))
  39. RequestEye(eye.DrawFov, !eye.DrawLight);
  40. }
  41. public void RequestEye(bool drawFov, bool drawLight)
  42. {
  43. RaisePredictiveEvent(new RequestEyeEvent(drawFov, drawLight));
  44. }
  45. public override void FrameUpdate(float frameTime)
  46. {
  47. base.FrameUpdate(frameTime);
  48. var eyeEntities = AllEntityQuery<ContentEyeComponent, EyeComponent>();
  49. while (eyeEntities.MoveNext(out var entity, out ContentEyeComponent? contentComponent, out EyeComponent? eyeComponent))
  50. {
  51. UpdateEyeOffset((entity, eyeComponent));
  52. }
  53. }
  54. }