Files
tbd-station-14/Content.Client/Ghost/UI/GhostGui.cs
Visne 610ff0083f Ghost UI to XAML and minor cleanup (#4637)
* Remove unused class, clean up XAML

* Move GhostGui.cs into UI folder and namespace

* GhostTargetWindow to seperate file

* GhostTargetWindow to XAML

* Center request button

* Improve UI, localisation
2021-09-21 13:03:14 +10:00

74 lines
2.3 KiB
C#

using Content.Shared.Ghost;
using Robust.Client.Console;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Localization;
using static Robust.Client.UserInterface.Controls.BoxContainer;
namespace Content.Client.Ghost.UI
{
public class GhostGui : Control
{
private readonly Button _returnToBody = new() {Text = Loc.GetString("ghost-gui-return-to-body-button") };
private readonly Button _ghostWarp = new() {Text = Loc.GetString("ghost-gui-ghost-warp-button") };
private readonly Button _ghostRoles = new() {Text = Loc.GetString("ghost-gui-ghost-roles-button") };
private readonly GhostComponent _owner;
public GhostTargetWindow? TargetWindow { get; }
public GhostGui(GhostComponent owner, IEntityNetworkManager eventBus)
{
IoCManager.InjectDependencies(this);
_owner = owner;
TargetWindow = new GhostTargetWindow(eventBus);
MouseFilter = MouseFilterMode.Ignore;
_ghostWarp.OnPressed += _ =>
{
eventBus.SendSystemNetworkMessage(new GhostWarpsRequestEvent());
TargetWindow.Populate();
TargetWindow.OpenCentered();
};
_returnToBody.OnPressed += _ =>
{
var msg = new GhostReturnToBodyRequest();
eventBus.SendSystemNetworkMessage(msg);
};
_ghostRoles.OnPressed += _ => IoCManager.Resolve<IClientConsoleHost>()
.RemoteExecuteCommand(null, "ghostroles");
AddChild(new BoxContainer
{
Orientation = LayoutOrientation.Horizontal,
Children =
{
_returnToBody,
_ghostWarp,
_ghostRoles,
}
});
}
public void Update()
{
_returnToBody.Disabled = !_owner.CanReturnToBody;
TargetWindow?.Populate();
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
if (disposing)
{
TargetWindow?.Dispose();
}
}
}
}