Added support for filtering exits by production type.

This commit is contained in:
GSonderling
2017-12-09 22:22:48 +00:00
committed by reaperrr
parent 1bf59e885d
commit 488cec64b8
16 changed files with 116 additions and 34 deletions

View File

@@ -90,7 +90,7 @@ namespace OpenRA.Mods.Common.Traits
var bi = unit.TraitInfo<BuildableInfo>();
// Some units may request a specific production type, which is ignored if the AllTech cheat is enabled
var type = developerMode.AllTech ? Info.Type : bi.BuildAtProductionType ?? Info.Type;
var type = developerMode.AllTech ? Info.Type : (bi.BuildAtProductionType ?? Info.Type);
var producers = self.World.ActorsWithTrait<Production>()
.Where(x => x.Actor.Owner == self.Owner
@@ -112,7 +112,7 @@ namespace OpenRA.Mods.Common.Traits
new FactionInit(BuildableInfo.GetInitialFaction(unit, p.Trait.Faction))
};
if (p.Trait.Produce(p.Actor, unit, inits))
if (p.Trait.Produce(p.Actor, unit, type, inits))
{
FinishProduction();
return true;

View File

@@ -389,7 +389,7 @@ namespace OpenRA.Mods.Common.Traits
};
var sp = self.TraitsImplementing<Production>().FirstOrDefault(p => p.Info.Produces.Contains(Info.Type));
if (sp != null && !self.IsDisabled() && sp.Produce(self, unit, inits))
if (sp != null && !self.IsDisabled() && sp.Produce(self, unit, developerMode.AllTech ? null : Info.Type, inits))
{
FinishProduction();
return true;