From f3a1c98b20f7a73b27c8d86c86278e4b3a22c0b1 Mon Sep 17 00:00:00 2001 From: Jonathan McCaffrey Date: Thu, 14 Apr 2022 00:45:12 -0400 Subject: [PATCH] fix(BuildCalc) Cancel now reverts unlocked tech again --- Model/BuildOrders/BuildOrderModel.cs | 7 +++++++ Model/Entity/Data/DATA.cs | 2 +- Services/Immortal/BuildOrderService.cs | 10 +++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Model/BuildOrders/BuildOrderModel.cs b/Model/BuildOrders/BuildOrderModel.cs index 1ff60cf..2b9834f 100644 --- a/Model/BuildOrders/BuildOrderModel.cs +++ b/Model/BuildOrders/BuildOrderModel.cs @@ -43,6 +43,13 @@ public class BuildOrderModel } }; + public Dictionary UniqueCompletedCount { get; set; } = new() + { + { + DataType.STARTING_Bastion, 1 + } + }; + public Dictionary SupplyCountTimes { get; set; } = new() diff --git a/Model/Entity/Data/DATA.cs b/Model/Entity/Data/DATA.cs index 35c40bf..cd4eda0 100644 --- a/Model/Entity/Data/DATA.cs +++ b/Model/Entity/Data/DATA.cs @@ -1496,7 +1496,7 @@ public class DATA .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB" }) .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) .AddPart(new EntityProductionModel { Alloy = 50, Ether = 100, BuildTime = 60 }) - .AddPart(new EntityRequirementModel() { Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Research_Building}) + .AddPart(new EntityRequirementModel { Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Research_Building}) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UPGRADE_GreavesOfAhqar, ImmortalId = DataType.IMMORTAL_Orzum }) diff --git a/Services/Immortal/BuildOrderService.cs b/Services/Immortal/BuildOrderService.cs index 2a61120..e828e08 100644 --- a/Services/Immortal/BuildOrderService.cs +++ b/Services/Immortal/BuildOrderService.cs @@ -65,6 +65,11 @@ public class BuildOrderService : IBuildOrderService if (!buildOrder.UniqueCompletedTimes.ContainsKey(entity.DataType)) buildOrder.UniqueCompletedTimes.Add(entity.DataType, atInterval); + if (!buildOrder.UniqueCompletedCount.ContainsKey(entity.DataType)) + buildOrder.UniqueCompletedCount.Add(entity.DataType, 1); + else + buildOrder.UniqueCompletedCount[entity.DataType]++; + if (supply != null) { if (!supply.Takes.Equals(0)) buildOrder.CurrentSupplyUsed += supply.Takes; @@ -159,8 +164,11 @@ public class BuildOrderService : IBuildOrderService if (entityRemoved.Supply()?.Takes > 0) buildOrder.CurrentSupplyUsed -= entityRemoved.Supply()!.Takes; - if (UniqueCompletedTimes[entityRemoved!.DataType].Equals(lastInterval + entityRemoved.Production()!.BuildTime)) + + buildOrder.UniqueCompletedCount[entityRemoved!.DataType]--; + if (buildOrder.UniqueCompletedCount[entityRemoved!.DataType] == 0) { UniqueCompletedTimes.Remove(entityRemoved.DataType); + } if (entityRemoved.Info().Descriptive == DescriptiveType.Worker) {