Implement Building/UnitDelays

This commit is contained in:
Mustafa Alperen Seki
2019-01-21 14:41:03 +03:00
committed by reaperrr
parent 2a9721a9f8
commit 2aebb05cd0
3 changed files with 17 additions and 0 deletions

View File

@@ -119,6 +119,9 @@ namespace OpenRA.Mods.Common.Traits
[Desc("What buildings should the AI have a maximum limit to build.")] [Desc("What buildings should the AI have a maximum limit to build.")]
public readonly Dictionary<string, int> BuildingLimits = null; public readonly Dictionary<string, int> BuildingLimits = null;
[Desc("When should the AI start building specific buildings.")]
public readonly Dictionary<string, int> BuildingDelays = null;
public override object Create(ActorInitializer init) { return new BaseBuilderBotModule(init.Self, this); } public override object Create(ActorInitializer init) { return new BaseBuilderBotModule(init.Self, this); }
} }

View File

@@ -292,6 +292,12 @@ namespace OpenRA.Mods.Common.Traits
{ {
var name = frac.Key; var name = frac.Key;
// Does this building have initial delay, if so have we passed it?
if (baseBuilder.Info.BuildingDelays != null &&
baseBuilder.Info.BuildingDelays.ContainsKey(name) &&
baseBuilder.Info.BuildingDelays[name] > world.WorldTick)
continue;
// Can we build this structure? // Can we build this structure?
if (!buildableThings.Any(b => b.Name == name)) if (!buildableThings.Any(b => b.Name == name))
continue; continue;

View File

@@ -33,6 +33,9 @@ namespace OpenRA.Mods.Common.Traits
[Desc("What units should the AI have a maximum limit to train.")] [Desc("What units should the AI have a maximum limit to train.")]
public readonly Dictionary<string, int> UnitLimits = null; public readonly Dictionary<string, int> UnitLimits = null;
[Desc("When should the AI start train specific units.")]
public readonly Dictionary<string, int> UnitDelays = null;
public override object Create(ActorInitializer init) { return new UnitBuilderBotModule(init.Self, this); } public override object Create(ActorInitializer init) { return new UnitBuilderBotModule(init.Self, this); }
} }
@@ -118,6 +121,11 @@ namespace OpenRA.Mods.Common.Traits
if (Info.UnitsToBuild != null && !Info.UnitsToBuild.ContainsKey(name)) if (Info.UnitsToBuild != null && !Info.UnitsToBuild.ContainsKey(name))
return; return;
if (Info.UnitDelays != null &&
Info.UnitDelays.ContainsKey(name) &&
Info.UnitDelays[name] > world.WorldTick)
return;
if (Info.UnitLimits != null && if (Info.UnitLimits != null &&
Info.UnitLimits.ContainsKey(name) && Info.UnitLimits.ContainsKey(name) &&
world.Actors.Count(a => a.Owner == player && a.Info.Name == name) >= Info.UnitLimits[name]) world.Actors.Count(a => a.Owner == player && a.Info.Name == name) >= Info.UnitLimits[name])