diff --git a/OpenRA.Mods.Common/Traits/BotModules/UnitBuilderBotModule.cs b/OpenRA.Mods.Common/Traits/BotModules/UnitBuilderBotModule.cs index 386448939b..7417e72c01 100644 --- a/OpenRA.Mods.Common/Traits/BotModules/UnitBuilderBotModule.cs +++ b/OpenRA.Mods.Common/Traits/BotModules/UnitBuilderBotModule.cs @@ -49,8 +49,7 @@ namespace OpenRA.Mods.Common.Traits readonly List queuedBuildRequests = new List(); IBotRequestPauseUnitProduction[] requestPause; - - List idleUnits = new List(); + int idleUnitCount; int ticks; @@ -68,7 +67,7 @@ namespace OpenRA.Mods.Common.Traits void IBotNotifyIdleBaseUnits.UpdatedIdleBaseUnits(List idleUnits) { - this.idleUnits = idleUnits; + idleUnitCount = idleUnits.Count; } void IBotTick.BotTick(IBot bot) @@ -88,7 +87,7 @@ namespace OpenRA.Mods.Common.Traits } foreach (var q in Info.UnitQueues) - BuildUnit(bot, q, idleUnits.Count < Info.IdleBaseUnitsMaximum); + BuildUnit(bot, q, idleUnitCount < Info.IdleBaseUnitsMaximum); } } @@ -218,7 +217,7 @@ namespace OpenRA.Mods.Common.Traits return new List() { new MiniYamlNode("QueuedBuildRequests", FieldSaver.FormatValue(queuedBuildRequests.ToArray())), - new MiniYamlNode("IdleUnits", FieldSaver.FormatValue(idleUnits.Select(a => a.ActorID).ToArray())) + new MiniYamlNode("IdleUnitCount", FieldSaver.FormatValue(idleUnitCount)) }; } @@ -234,13 +233,9 @@ namespace OpenRA.Mods.Common.Traits queuedBuildRequests.AddRange(FieldLoader.GetValue("QueuedBuildRequests", queuedBuildRequestsNode.Value.Value)); } - var idleUnitsNode = data.FirstOrDefault(n => n.Key == "IdleUnits"); - if (idleUnitsNode != null) - { - idleUnits.Clear(); - idleUnits.AddRange(FieldLoader.GetValue("IdleUnits", idleUnitsNode.Value.Value) - .Select(a => world.GetActorById(a))); - } + var idleUnitCountNode = data.FirstOrDefault(n => n.Key == "IdleUnitCount"); + if (idleUnitCountNode != null) + idleUnitCount = FieldLoader.GetValue("IdleUnitCount", idleUnitCountNode.Value.Value); } } }