ой
This commit is contained in:
parent
9d9d23d400
commit
47c8739466
2 changed files with 27 additions and 11 deletions
|
|
@ -1,5 +1,6 @@
|
|||
using System.Linq;
|
||||
using Content.Server.Administration;
|
||||
using Content.Server.Commands;
|
||||
using Content.Shared.Administration;
|
||||
using Robust.Shared.Console;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
|
@ -9,19 +10,27 @@ namespace Content.Server._Sunrise.StationGoal
|
|||
[AdminCommand(AdminFlags.Fun)]
|
||||
public sealed class StationGoalCommand : IConsoleCommand
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entManager = default!;
|
||||
|
||||
public string Command => "sendstationgoal";
|
||||
public string Description => Loc.GetString("send-station-goal-command-description");
|
||||
public string Help => Loc.GetString("send-station-goal-command-help-text", ("command", Command));
|
||||
|
||||
public void Execute(IConsoleShell shell, string argStr, string[] args)
|
||||
{
|
||||
if (args.Length != 1)
|
||||
if (args.Length != 2)
|
||||
{
|
||||
shell.WriteError(Loc.GetString("shell-need-exactly-one-argument"));
|
||||
shell.WriteError(Loc.GetString("shell-wrong-arguments-number"));
|
||||
return;
|
||||
}
|
||||
|
||||
var protoId = args[0];
|
||||
if (!NetEntity.TryParse(args[0], out var euidNet) || !_entManager.TryGetEntity(euidNet, out var euid))
|
||||
{
|
||||
shell.WriteError($"Failed to parse euid '{args[0]}'.");
|
||||
return;
|
||||
}
|
||||
|
||||
var protoId = args[1];
|
||||
var prototypeManager = IoCManager.Resolve<IPrototypeManager>();
|
||||
if (!prototypeManager.TryIndex<StationGoalPrototype>(protoId, out var proto))
|
||||
{
|
||||
|
|
@ -30,24 +39,26 @@ namespace Content.Server._Sunrise.StationGoal
|
|||
}
|
||||
|
||||
var stationGoalPaper = IoCManager.Resolve<IEntityManager>().System<StationGoalPaperSystem>();
|
||||
if (!stationGoalPaper.SendStationGoal(proto))
|
||||
if (!stationGoalPaper.SendStationGoal(euid, protoId))
|
||||
{
|
||||
shell.WriteError("Station goal was not sent");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public CompletionResult GetCompletion(IConsoleShell shell, string[] args)
|
||||
{
|
||||
if (args.Length == 1)
|
||||
switch (args.Length)
|
||||
{
|
||||
var options = IoCManager.Resolve<IPrototypeManager>()
|
||||
.EnumeratePrototypes<StationGoalPrototype>()
|
||||
.Select(p => new CompletionOption(p.ID));
|
||||
case 1:
|
||||
var stations = ContentCompletionHelper.StationIds(_entManager);
|
||||
return CompletionResult.FromHintOptions(stations, "[StationId]");
|
||||
case 2:
|
||||
var options = IoCManager.Resolve<IPrototypeManager>()
|
||||
.EnumeratePrototypes<StationGoalPrototype>()
|
||||
.Select(p => new CompletionOption(p.ID));
|
||||
|
||||
return CompletionResult.FromHintOptions(options, Loc.GetString("send-station-goal-command-arg-id"));
|
||||
return CompletionResult.FromHintOptions(options, Loc.GetString("send-station-goal-command-arg-id"));
|
||||
}
|
||||
|
||||
return CompletionResult.Empty;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,6 +59,11 @@ namespace Content.Server._Sunrise.StationGoal
|
|||
}
|
||||
}
|
||||
|
||||
public bool SendStationGoal(EntityUid? ent, ProtoId<StationGoalPrototype> goal)
|
||||
{
|
||||
return SendStationGoal(ent, _prototypeManager.Index(goal));
|
||||
}
|
||||
|
||||
public bool SendStationGoal(EntityUid? ent, StationGoalPrototype goal)
|
||||
{
|
||||
if (ent is null)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue