Files
tbd-station-14/Content.Client/Revenant/Ui/RevenantMenu.xaml.cs
2022-08-13 23:49:41 +10:00

63 lines
1.9 KiB
C#

using Content.Client.Message;
using Content.Shared.FixedPoint;
using Content.Shared.Revenant;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML;
using Robust.Client.Utility;
namespace Content.Client.Revenant.Ui;
[GenerateTypedNameReferences]
public sealed partial class RevenantMenu : DefaultWindow
{
private FixedPoint2 _essence = 0f;
public event Action<BaseButton.ButtonEventArgs, RevenantStoreListingPrototype>? OnListingButtonPressed;
public RevenantMenu()
{
RobustXamlLoader.Load(this);
}
public void UpdateEssence(float essence)
{
// update balance label
_essence = essence;
var balanceStr = Loc.GetString("revenant-user-interface-essence-amount", ("amount", Math.Round(_essence.Float())));
BalanceInfo.SetMarkup(balanceStr);
}
public void UpdateListing(List<RevenantStoreListingPrototype> listings)
{
// should probably chunk these out instead. to-do if this clogs the internet tubes.
// maybe read clients prototypes instead?
ClearListings();
foreach (var item in listings)
{
AddListingGui(item);
}
}
private void AddListingGui(RevenantStoreListingPrototype listing)
{
var listingName = listing.ListingName;
var listingDesc = listing.Description;
var listingPrice = listing.Price;
var canBuy = _essence > listing.Price;
var texture = listing.Icon?.Frame0();
var newListing = new RevenantListingControl(listingName, listingDesc, listingPrice, canBuy, texture);
newListing.RevenantItemBuyButton.OnButtonDown += args
=> OnListingButtonPressed?.Invoke(args, listing);
RevenantListingsContainer.AddChild(newListing);
}
private void ClearListings()
{
RevenantListingsContainer.Children.Clear();
}
}