diff --git a/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs b/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs index f13ae6e3f3..83736bd92b 100644 --- a/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs +++ b/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs @@ -1,12 +1,18 @@ -using Content.Server.Administration; +using System.Linq; +using Content.Server.Administration; +using Content.Server.GameTicking.Presets; using Content.Shared.Administration; using Robust.Shared.Console; +using Robust.Shared.Prototypes; namespace Content.Server.GameTicking.Commands { [AdminCommand(AdminFlags.Round)] - sealed class SetGamePresetCommand : IConsoleCommand + public sealed class SetGamePresetCommand : IConsoleCommand { + [Dependency] private readonly IEntityManager _entity = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + public string Command => "setgamepreset"; public string Description => Loc.GetString("set-game-preset-command-description", ("command", Command)); public string Help => Loc.GetString("set-game-preset-command-help-text", ("command", Command)); @@ -19,7 +25,7 @@ namespace Content.Server.GameTicking.Commands return; } - var ticker = EntitySystem.Get(); + var ticker = _entity.System(); if (!ticker.TryFindGamePreset(args[0], out var preset)) { @@ -30,5 +36,23 @@ namespace Content.Server.GameTicking.Commands ticker.SetGamePreset(preset); shell.WriteLine(Loc.GetString("set-game-preset-preset-set", ("preset", preset.ID))); } + + public CompletionResult GetCompletion(IConsoleShell shell, string[] args) + { + if (args.Length == 1) + { + var gamePresets = _prototype.EnumeratePrototypes() + .OrderBy(p => p.ID); + var options = new List(); + foreach (var preset in gamePresets) + { + options.Add(preset.ID); + options.AddRange(preset.Alias); + } + + return CompletionResult.FromHintOptions(options, ""); + } + return CompletionResult.Empty; + } } } diff --git a/Resources/Locale/en-US/game-ticking/set-game-preset-command.ftl b/Resources/Locale/en-US/game-ticking/set-game-preset-command.ftl index c6c93f2927..46049643cb 100644 --- a/Resources/Locale/en-US/game-ticking/set-game-preset-command.ftl +++ b/Resources/Locale/en-US/game-ticking/set-game-preset-command.ftl @@ -1,2 +1,5 @@ +set-game-preset-command-description = Sets the game preset for the current round. +set-game-preset-command-help-text = setgamepreset + set-game-preset-preset-error = Unable to find game preset "{$preset}" set-game-preset-preset-set = Set game preset to "{$preset}"