From 9247621a966b1f4bfff48e5948f27a31b71d1208 Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 9 Jun 2025 18:01:53 +1000 Subject: [PATCH] Add FixedPoint2TypeParser (#38169) --- Content.Shared/FixedPoint/FixedPoint2.cs | 10 +----- .../TypeParsers/FixedPoint2TypeParser.cs | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 Content.Shared/Toolshed/TypeParsers/FixedPoint2TypeParser.cs diff --git a/Content.Shared/FixedPoint/FixedPoint2.cs b/Content.Shared/FixedPoint/FixedPoint2.cs index 7316d22f11..a8deae413f 100644 --- a/Content.Shared/FixedPoint/FixedPoint2.cs +++ b/Content.Shared/FixedPoint/FixedPoint2.cs @@ -303,15 +303,7 @@ namespace Content.Shared.FixedPoint public readonly int CompareTo(FixedPoint2 other) { - if (other.Value > Value) - { - return -1; - } - if (other.Value < Value) - { - return 1; - } - return 0; + return Value.CompareTo(other.Value); } } diff --git a/Content.Shared/Toolshed/TypeParsers/FixedPoint2TypeParser.cs b/Content.Shared/Toolshed/TypeParsers/FixedPoint2TypeParser.cs new file mode 100644 index 0000000000..331c7eba7a --- /dev/null +++ b/Content.Shared/Toolshed/TypeParsers/FixedPoint2TypeParser.cs @@ -0,0 +1,36 @@ +using Content.Shared.FixedPoint; +using Robust.Shared.Console; +using Robust.Shared.Toolshed; +using Robust.Shared.Toolshed.Syntax; +using Robust.Shared.Toolshed.TypeParsers; +using Robust.Shared.Utility; + +namespace Content.Shared.Toolshed.TypeParsers; + +public sealed class FixedPoint2TypeParser : TypeParser +{ + public override bool TryParse(ParserContext ctx, out FixedPoint2 result) + { + if (Toolshed.TryParse(ctx, out int? value)) + { + result = FixedPoint2.New(value.Value); + return true; + } + + if (Toolshed.TryParse(ctx, out float? fValue)) + { + result = FixedPoint2.New(fValue.Value); + return true; + } + + // Toolshed's number parser (NumberBaseTypeParser) should have assigned ctx.Error so we don't have to. + DebugTools.AssertNotNull(ctx.Error); + result = FixedPoint2.Zero; + return false; + } + + public override CompletionResult? TryAutocomplete(ParserContext parserContext, CommandArgument? arg) + { + return CompletionResult.FromHint(GetArgHint(arg)); + } +}