@layout PageLayout @inherits BasePage @implements IDisposable @inject IToastService ToastService
Comparision Loader
Sand
Comparision Charts
@code { [Inject] IKeyService KeyService { get; set; } = default!; [Inject] IImmortalSelectionService FilterService { get; set; } = default!; [Inject] IBuildOrderService BuildOrderService { get; set; } = default!; [Inject] IEconomyService EconomyService { get; set; } = default!; [Inject] ITimingService TimingService { get; set; } = default!; Dictionary> completedEntities = new(); List entities = EntityModel.GetListOnlyHotkey(); protected override void OnInitialized() { base.OnInitialized(); KeyService.Subscribe(HandleClick); FilterService.Subscribe(StateHasChanged); EconomyService.Subscribe(StateHasChanged); TimingService.Subscribe(HandleTimingChanged); EconomyService.Calculate(BuildOrderService, TimingService, 0); } void IDisposable.Dispose() { KeyService.Unsubscribe(HandleClick); FilterService.Unsubscribe(StateHasChanged); TimingService.Unsubscribe(StateHasChanged); EconomyService.Unsubscribe(StateHasChanged); } protected void HandleTimingChanged() { EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval()); } protected void HandleClick() { var hotkey = KeyService.GetHotkey(); var hotkeyGroup = KeyService.GetHotkeyGroup(); var isHoldSpace = KeyService.IsHoldingSpace(); var faction = FilterService.GetFaction(); var immortal = FilterService.GetImmortal(); if (hotkey == "`") { BuildOrderService.RemoveLast(); EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval()); StateHasChanged(); return; } var entity = EntityModel.GetFrom(hotkey!, hotkeyGroup, isHoldSpace, faction, immortal); if (entity == null) { return; } if (BuildOrderService.Add(entity, EconomyService)) { EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval()); } } }