@layout PageLayout @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() { 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.GetFactionType(); var immortal = FilterService.GetImmortalType(); 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, toastService)) { EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval()); } } }