Fixes quick dialog exception (#13189)

closes https://github.com/space-wizards/space-station-14/issues/13017
This commit is contained in:
keronshb
2023-01-04 14:27:25 -05:00
committed by GitHub
parent 07360a4c95
commit a9d61ca6e8

View File

@@ -1,10 +1,12 @@
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Content.Shared.Administration; using Content.Shared.Administration;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Robust.Server.Player; using Robust.Server.Player;
using Robust.Shared.Enums; using Robust.Shared.Enums;
using Robust.Shared.Network; using Robust.Shared.Network;
using Robust.Shared.Player; using Robust.Shared.Player;
using Robust.Shared.Serialization.TypeSerializers.Interfaces;
namespace Content.Server.Administration; namespace Content.Server.Administration;
@@ -139,7 +141,10 @@ public sealed partial class QuickDialogSystem : EntitySystem
return false; return false;
} }
output = (T?) (object?) input; //It's verrrry likely that this will be longstring
var longString = (LongString) input;
output = (T?) (object?) longString;
return output is not null; return output is not null;
} }
default: default:
@@ -150,20 +155,16 @@ public sealed partial class QuickDialogSystem : EntitySystem
private QuickDialogEntryType TypeToEntryType(Type T) private QuickDialogEntryType TypeToEntryType(Type T)
{ {
if (T == typeof(int) || T == typeof(uint) || T == typeof(long) || T == typeof(ulong)) if (T == typeof(int) || T == typeof(uint) || T == typeof(long) || T == typeof(ulong))
{
return QuickDialogEntryType.Integer; return QuickDialogEntryType.Integer;
}
else if (T == typeof(float) || T == typeof(double)) if (T == typeof(float) || T == typeof(double))
{
return QuickDialogEntryType.Float; return QuickDialogEntryType.Float;
}
else if (T == typeof(string)) // People are more likely to notice the input box is too short than they are to notice it's too long. if (T == typeof(string)) // People are more likely to notice the input box is too short than they are to notice it's too long.
{
return QuickDialogEntryType.ShortText; return QuickDialogEntryType.ShortText;
} else if (T == typeof(LongString))
{ if (T == typeof(LongString))
return QuickDialogEntryType.LongText; return QuickDialogEntryType.LongText;
}
throw new ArgumentException($"Tried to open a dialog with unsupported type {T}."); throw new ArgumentException($"Tried to open a dialog with unsupported type {T}.");
} }
@@ -173,4 +174,14 @@ public sealed partial class QuickDialogSystem : EntitySystem
/// A type used with quick dialogs to indicate you want a large entry window for text and not a short one. /// A type used with quick dialogs to indicate you want a large entry window for text and not a short one.
/// </summary> /// </summary>
/// <param name="String">The string retrieved.</param> /// <param name="String">The string retrieved.</param>
public record struct LongString(string String); public record struct LongString(string String)
{
public static implicit operator string(LongString longString)
{
return longString.String;
}
public static explicit operator LongString(string s)
{
return new(s);
}
}