Change events command to give better instructions on how to use it (#2456)

This commit is contained in:
DrSmugleaf
2020-11-02 11:41:07 +01:00
committed by GitHub
parent 6b4a39006e
commit 1817a4a816

View File

@@ -13,88 +13,106 @@ namespace Content.Server.StationEvents
{ {
public string Command => "events"; public string Command => "events";
public string Description => "Provides admin control to station events"; public string Description => "Provides admin control to station events";
public string Help => "events <list/pause/resume/stop/run <eventname/random>>\n" + public string Help => $"events <list/pause/resume/stop/run <eventName/random>>\n{ListHelp}\n{PauseHelp}\n{ResumeHelp}\n{RunHelp}";
"list: return all event names that can be run\n " +
"pause: stop all random events from running\n" + private const string ListHelp = "list: return all event names that can be run";
"resume: allow random events to run again\n" +
"run: start a particular event now; <eventname> is case-insensitive and not localized"; private const string PauseHelp = "pause: stop all random events from running and any one currently running";
private const string ResumeHelp = "resume: allow random events to run again";
private const string RunHelp =
"run <eventName/random>: start a particular event now; <eventName> is case-insensitive and not localized";
public void Execute(IConsoleShell shell, IPlayerSession? player, string[] args) public void Execute(IConsoleShell shell, IPlayerSession? player, string[] args)
{ {
if (args.Length == 0) if (args.Length == 0)
{ {
shell.SendText(player, "Need more args"); shell.SendText(player, $"Invalid amount of arguments.\n{Help}");
return; return;
} }
if (args[0] == "list") switch (args[0])
{
case "list":
List(shell, player);
break;
// Didn't use a "toggle" so it's explicit
case "pause":
Pause(shell, player);
break;
case "resume":
Resume(shell, player);
break;
case "stop":
Stop(shell, player);
break;
case "run":
if (args.Length != 2)
{
shell.SendText(player, $"Need 2 arguments, there were {args.Length}.\n{RunHelp}");
break;
}
Run(shell, player, args[1]);
break;
default:
shell.SendText(player, Loc.GetString($"Invalid events command.\n{Help}"));
break;
}
}
private void Run(IConsoleShell shell, IPlayerSession? player, string eventName)
{
var stationSystem = EntitySystem.Get<StationEventSystem>();
var resultText = eventName == "random"
? stationSystem.RunRandomEvent()
: stationSystem.RunEvent(eventName);
shell.SendText(player, resultText);
}
private void List(IConsoleShell shell, IPlayerSession? player)
{ {
var resultText = "Random\n" + EntitySystem.Get<StationEventSystem>().GetEventNames(); var resultText = "Random\n" + EntitySystem.Get<StationEventSystem>().GetEventNames();
shell.SendText(player, resultText); shell.SendText(player, resultText);
return;
} }
// Didn't use a "toggle" so it's explicit private void Pause(IConsoleShell shell, IPlayerSession? player)
if (args[0] == "pause")
{ {
var stationEventSystem = EntitySystem.Get<StationEventSystem>(); var stationEventSystem = EntitySystem.Get<StationEventSystem>();
if (!stationEventSystem.Enabled) if (!stationEventSystem.Enabled)
{ {
shell.SendText(player, Loc.GetString("Station events are already paused")); shell.SendText(player, Loc.GetString("Station events are already paused"));
return;
} }
else else
{ {
stationEventSystem.Enabled = false; stationEventSystem.Enabled = false;
shell.SendText(player, Loc.GetString("Station events paused")); shell.SendText(player, Loc.GetString("Station events paused"));
return;
} }
} }
if (args[0] == "resume") private void Resume(IConsoleShell shell, IPlayerSession? player)
{ {
var stationEventSystem = EntitySystem.Get<StationEventSystem>(); var stationEventSystem = EntitySystem.Get<StationEventSystem>();
if (stationEventSystem.Enabled) if (stationEventSystem.Enabled)
{ {
shell.SendText(player, Loc.GetString("Station events are already running")); shell.SendText(player, Loc.GetString("Station events are already running"));
return;
} }
else else
{ {
stationEventSystem.Enabled = true; stationEventSystem.Enabled = true;
shell.SendText(player, Loc.GetString("Station events resumed")); shell.SendText(player, Loc.GetString("Station events resumed"));
return;
} }
} }
if (args[0] == "stop") private void Stop(IConsoleShell shell, IPlayerSession? player)
{ {
var resultText = EntitySystem.Get<StationEventSystem>().StopEvent(); var resultText = EntitySystem.Get<StationEventSystem>().StopEvent();
shell.SendText(player, resultText); shell.SendText(player, resultText);
return;
}
if (args[0] == "run" && args.Length == 2)
{
var eventName = args[1];
string resultText;
if (eventName == "random")
{
resultText = EntitySystem.Get<StationEventSystem>().RunRandomEvent();
}
else
{
resultText = EntitySystem.Get<StationEventSystem>().RunEvent(eventName);
}
shell.SendText(player, resultText);
return;
}
shell.SendText(player, Loc.GetString("Invalid events command"));
return;
} }
} }
} }