using Content.Shared.Administration;
using Robust.Shared.Console;
-namespace Content.Server.GameTicking.Commands
+namespace Content.Server.GameTicking.Commands;
+
+[AdminCommand(AdminFlags.Round)]
+public sealed class DelayStartCommand : LocalizedEntityCommands
{
- [AdminCommand(AdminFlags.Round)]
- sealed class DelayStartCommand : IConsoleCommand
- {
- [Dependency] private readonly IEntityManager _e = default!;
+ [Dependency] private readonly GameTicker _gameTicker = default!;
- public string Command => "delaystart";
- public string Description => "Delays the round start.";
- public string Help => $"Usage: {Command} <seconds>\nPauses/Resumes the countdown if no argument is provided.";
+ public override string Command => "delaystart";
- public void Execute(IConsoleShell shell, string argStr, string[] args)
+ public override void Execute(IConsoleShell shell, string argStr, string[] args)
+ {
+ if (_gameTicker.RunLevel != GameRunLevel.PreRoundLobby)
{
- var ticker = _e.System<GameTicker>();
- if (ticker.RunLevel != GameRunLevel.PreRoundLobby)
- {
- shell.WriteLine("This can only be executed while the game is in the pre-round lobby.");
- return;
- }
-
- if (args.Length == 0)
- {
- var paused = ticker.TogglePause();
- shell.WriteLine(paused ? "Paused the countdown." : "Resumed the countdown.");
- return;
- }
+ shell.WriteLine(Loc.GetString("shell-can-only-run-from-pre-round-lobby"));
+ return;
+ }
- if (args.Length != 1)
- {
- shell.WriteLine("Need zero or one arguments.");
+ switch (args.Length)
+ {
+ case 0:
+ var paused = _gameTicker.TogglePause();
+ shell.WriteLine(Loc.GetString(paused ? "cmd-delaystart-paused" : "cmd-delaystart-unpaused"));
return;
- }
-
- if (!uint.TryParse(args[0], out var seconds) || seconds == 0)
- {
- shell.WriteLine($"{args[0]} isn't a valid amount of seconds.");
+ case 1:
+ break;
+ default:
+ shell.WriteError(Loc.GetString("shell-wrong-arguments-number"));
return;
- }
+ }
- var time = TimeSpan.FromSeconds(seconds);
- if (!ticker.DelayStart(time))
- {
- shell.WriteLine("An unknown error has occurred.");
- }
+ if (!uint.TryParse(args[0], out var seconds) || seconds == 0)
+ {
+ shell.WriteLine(Loc.GetString("cmd-delaystart-invalid-seconds", ("value", args[0])));
+ return;
}
+
+ var time = TimeSpan.FromSeconds(seconds);
+ if (!_gameTicker.DelayStart(time))
+ shell.WriteLine(Loc.GetString("cmd-delaystart-too-late"));
}
}
using Content.Shared.Administration;
using Robust.Shared.Console;
-namespace Content.Server.GameTicking.Commands
+namespace Content.Server.GameTicking.Commands;
+
+[AdminCommand(AdminFlags.Round)]
+public sealed class EndRoundCommand : LocalizedEntityCommands
{
- [AdminCommand(AdminFlags.Round)]
- sealed class EndRoundCommand : IConsoleCommand
- {
- [Dependency] private readonly IEntityManager _e = default!;
+ [Dependency] private readonly GameTicker _gameTicker = default!;
- public string Command => "endround";
- public string Description => "Ends the round and moves the server to PostRound.";
- public string Help => String.Empty;
+ public override string Command => "endround";
- public void Execute(IConsoleShell shell, string argStr, string[] args)
+ public override void Execute(IConsoleShell shell, string argStr, string[] args)
+ {
+ if (_gameTicker.RunLevel != GameRunLevel.InRound)
{
- var ticker = _e.System<GameTicker>();
-
- if (ticker.RunLevel != GameRunLevel.InRound)
- {
- shell.WriteLine("This can only be executed while the game is in a round.");
- return;
- }
-
- ticker.EndRound();
+ shell.WriteLine(Loc.GetString("shell-can-only-run-while-round-is-active"));
+ return;
}
+
+ _gameTicker.EndRound();
}
}
using Content.Shared.Administration;
using Robust.Shared.Console;
-namespace Content.Server.GameTicking.Commands
+namespace Content.Server.GameTicking.Commands;
+
+[AdminCommand(AdminFlags.Round)]
+public sealed class RestartRoundCommand : LocalizedEntityCommands
{
- [AdminCommand(AdminFlags.Round)]
- public sealed class RestartRoundCommand : IConsoleCommand
- {
- [Dependency] private readonly IEntityManager _e = default!;
+ [Dependency] private readonly GameTicker _gameTicker = default!;
+ [Dependency] private readonly RoundEndSystem _roundEndSystem = default!;
- public string Command => "restartround";
- public string Description => "Ends the current round and starts the countdown for the next lobby.";
- public string Help => string.Empty;
+ public override string Command => "restartround";
- public void Execute(IConsoleShell shell, string argStr, string[] args)
+ public override void Execute(IConsoleShell shell, string argStr, string[] args)
+ {
+ if (_gameTicker.RunLevel != GameRunLevel.InRound)
{
- var ticker = _e.System<GameTicker>();
-
- if (ticker.RunLevel != GameRunLevel.InRound)
- {
- shell.WriteLine("This can only be executed while the game is in a round - try restartroundnow");
- return;
- }
-
- _e.System<RoundEndSystem>().EndRound();
+ shell.WriteLine(Loc.GetString("shell-can-only-run-while-round-is-active"));
+ return;
}
+
+ _roundEndSystem.EndRound();
}
+}
- [AdminCommand(AdminFlags.Round)]
- public sealed class RestartRoundNowCommand : IConsoleCommand
- {
- [Dependency] private readonly IEntityManager _e = default!;
+[AdminCommand(AdminFlags.Round)]
+public sealed class RestartRoundNowCommand : LocalizedEntityCommands
+{
+ [Dependency] private readonly GameTicker _gameTicker = default!;
- public string Command => "restartroundnow";
- public string Description => "Moves the server from PostRound to a new PreRoundLobby.";
- public string Help => String.Empty;
+ public override string Command => "restartroundnow";
- public void Execute(IConsoleShell shell, string argStr, string[] args)
- {
- _e.System<GameTicker>().RestartRound();
- }
+ public override void Execute(IConsoleShell shell, string argStr, string[] args)
+ {
+ _gameTicker.RestartRound();
}
}
using Content.Shared.Administration;
using Robust.Shared.Console;
-namespace Content.Server.GameTicking.Commands
+namespace Content.Server.GameTicking.Commands;
+
+[AdminCommand(AdminFlags.Round)]
+public sealed class StartRoundCommand : LocalizedEntityCommands
{
- [AdminCommand(AdminFlags.Round)]
- sealed class StartRoundCommand : IConsoleCommand
- {
- [Dependency] private readonly IEntityManager _e = default!;
+ [Dependency] private readonly GameTicker _gameTicker = default!;
- public string Command => "startround";
- public string Description => "Ends PreRoundLobby state and starts the round.";
- public string Help => String.Empty;
+ public override string Command => "startround";
- public void Execute(IConsoleShell shell, string argStr, string[] args)
+ public override void Execute(IConsoleShell shell, string argStr, string[] args)
+ {
+ if (_gameTicker.RunLevel != GameRunLevel.PreRoundLobby)
{
- var ticker = _e.System<GameTicker>();
-
- if (ticker.RunLevel != GameRunLevel.PreRoundLobby)
- {
- shell.WriteLine("This can only be executed while the game is in the pre-round lobby.");
- return;
- }
-
- ticker.StartRound();
+ shell.WriteLine(Loc.GetString("shell-can-only-run-from-pre-round-lobby"));
+ return;
}
+
+ _gameTicker.StartRound();
}
}
--- /dev/null
+cmd-delaystart-desc = Delays the round start.
+cmd-delaystart-help = Usage: delaystart [seconds]
+ If no arguments are passed, the round will be paused or resumed accordingly.
+cmd-delaystart-invalid-seconds = {$value} isn't a valid amount of seconds.
+cmd-delaystart-paused = Paused the countdown.
+cmd-delaystart-unpaused = Resumed the countdown.
+cmd-delaystart-too-late = Round start could not be delayed in time!
--- /dev/null
+cmd-endround-desc = Ends the round and moves the server to PostRound.
+cmd-endround-help = Usage: endround
--- /dev/null
+cmd-restartround-desc = Ends the current round and starts the countdown for the next lobby.
+cmd-restartround-help = Usage: restartround
+
+cmd-restartroundnow-desc = Moves the server from PostRound to a new PreRoundLobby.
+cmd-restartroundnow-help = Usage: restartroundnow
--- /dev/null
+cmd-startround-desc = Ends PreRoundLobby state and starts the round.
+cmd-startround-help = Usage: startround
shell-command-success = Command successful
shell-invalid-command = Invalid command.
shell-invalid-command-specific = Invalid {$commandName} command.
+shell-can-only-run-from-pre-round-lobby = You can only run this command while the game is in the pre-round lobby.
+shell-can-only-run-while-round-is-active = You can only run this command while the game is in a round.
shell-cannot-run-command-from-server = You cannot run this command from the server.
shell-only-players-can-run-this-command = Only players can run this command.
shell-must-be-attached-to-entity = You must be attached to an entity to run this command.