mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-15 14:52:35 +02:00
70 lines
2.3 KiB
C#
70 lines
2.3 KiB
C#
using Robust.Shared.Console;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.IoC;
|
|
using Robust.Shared.Localization;
|
|
using Robust.Shared.Map.Components;
|
|
using Robust.Shared.Maths;
|
|
using Robust.Shared.Toolshed;
|
|
|
|
namespace Robust.Server.Physics;
|
|
|
|
public sealed class MergeGridsCommand : LocalizedCommands
|
|
{
|
|
[Dependency] private readonly IEntityManager _entManager = default!;
|
|
|
|
public override string Command => "merge_grids";
|
|
|
|
public override void Execute(IConsoleShell shell, string argStr, string[] args)
|
|
{
|
|
if (args.Length < 4)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (!NetEntity.TryParse(args[0], out var gridANet) ||
|
|
!NetEntity.TryParse(args[1], out var gridBNet))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var gridAUid = _entManager.GetEntity(gridANet);
|
|
var gridBUid = _entManager.GetEntity(gridBNet);
|
|
|
|
if (!_entManager.TryGetComponent<MapGridComponent>(gridAUid, out var gridA) ||
|
|
!_entManager.TryGetComponent<MapGridComponent>(gridBUid, out var gridB))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (!int.TryParse(args[2], out var x) ||
|
|
!int.TryParse(args[3], out var y))
|
|
{
|
|
return;
|
|
}
|
|
|
|
Angle rotation = Angle.Zero;
|
|
|
|
if (args.Length >= 5 && int.TryParse(args[4], out var rotationInt))
|
|
{
|
|
rotation = Angle.FromDegrees(rotationInt);
|
|
}
|
|
|
|
var offset = new Vector2i(x, y);
|
|
var fixtureSystem = _entManager.System<GridFixtureSystem>();
|
|
fixtureSystem.Merge(gridAUid, gridBUid, offset, rotation, gridA: gridA, gridB: gridB);
|
|
}
|
|
|
|
public override CompletionResult GetCompletion(IConsoleShell shell, string[] args)
|
|
{
|
|
return args.Length switch
|
|
{
|
|
1 => CompletionResult.FromHintOptions(CompletionHelper.Components<MapGridComponent>(args[0], _entManager), Loc.GetString("cmd-merge_grids-hintA")),
|
|
2 => CompletionResult.FromHintOptions(CompletionHelper.Components<MapGridComponent>(args[1], _entManager), Loc.GetString("cmd-merge_grids-hintB")),
|
|
3 => CompletionResult.FromHint(Loc.GetString("cmd-merge_grids-xOffset")),
|
|
4 => CompletionResult.FromHint(Loc.GetString("cmd-merge_grids-yOffset")),
|
|
5 => CompletionResult.FromHint(Loc.GetString("cmd-merge_grids-angle")),
|
|
_ => CompletionResult.Empty
|
|
};
|
|
}
|
|
}
|