From 7771f584606b040bfd6134e7e7f832f578a5ac48 Mon Sep 17 00:00:00 2001 From: Julian Giebel Date: Wed, 19 Aug 2020 20:43:56 +0200 Subject: [PATCH] Improve on disposal routing code (#1795) Co-authored-by: Julian Giebel --- .../Disposal/DisposalRouterBoundUserInterface.cs | 6 ++---- .../Components/Disposal/DisposalRouterWindow.cs | 11 +++-------- .../Disposal/DisposalTaggerBoundUserInterface.cs | 6 ++---- .../Components/Disposal/DisposalTaggerWindow.cs | 11 +++-------- .../Components/Disposal/DisposalRouterComponent.cs | 6 +++--- .../Components/Disposal/DisposalTaggerComponent.cs | 6 +++--- .../Disposal/SharedDisposalRouterComponent.cs | 3 +++ .../Disposal/SharedDisposalTaggerComponent.cs | 5 ++++- 8 files changed, 23 insertions(+), 31 deletions(-) diff --git a/Content.Client/GameObjects/Components/Disposal/DisposalRouterBoundUserInterface.cs b/Content.Client/GameObjects/Components/Disposal/DisposalRouterBoundUserInterface.cs index 00f30c02ff..1bb74c1bee 100644 --- a/Content.Client/GameObjects/Components/Disposal/DisposalRouterBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Disposal/DisposalRouterBoundUserInterface.cs @@ -23,15 +23,13 @@ namespace Content.Client.GameObjects.Components.Disposal { base.Open(); - _window = new DisposalRouterWindow - { - Title = Loc.GetString("Disposal Router"), - }; + _window = new DisposalRouterWindow(); _window.OpenCentered(); _window.OnClose += Close; _window.Confirm.OnPressed += _ => ButtonPressed(UiAction.Ok, _window.TagInput.Text); + _window.TagInput.OnTextEntered += args => ButtonPressed(UiAction.Ok, args.Text); } diff --git a/Content.Client/GameObjects/Components/Disposal/DisposalRouterWindow.cs b/Content.Client/GameObjects/Components/Disposal/DisposalRouterWindow.cs index f9f850ae18..98e345f124 100644 --- a/Content.Client/GameObjects/Components/Disposal/DisposalRouterWindow.cs +++ b/Content.Client/GameObjects/Components/Disposal/DisposalRouterWindow.cs @@ -1,7 +1,4 @@ -using System.Runtime.CompilerServices; -using System.Text.RegularExpressions; -using Content.Shared.GameObjects.Components.Disposal; -using Robust.Client.Graphics.Drawing; +using Content.Shared.GameObjects.Components.Disposal; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; @@ -21,11 +18,9 @@ namespace Content.Client.GameObjects.Components.Disposal protected override Vector2? CustomSize => (400, 80); - private Regex _tagRegex; - public DisposalRouterWindow() { - _tagRegex = new Regex("^[a-zA-Z0-9, ]*$", RegexOptions.Compiled); + Title = Loc.GetString("Disposal Router"); Contents.AddChild(new VBoxContainer { @@ -38,7 +33,7 @@ namespace Content.Client.GameObjects.Components.Disposal Children = { (TagInput = new LineEdit {SizeFlagsHorizontal = SizeFlags.Expand, CustomMinimumSize = (320, 0), - ToolTip = Loc.GetString("A comma separated list of tags"), IsValid = tags => _tagRegex.IsMatch(tags)}), + ToolTip = Loc.GetString("A comma separated list of tags"), IsValid = tags => TagRegex.IsMatch(tags)}), new Control {CustomMinimumSize = (10, 0)}, (Confirm = new Button {Text = Loc.GetString("Confirm")}) } diff --git a/Content.Client/GameObjects/Components/Disposal/DisposalTaggerBoundUserInterface.cs b/Content.Client/GameObjects/Components/Disposal/DisposalTaggerBoundUserInterface.cs index 273b8c06ec..76d8a4fd48 100644 --- a/Content.Client/GameObjects/Components/Disposal/DisposalTaggerBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Disposal/DisposalTaggerBoundUserInterface.cs @@ -23,15 +23,13 @@ namespace Content.Client.GameObjects.Components.Disposal { base.Open(); - _window = new DisposalTaggerWindow - { - Title = Loc.GetString("Disposal Tagger"), - }; + _window = new DisposalTaggerWindow(); _window.OpenCentered(); _window.OnClose += Close; _window.Confirm.OnPressed += _ => ButtonPressed(UiAction.Ok, _window.TagInput.Text); + _window.TagInput.OnTextEntered += args => ButtonPressed(UiAction.Ok, args.Text); } diff --git a/Content.Client/GameObjects/Components/Disposal/DisposalTaggerWindow.cs b/Content.Client/GameObjects/Components/Disposal/DisposalTaggerWindow.cs index 7fb6dc6937..54dec5b807 100644 --- a/Content.Client/GameObjects/Components/Disposal/DisposalTaggerWindow.cs +++ b/Content.Client/GameObjects/Components/Disposal/DisposalTaggerWindow.cs @@ -1,7 +1,4 @@ -using System.Runtime.CompilerServices; -using System.Text.RegularExpressions; -using Content.Shared.GameObjects.Components.Disposal; -using Robust.Client.Graphics.Drawing; +using Content.Shared.GameObjects.Components.Disposal; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; @@ -21,11 +18,9 @@ namespace Content.Client.GameObjects.Components.Disposal protected override Vector2? CustomSize => (400, 80); - private Regex _tagRegex; - public DisposalTaggerWindow() { - _tagRegex = new Regex("^[a-zA-Z0-9 ]*$", RegexOptions.Compiled); + Title = Loc.GetString("Disposal Tagger"); Contents.AddChild(new VBoxContainer { @@ -38,7 +33,7 @@ namespace Content.Client.GameObjects.Components.Disposal Children = { (TagInput = new LineEdit {SizeFlagsHorizontal = SizeFlags.Expand, CustomMinimumSize = (320, 0), - IsValid = tag => _tagRegex.IsMatch(tag)}), + IsValid = tag => TagRegex.IsMatch(tag)}), new Control {CustomMinimumSize = (10, 0)}, (Confirm = new Button {Text = Loc.GetString("Confirm")}) } diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalRouterComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalRouterComponent.cs index 1abf3a7b2d..1d3662a85c 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalRouterComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalRouterComponent.cs @@ -78,16 +78,16 @@ namespace Content.Server.GameObjects.Components.Disposal if (!PlayerCanUseDisposalTagger(obj.Session.AttachedEntity)) return; - if (msg.Action == UiAction.Ok) + //Check for correct message and ignore maleformed strings + if (msg.Action == UiAction.Ok && TagRegex.IsMatch(msg.Tags)) { _tags.Clear(); foreach (var tag in msg.Tags.Split(',', StringSplitOptions.RemoveEmptyEntries)) { _tags.Add(tag.Trim()); + ClickSound(); } } - - ClickSound(); } /// diff --git a/Content.Server/GameObjects/Components/Disposal/DisposalTaggerComponent.cs b/Content.Server/GameObjects/Components/Disposal/DisposalTaggerComponent.cs index f949e37090..3c1ab7bf81 100644 --- a/Content.Server/GameObjects/Components/Disposal/DisposalTaggerComponent.cs +++ b/Content.Server/GameObjects/Components/Disposal/DisposalTaggerComponent.cs @@ -68,12 +68,12 @@ namespace Content.Server.GameObjects.Components.Disposal if (!PlayerCanUseDisposalTagger(obj.Session.AttachedEntity)) return; - if (msg.Action == UiAction.Ok) + //Check for correct message and ignore maleformed strings + if (msg.Action == UiAction.Ok && TagRegex.IsMatch(msg.Tag)) { _tag = msg.Tag; + ClickSound(); } - - ClickSound(); } /// diff --git a/Content.Shared/GameObjects/Components/Disposal/SharedDisposalRouterComponent.cs b/Content.Shared/GameObjects/Components/Disposal/SharedDisposalRouterComponent.cs index c0323cbaa1..f580fcbfbd 100644 --- a/Content.Shared/GameObjects/Components/Disposal/SharedDisposalRouterComponent.cs +++ b/Content.Shared/GameObjects/Components/Disposal/SharedDisposalRouterComponent.cs @@ -2,6 +2,7 @@ using Robust.Shared.GameObjects.Components.UserInterface; using Robust.Shared.Serialization; using System; +using System.Text.RegularExpressions; namespace Content.Shared.GameObjects.Components.Disposal { @@ -9,6 +10,8 @@ namespace Content.Shared.GameObjects.Components.Disposal { public override string Name => "DisposalRouter"; + public static readonly Regex TagRegex = new Regex("^[a-zA-Z0-9, ]*$", RegexOptions.Compiled); + [Serializable, NetSerializable] public class DisposalRouterUserInterfaceState : BoundUserInterfaceState { diff --git a/Content.Shared/GameObjects/Components/Disposal/SharedDisposalTaggerComponent.cs b/Content.Shared/GameObjects/Components/Disposal/SharedDisposalTaggerComponent.cs index d12e9060e9..f20d6248d4 100644 --- a/Content.Shared/GameObjects/Components/Disposal/SharedDisposalTaggerComponent.cs +++ b/Content.Shared/GameObjects/Components/Disposal/SharedDisposalTaggerComponent.cs @@ -3,6 +3,7 @@ using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components.UserInterface; using Robust.Shared.Serialization; using System; +using System.Text.RegularExpressions; namespace Content.Shared.GameObjects.Components.Disposal { @@ -10,6 +11,8 @@ namespace Content.Shared.GameObjects.Components.Disposal { public override string Name => "DisposalTagger"; + public static readonly Regex TagRegex = new Regex("^[a-zA-Z0-9 ]*$", RegexOptions.Compiled); + [Serializable, NetSerializable] public class DisposalTaggerUserInterfaceState : BoundUserInterfaceState { @@ -33,7 +36,7 @@ namespace Content.Shared.GameObjects.Components.Disposal if (Action == UiAction.Ok) { - Tag = tag; + Tag = tag.Substring(0, Math.Min(tag.Length, 30)); } } }