@inject IJSRuntime JsRuntime; @inject IBuildOrderService BuildOrderService @inject IEconomyService EconomyService @inject IToastService ToastService @inject ITimingService TimingService @using System.Data @implements IDisposable Building Input Delay Add a input delay to constructing buildings for simulating worker movement and player micro.
Wait Time Add Wait Wait To Add Wait
@code { private int BuildDelay { get; set; } = 2; private int WaitTime { get; set; } = 30; private int WaitTo { get; set; } = 30; protected override void OnInitialized() { TimingService.Subscribe(RefreshDefaults); RefreshDefaults(); } void IDisposable.Dispose() { TimingService.Unsubscribe(RefreshDefaults); } void RefreshDefaults() { BuildDelay = TimingService.BuildingInputDelay; WaitTime = TimingService.WaitTime; WaitTo = TimingService.WaitTo; StateHasChanged(); } void OnBuildingInputDelayChanged(ChangeEventArgs changeEventArgs) { TimingService.BuildingInputDelay = int.Parse(changeEventArgs.Value!.ToString()!); } void OnWaitTimeChanged(ChangeEventArgs changeEventArgs) { TimingService.WaitTime = (int)changeEventArgs.Value!; WaitTime = (int)changeEventArgs.Value!; } void OnWaitToChanged(ChangeEventArgs changeEventArgs) { TimingService.WaitTo = (int)changeEventArgs.Value!; WaitTo = (int)changeEventArgs.Value!; } private void OnWaitClicked() { if (BuildOrderService.AddWait(WaitTime)) { EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval()); } } private void OnWaitToClicked() { if (BuildOrderService.AddWaitTo(WaitTo)) { EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval()); } } protected override bool ShouldRender() { #if DEBUG JsRuntime.InvokeVoidAsync("console.time", "TimingComponent"); #endif return true; } protected override void OnAfterRender(bool firstRender) { #if DEBUG JsRuntime.InvokeVoidAsync("console.timeEnd", "TimingComponent"); #endif } }