* Remove some BUI boilerplate - The disposals overrides got removed due to the helper method handling it. - Replace window creation with CreateWindow helper. - Fixed some stinky code which would cause exceptions. * More * moar * weh * done * More BUIs * More updates * weh * moar * look who it is * weh * merge * weh * fixes
76 lines
2.7 KiB
C#
76 lines
2.7 KiB
C#
using System.Linq;
|
|
using Content.Client.UserInterface;
|
|
using Content.Shared.Ame.Components;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.UserInterface.CustomControls;
|
|
using Robust.Client.UserInterface.XAML;
|
|
|
|
namespace Content.Client.Ame.UI
|
|
{
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class AmeWindow : DefaultWindow
|
|
{
|
|
public event Action<UiButton>? OnAmeButton;
|
|
|
|
public AmeWindow()
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
IoCManager.InjectDependencies(this);
|
|
|
|
EjectButton.OnPressed += _ => OnAmeButton?.Invoke(UiButton.Eject);
|
|
ToggleInjection.OnPressed += _ => OnAmeButton?.Invoke(UiButton.ToggleInjection);
|
|
IncreaseFuelButton.OnPressed += _ => OnAmeButton?.Invoke(UiButton.IncreaseFuel);
|
|
DecreaseFuelButton.OnPressed += _ => OnAmeButton?.Invoke(UiButton.DecreaseFuel);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Update the UI state when new state data is received from the server.
|
|
/// </summary>
|
|
/// <param name="state">State data sent by the server.</param>
|
|
public void UpdateState(BoundUserInterfaceState state)
|
|
{
|
|
var castState = (AmeControllerBoundUserInterfaceState) state;
|
|
|
|
// Disable all buttons if not powered
|
|
if (Contents.Children.Any())
|
|
{
|
|
ButtonHelpers.SetButtonDisabledRecursive(Contents, !castState.HasPower);
|
|
EjectButton.Disabled = false;
|
|
}
|
|
|
|
if (!castState.HasFuelJar)
|
|
{
|
|
EjectButton.Disabled = true;
|
|
ToggleInjection.Disabled = true;
|
|
FuelAmount.Text = Loc.GetString("ame-window-fuel-not-inserted-text");
|
|
}
|
|
else
|
|
{
|
|
EjectButton.Disabled = false;
|
|
ToggleInjection.Disabled = false;
|
|
FuelAmount.Text = $"{castState.FuelAmount}";
|
|
}
|
|
|
|
if (!castState.IsMaster)
|
|
{
|
|
ToggleInjection.Disabled = true;
|
|
}
|
|
|
|
if (!castState.Injecting)
|
|
{
|
|
InjectionStatus.Text = Loc.GetString("ame-window-engine-injection-status-not-injecting-label") + " ";
|
|
}
|
|
else
|
|
{
|
|
InjectionStatus.Text = Loc.GetString("ame-window-engine-injection-status-injecting-label") + " ";
|
|
}
|
|
|
|
CoreCount.Text = $"{castState.CoreCount}";
|
|
InjectionAmount.Text = $"{castState.InjectionAmount}";
|
|
// format power statistics to pretty numbers
|
|
CurrentPowerSupply.Text = $"{castState.CurrentPowerSupply:N1}";
|
|
TargetedPowerSupply.Text = $"{castState.TargetedPowerSupply:N1}";
|
|
}
|
|
}
|
|
}
|