From 821df271c489a204c9829abc6dc1f4857db07c0f Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 27 May 2022 02:19:58 +0200 Subject: [PATCH] Give station events command completions, cleanup (#8464) --- .../StationEvents/StationEventCommand.cs | 70 ++++++++++++++----- .../StationEvents/StationEventSystem.cs | 16 ----- .../station-events/station-event-command.ftl | 38 +++++----- 3 files changed, 73 insertions(+), 51 deletions(-) diff --git a/Content.Server/StationEvents/StationEventCommand.cs b/Content.Server/StationEvents/StationEventCommand.cs index f65d7323c4..faf8f6e83f 100644 --- a/Content.Server/StationEvents/StationEventCommand.cs +++ b/Content.Server/StationEvents/StationEventCommand.cs @@ -3,6 +3,7 @@ using Content.Shared.Administration; using Robust.Server.Player; using Robust.Shared.Console; using System.Linq; +using System.Text; namespace Content.Server.StationEvents { @@ -10,13 +11,8 @@ namespace Content.Server.StationEvents public sealed class StationEventCommand : IConsoleCommand { public string Command => "events"; - public string Description => Loc.GetString("station-event-command-description"); - public string Help => Loc.GetString("station-event-command-help-text", - ("runningHelp", Loc.GetString("station-event-command-running-help-text")), - ("listHelp", Loc.GetString("station-event-command-list-help-text")), - ("pauseHelp", Loc.GetString("station-event-command-pause-help-text")), - ("resumeHelp", Loc.GetString("station-event-command-resume-help-text")), - ("runHelp", Loc.GetString("station-event-command-run-help-text"))); + public string Description => Loc.GetString("cmd-events-desc"); + public string Help => Loc.GetString("cmd-events-help"); public void Execute(IConsoleShell shell, string argStr, string[] args) { @@ -51,7 +47,7 @@ namespace Content.Server.StationEvents shell.WriteLine(Loc.GetString("shell-wrong-arguments-number-need-specific", ("properAmount", 2), ("currentAmount", args.Length)) - + $"\n{Loc.GetString("station-event-command-run-help-text")}"); + + $"\n{Help}"); break; } @@ -83,15 +79,23 @@ namespace Content.Server.StationEvents } else { - shell.WriteLine(Loc.GetString("No station event running")); + shell.WriteLine(Loc.GetString("cmd-events-none-running")); } } private void List(IConsoleShell shell, IPlayerSession? player) { - var resultText = Loc.GetString("station-event-command-event-list", - ("otherEvents", EntitySystem.Get().GetEventNames())); - shell.WriteLine(resultText); + var events = EntitySystem.Get(); + var sb = new StringBuilder(); + + sb.AppendLine(Loc.GetString("cmd-events-list-random")); + + foreach (var stationEvents in events.StationEvents) + { + sb.AppendLine(stationEvents.Name); + } + + shell.WriteLine(sb.ToString()); } private void Pause(IConsoleShell shell, IPlayerSession? player) @@ -100,12 +104,12 @@ namespace Content.Server.StationEvents if (!stationEventSystem.Enabled) { - shell.WriteLine(Loc.GetString("station-event-command-events-already-paused-message")); + shell.WriteLine(Loc.GetString("cmd-events-already-paused")); } else { stationEventSystem.Enabled = false; - shell.WriteLine(Loc.GetString("station-event-command-events-paused-message")); + shell.WriteLine(Loc.GetString("cmd-events-paused")); } } @@ -115,12 +119,12 @@ namespace Content.Server.StationEvents if (stationEventSystem.Enabled) { - shell.WriteLine(Loc.GetString("station-event-command-events-already-running-message")); + shell.WriteLine(Loc.GetString("cmd-events-already-running")); } else { stationEventSystem.Enabled = true; - shell.WriteLine(Loc.GetString("station-event-command-events-resumed-message")); + shell.WriteLine(Loc.GetString("cmd-events-resumed")); } } @@ -129,5 +133,39 @@ namespace Content.Server.StationEvents var resultText = EntitySystem.Get().StopEvent(); shell.WriteLine(resultText); } + + public CompletionResult GetCompletion(IConsoleShell shell, string[] args) + { + if (args.Length == 1) + { + var options = new[] + { + "list", + "running", + "pause", + "resume", + "stop", + "run" + }; + + return CompletionResult.FromHintOptions(options, Loc.GetString("cmd-events-arg-subcommand")); + } + + var command = args[0]; + + if (args.Length != 2) + return CompletionResult.Empty; + + if (command == "run") + { + var system = EntitySystem.Get(); + var options = new[] { "random" }.Concat( + system.StationEvents.Select(e => e.Name).OrderBy(e => e)); + + return CompletionResult.FromHintOptions(options, Loc.GetString("cmd-events-arg-run-eventName")); + } + + return CompletionResult.Empty; + } } } diff --git a/Content.Server/StationEvents/StationEventSystem.cs b/Content.Server/StationEvents/StationEventSystem.cs index 6a230ed248..96d5c74de1 100644 --- a/Content.Server/StationEvents/StationEventSystem.cs +++ b/Content.Server/StationEvents/StationEventSystem.cs @@ -65,22 +65,6 @@ namespace Content.Server.StationEvents private bool _enabled = true; - /// - /// Admins can get a list of all events available to run, regardless of whether their requirements have been met - /// - /// - public string GetEventNames() - { - StringBuilder result = new StringBuilder(); - - foreach (var stationEvent in _stationEvents) - { - result.Append(stationEvent.Name + "\n"); - } - - return result.ToString(); - } - /// /// Admins can forcibly run events by passing in the Name /// diff --git a/Resources/Locale/en-US/station-events/station-event-command.ftl b/Resources/Locale/en-US/station-events/station-event-command.ftl index aa129904aa..cc4ede9eb9 100644 --- a/Resources/Locale/en-US/station-events/station-event-command.ftl +++ b/Resources/Locale/en-US/station-events/station-event-command.ftl @@ -1,19 +1,19 @@ -station-event-command-description = Provides admin control to station events -station-event-command-help-text = events > - running: return the current running event - list: return all event names that can be run - pause: stop all random events from running and any one currently running - resume: allow random events to run again - run : start a particular event now; is case-insensitive and not localized -station-event-command-running-help-text = running: return the current running event -station-event-command-list-help-text = list: return all event names that can be run -station-event-command-pause-help-text = pause: stop all random events from running and any one currently running -station-event-command-resume-help-text = resume: allow random events to run again -station-event-command-run-help-text = run : start a particular event now; is case-insensitive and not localized -station-event-command-no-event-running-message = No station event running -station-event-command-event-list = Random - {$otherEvents} -station-event-command-events-paused-message = Station events paused -station-event-command-events-already-paused-message = Station events are already paused -station-event-command-events-resumed-message = Station events resumed -station-event-command-events-already-running-message = Station events are already running +### Localization for events console commands + +## 'events' command +cmd-events-desc = Provides admin control to station events +cmd-events-help = events > + running: return the current running event + list: return all event names that can be run + pause: stop all random events from running and any one currently running + resume: allow random events to run again + run : start a particular event now; is case-insensitive and not localized +cmd-events-arg-subcommand = +cmd-events-arg-run-eventName = + +cmd-events-none-running = No station event running +cmd-events-list-random = Random +cmd-events-paused = Station events paused +cmd-events-already-paused = Station events are already paused +cmd-events-resumed = Station events resumed +cmd-events-already-running = Station events are already running