50 lines
1.5 KiB
C#
50 lines
1.5 KiB
C#
using Content.Shared._NF.Bank.BUI;
|
|
using Content.Shared._NF.Bank.Components;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.UserInterface.Controls;
|
|
using Robust.Client.UserInterface.XAML;
|
|
|
|
namespace Content.Client._NF.CartridgeLoader.Cartridges;
|
|
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class LedgerUiFragment : BoxContainer
|
|
{
|
|
private Dictionary<SectorBankAccount, LedgerTab> _tabsByAccount = new();
|
|
public LedgerUiFragment()
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
|
|
foreach (var account in Enum.GetValues<SectorBankAccount>())
|
|
{
|
|
if (account == SectorBankAccount.Invalid)
|
|
continue;
|
|
var ledgerTab = new LedgerTab(account);
|
|
Tabs.AddChild(ledgerTab);
|
|
Tabs.SetTabTitle(Tabs.ChildCount - 1, Loc.GetString($"ledger-tab-{account}"));
|
|
_tabsByAccount[account] = ledgerTab;
|
|
}
|
|
}
|
|
|
|
public void UpdateState(NFLedgerState state)
|
|
{
|
|
foreach (var tab in Tabs.Children)
|
|
{
|
|
if (tab is LedgerTab ledgerTab)
|
|
ledgerTab.ClearLedgerEntries();
|
|
}
|
|
|
|
// Regenerate new entries
|
|
foreach (var entry in state.Entries)
|
|
{
|
|
if (_tabsByAccount.ContainsKey(entry.Account))
|
|
_tabsByAccount[entry.Account].AddLedgerEntry(entry.Type, entry.Amount);
|
|
}
|
|
|
|
foreach (var tab in Tabs.Children)
|
|
{
|
|
if (tab is LedgerTab ledgerTab)
|
|
ledgerTab.UpdateTotals();
|
|
}
|
|
}
|
|
}
|