Files
crystall-punk-14/Content.Client/Gravity/GravityGeneratorBoundUserInterface.cs

108 lines
3.5 KiB
C#
Raw Normal View History

2021-06-09 22:19:39 +02:00
using Content.Shared.Gravity;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
2020-05-02 15:02:52 +01:00
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Shared.GameObjects;
2020-05-02 15:02:52 +01:00
using Robust.Shared.IoC;
using Robust.Shared.Localization;
using Robust.Shared.Maths;
using static Robust.Client.UserInterface.Controls.BoxContainer;
2020-05-02 15:02:52 +01:00
2021-06-09 22:19:39 +02:00
namespace Content.Client.Gravity
2020-05-02 15:02:52 +01:00
{
[UsedImplicitly]
public class GravityGeneratorBoundUserInterface : BoundUserInterface
2020-05-02 15:02:52 +01:00
{
private GravityGeneratorWindow? _window;
2020-05-02 15:02:52 +01:00
public bool IsOn;
public GravityGeneratorBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base (owner, uiKey)
{
SendMessage(new SharedGravityGeneratorComponent.GeneratorStatusRequestMessage());
}
protected override void Open()
{
base.Open();
IsOn = false;
_window = new GravityGeneratorWindow(this);
_window.Switch.OnPressed += (_) =>
2020-05-02 15:02:52 +01:00
{
SendMessage(new SharedGravityGeneratorComponent.SwitchGeneratorMessage(!IsOn));
SendMessage(new SharedGravityGeneratorComponent.GeneratorStatusRequestMessage());
};
_window.OpenCentered();
}
protected override void UpdateState(BoundUserInterfaceState state)
{
base.UpdateState(state);
var castState = (SharedGravityGeneratorComponent.GeneratorState) state;
IsOn = castState.On;
_window?.UpdateButton();
2020-05-02 15:02:52 +01:00
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
if (!disposing) return;
_window?.Dispose();
}
}
public class GravityGeneratorWindow : SS14Window
{
public Label Status;
public Button Switch;
public GravityGeneratorBoundUserInterface Owner;
public GravityGeneratorWindow(GravityGeneratorBoundUserInterface ui)
2020-05-02 15:02:52 +01:00
{
IoCManager.InjectDependencies(this);
Owner = ui;
2020-05-02 15:02:52 +01:00
Title = Loc.GetString("gravity-generator-window-title");
2020-05-02 15:02:52 +01:00
var vBox = new BoxContainer
2020-05-02 15:02:52 +01:00
{
Orientation = LayoutOrientation.Vertical,
2021-02-21 12:38:56 +01:00
MinSize = new Vector2(250, 100)
2020-05-02 15:02:52 +01:00
};
Status = new Label
{
Text = $"{Loc.GetString("gravity-generator-window-status-label")} {Loc.GetString(Owner.IsOn ? "gravity-generator-window-is-on" : "gravity-generator-window-is-off")}",
2020-05-02 15:02:52 +01:00
FontColorOverride = Owner.IsOn ? Color.ForestGreen : Color.Red
};
Switch = new Button
{
Text = Loc.GetString(Owner.IsOn ? "gravity-generator-window-turn-off-button" : "gravity-generator-window-turn-on-button"),
2020-05-02 15:02:52 +01:00
TextAlign = Label.AlignMode.Center,
2021-02-21 12:38:56 +01:00
MinSize = new Vector2(150, 60)
2020-05-02 15:02:52 +01:00
};
vBox.AddChild(Status);
vBox.AddChild(Switch);
Contents.AddChild(vBox);
}
public void UpdateButton()
{
Status.Text = $"{Loc.GetString("gravity-generator-window-status-label")} {Loc.GetString(Owner.IsOn ? "gravity-generator-window-is-on" : "gravity-generator-window-is-off")}";
2020-05-02 15:02:52 +01:00
Status.FontColorOverride = Owner.IsOn ? Color.ForestGreen : Color.Red;
Switch.Text = Loc.GetString(Owner.IsOn ? "gravity-generator-window-turn-off-button" : "gravity-generator-window-turn-on-button");
2020-05-02 15:02:52 +01:00
}
}
}