From 4dc14d21052fb1a560a112373e6be834ecaddd64 Mon Sep 17 00:00:00 2001 From: Aviu00 <93730715+Aviu00@users.noreply.github.com> Date: Mon, 8 Apr 2024 03:22:25 +0900 Subject: [PATCH] - fix: Telescope works correctly maybe. (#277) --- .../_White/Telescope/TelescopeSystem.cs | 24 ++++++++++++------- .../_White/Telescope/TelescopeComponent.cs | 8 +------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Content.Client/_White/Telescope/TelescopeSystem.cs b/Content.Client/_White/Telescope/TelescopeSystem.cs index 80facafbf4..22f4ad5f3f 100644 --- a/Content.Client/_White/Telescope/TelescopeSystem.cs +++ b/Content.Client/_White/Telescope/TelescopeSystem.cs @@ -17,6 +17,7 @@ public sealed class TelescopeSystem : SharedTelescopeSystem [Dependency] private readonly IPlayerManager _player = default!; [Dependency] private readonly IInputManager _input = default!; [Dependency] private readonly IEyeManager _eyeManager = default!; + [Dependency] private readonly IClyde _displayManager = default!; public override void Update(float frameTime) { @@ -29,7 +30,7 @@ public sealed class TelescopeSystem : SharedTelescopeSystem if (!TryComp(player, out var hands) || !TryComp(hands.ActiveHandEntity, out var telescope) || - !TryComp(player.Value, out var eye) || !TryComp(player.Value, out TransformComponent? xform)) + !TryComp(player.Value, out var eye)) return; var offset = Vector2.Zero; @@ -44,21 +45,26 @@ public sealed class TelescopeSystem : SharedTelescopeSystem } var mousePos = _input.MouseScreenPosition.Position; - var playerPos = _eyeManager.CoordinatesToScreen(xform.Coordinates).Position; + var centerPos = _eyeManager.WorldToScreen(eye.Eye.Position.Position + eye.Offset); - var diff = mousePos - playerPos; + var diff = mousePos - centerPos; var len = diff.Length(); - if (len > telescope.MaxLength) + var maxLength = _displayManager.ScreenSize.Y / 2.5f; + var minLength = maxLength / 5f; + + if (len > maxLength) { - diff *= telescope.MaxLength / len; - len = telescope.MaxLength; + diff *= maxLength / len; + len = maxLength; } - if (len > telescope.MinLength) + var divisor = maxLength / 10f * telescope.Divisor; + + if (len > minLength) { - diff -= diff * telescope.MinLength / len; - offset = new Vector2(diff.X / telescope.Divisor, -diff.Y / telescope.Divisor); + diff -= diff * minLength / len; + offset = new Vector2(diff.X / divisor, -diff.Y / divisor); offset = new Angle(-eye.Rotation.Theta).RotateVec(offset); } diff --git a/Content.Shared/_White/Telescope/TelescopeComponent.cs b/Content.Shared/_White/Telescope/TelescopeComponent.cs index a3b4a35fec..a77aab0cbf 100644 --- a/Content.Shared/_White/Telescope/TelescopeComponent.cs +++ b/Content.Shared/_White/Telescope/TelescopeComponent.cs @@ -6,13 +6,7 @@ namespace Content.Shared._White.Telescope; public sealed partial class TelescopeComponent : Component { [DataField, ViewVariables(VVAccess.ReadWrite)] - public float MaxLength = 670f; - - [DataField, ViewVariables(VVAccess.ReadWrite)] - public float MinLength = 100f; - - [DataField, ViewVariables(VVAccess.ReadWrite)] - public float Divisor = 60f; + public float Divisor = 1f; [ViewVariables] public EntityUid? LastHoldingEntity;