@implements IDisposable @LastInterval | T @Interval.ToTime(LastInterval) @foreach (var unit in armyCount) { @unit.Value.ToString()x @unit.Key } @code { [Inject] public IBuildOrderService BuildOrder { get; set; } int LastInterval; readonly Dictionary armyCount = new(); List army = new(); protected override void OnInitialized() { BuildOrder.Subscribe(OnBuildOrderChanged); } void IDisposable.Dispose() { BuildOrder.Unsubscribe(OnBuildOrderChanged); } void OnBuildOrderChanged() { armyCount.Clear(); LastInterval = 0; var entitiesOverTime = BuildOrder.GetOrders(); foreach (var entitiesAtTime in entitiesOverTime) { foreach (var entity in entitiesAtTime.Value) { if (entity.EntityType == EntityType.Army) { if (!armyCount.TryAdd(entity.Info().Name, 1)) { armyCount[entity.Info().Name]++; } if (entity.Production() != null && entity.Production().BuildTime + entitiesAtTime.Key > LastInterval) { LastInterval = entity.Production().BuildTime + entitiesAtTime.Key; } } } } StateHasChanged(); } }