80 lines
2.4 KiB
C#
80 lines
2.4 KiB
C#
using Content.Shared._CP14.Cargo;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.UserInterface.CustomControls;
|
|
using Robust.Client.UserInterface.XAML;
|
|
using Robust.Shared.Timing;
|
|
|
|
namespace Content.Client._CP14.TravelingStoreShip;
|
|
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class CP14StoreWindow : DefaultWindow
|
|
{
|
|
[Dependency] private readonly IGameTiming _timing = default!;
|
|
|
|
private TimeSpan? _nextTravelTime;
|
|
private bool _onStation;
|
|
|
|
public CP14StoreWindow()
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
IoCManager.InjectDependencies(this);
|
|
|
|
Tabs.SetTabTitle(0, Loc.GetString("cp14-store-ui-tab-buy"));
|
|
Tabs.SetTabTitle(1, Loc.GetString("cp14-store-ui-tab-sell"));
|
|
}
|
|
|
|
public void UpdateUI(CP14StoreUiState state)
|
|
{
|
|
UpdateProducts(state);
|
|
|
|
_nextTravelTime = state.NextTravelTime;
|
|
_onStation = state.OnStation;
|
|
}
|
|
|
|
protected override void FrameUpdate(FrameEventArgs args)
|
|
{
|
|
base.FrameUpdate(args);
|
|
|
|
//Updating time
|
|
if (_nextTravelTime is not null)
|
|
{
|
|
var time = _nextTravelTime.Value - _timing.CurTime;
|
|
|
|
TravelTimeLabel.Text =
|
|
$"{Loc.GetString(_onStation ? "cp14-store-ui-next-travel-out" : "cp14-store-ui-next-travel-in")} {Math.Max(time.Minutes, 0):00}:{Math.Max(time.Seconds, 0):00}";
|
|
}
|
|
}
|
|
|
|
private void UpdateProducts(CP14StoreUiState state)
|
|
{
|
|
BuyProductsContainer.RemoveAllChildren();
|
|
SellProductsContainer.RemoveAllChildren();
|
|
|
|
foreach (var product in state.ProductsBuy)
|
|
{
|
|
var control = new CP14StoreProductControl(product);
|
|
control.ProductButton.OnPressed += _ =>
|
|
{
|
|
SelectProduct(product);
|
|
};
|
|
BuyProductsContainer.AddChild(control);
|
|
}
|
|
|
|
foreach (var product in state.ProductsSell)
|
|
{
|
|
var control = new CP14StoreProductControl(product);
|
|
control.ProductButton.OnPressed += _ =>
|
|
{
|
|
SelectProduct(product);
|
|
};
|
|
SellProductsContainer.AddChild(control);
|
|
}
|
|
}
|
|
|
|
private void SelectProduct(CP14StoreUiProductEntry? entry)
|
|
{
|
|
SelectedName.Text = entry is null ? string.Empty : $"[bold]{entry.Value.Name}[/bold]";
|
|
SelectedDesc.Text = entry is null ? string.Empty : entry.Value.Desc;
|
|
}
|
|
}
|