59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
using Content.Client.UserInterface.Controls;
|
|
using Content.Shared._Horizon.BluespaceHarvester;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.UserInterface.XAML;
|
|
|
|
namespace Content.Client._Horizon.BluespaceHarvester;
|
|
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class BluespaceHarvesterMenu : FancyWindow
|
|
{
|
|
private readonly BluespaceHarvesterBoundUserInterface _owner;
|
|
|
|
public BluespaceHarvesterMenu(BluespaceHarvesterBoundUserInterface owner)
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
|
|
_owner = owner;
|
|
|
|
InputLevelBar.OnTextEntered += (args) =>
|
|
{
|
|
if (!int.TryParse(args.Text, out var level) || level < 0 || level > 20)
|
|
{
|
|
InputLevelBar.Text = "0";
|
|
return;
|
|
}
|
|
_owner.SendTargetLevel(level);
|
|
};
|
|
|
|
// EntityView.SetEntity(_owner.Owner);
|
|
}
|
|
|
|
public void UpdateState(BluespaceHarvesterBoundUserInterfaceState state)
|
|
{
|
|
TargetLevel.Text = $"{state.TargetLevel}";
|
|
CurrentLevel.Text = $"{state.CurrentLevel}";
|
|
DesiredBar.Value = ((float)state.CurrentLevel) / ((float)state.MaxLevel);
|
|
|
|
PowerUsageLabel.Text = Loc.GetString("power-monitoring-window-value", ("value", state.PowerUsage));
|
|
PowerUsageNextLabel.Text = Loc.GetString("power-monitoring-window-value", ("value", state.PowerUsageNext));
|
|
|
|
AvailablePointsLabel.Text = $"{state.Points}";
|
|
TotalPontsLabel.Text = $"{state.TotalPoints}";
|
|
GenerationPointsLabel.Text = $"{state.PointsGen}";
|
|
|
|
Categories.RemoveAllChildren();
|
|
foreach (var category in state.Categories)
|
|
{
|
|
var child = new BluespaceHarvesterCategory(category, state.Points >= category.Cost);
|
|
|
|
child.CategoryButton.OnButtonDown += _ =>
|
|
{
|
|
_owner.SendBuy(category.Type);
|
|
};
|
|
|
|
Categories.AddChild(child);
|
|
}
|
|
}
|
|
}
|