@inject IJSRuntime jsRuntime; @inject IEconomyService economyService @implements IDisposable
@(BuildOrderService.GetLastRequestInterval() + 1) | T @Interval.ToTime(BuildOrderService.GetLastRequestInterval() + 1)
@_economy.Alloy +@_economy.AlloyIncome @Math.Round(_economy.Ether) +@Math.Round(_economy.EtherIncome)
@_economy.Pyre @_supplyTaken / @_supplyGranted (@(_supplyGranted / 16)@(_extraBuildings > 0 ? "+" + _extraBuildings : ""))
Workers
@_economy.WorkerCount @_economy.BusyWorkerCount @_economy.CreatingWorkerCount
@code { [Inject] IBuildOrderService BuildOrderService { get; set; } = default!; [Inject] IEconomyService EconomyService { get; set; } = default!; EconomyModel _economy = new(); int _supplyGranted; int _supplyTaken; int _extraBuildings; protected override void OnInitialized() { base.OnInitialized(); BuildOrderService.Subscribe(OnBuildOrderChanged); _economy = EconomyService.GetEconomy(BuildOrderService.GetLastRequestInterval() + 1); } protected override bool ShouldRender() { #if DEBUG jsRuntime.InvokeVoidAsync("console.time", "BankComponent"); #endif return true; } protected override void OnAfterRender(bool firstRender) { #if DEBUG jsRuntime.InvokeVoidAsync("console.timeEnd", "BankComponent"); #endif } void IDisposable.Dispose() { BuildOrderService.Unsubscribe(OnBuildOrderChanged); } void OnBuildOrderChanged() { _economy = EconomyService.GetEconomy(BuildOrderService.GetLastRequestInterval() + 1); var ordersOverTime = BuildOrderService.GetOrders(); _supplyTaken = (from ordersAtInterval in ordersOverTime from order in ordersAtInterval.Value where order.Supply() != null where order.Supply().Takes > 0 select order.Supply().Takes).Sum(); _supplyGranted = (from ordersAtInterval in ordersOverTime from order in ordersAtInterval.Value where order.Supply() != null where order.Supply().Grants > 0 select order.Supply().Grants).Sum(); _extraBuildings = 0; if (_supplyGranted > 160) { _extraBuildings = (_supplyGranted - 160) / 16; _supplyGranted = 160; } StateHasChanged(); } }