Replace actor list with count in UnitBuilderBotModule.

This commit is contained in:
Paul Chote
2019-10-05 12:22:19 +01:00
committed by reaperrr
parent b839796b89
commit 3ad3c39b21

View File

@@ -49,8 +49,7 @@ namespace OpenRA.Mods.Common.Traits
readonly List<string> queuedBuildRequests = new List<string>(); readonly List<string> queuedBuildRequests = new List<string>();
IBotRequestPauseUnitProduction[] requestPause; IBotRequestPauseUnitProduction[] requestPause;
int idleUnitCount;
List<Actor> idleUnits = new List<Actor>();
int ticks; int ticks;
@@ -68,7 +67,7 @@ namespace OpenRA.Mods.Common.Traits
void IBotNotifyIdleBaseUnits.UpdatedIdleBaseUnits(List<Actor> idleUnits) void IBotNotifyIdleBaseUnits.UpdatedIdleBaseUnits(List<Actor> idleUnits)
{ {
this.idleUnits = idleUnits; idleUnitCount = idleUnits.Count;
} }
void IBotTick.BotTick(IBot bot) void IBotTick.BotTick(IBot bot)
@@ -88,7 +87,7 @@ namespace OpenRA.Mods.Common.Traits
} }
foreach (var q in Info.UnitQueues) 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<MiniYamlNode>() return new List<MiniYamlNode>()
{ {
new MiniYamlNode("QueuedBuildRequests", FieldSaver.FormatValue(queuedBuildRequests.ToArray())), 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<string[]>("QueuedBuildRequests", queuedBuildRequestsNode.Value.Value)); queuedBuildRequests.AddRange(FieldLoader.GetValue<string[]>("QueuedBuildRequests", queuedBuildRequestsNode.Value.Value));
} }
var idleUnitsNode = data.FirstOrDefault(n => n.Key == "IdleUnits"); var idleUnitCountNode = data.FirstOrDefault(n => n.Key == "IdleUnitCount");
if (idleUnitsNode != null) if (idleUnitCountNode != null)
{ idleUnitCount = FieldLoader.GetValue<int>("IdleUnitCount", idleUnitCountNode.Value.Value);
idleUnits.Clear();
idleUnits.AddRange(FieldLoader.GetValue<uint[]>("IdleUnits", idleUnitsNode.Value.Value)
.Select(a => world.GetActorById(a)));
}
} }
} }
} }