Made MapBuildRadius optional for traits who do not require it.

This commit is contained in:
Andre Mohren
2018-07-22 12:13:52 +02:00
committed by Paul Chote
parent 2270460c9a
commit b86355cda6
2 changed files with 9 additions and 9 deletions

View File

@@ -45,9 +45,9 @@ namespace OpenRA.Mods.Common.Traits
this.self = self; this.self = self;
devMode = self.Owner.PlayerActor.Trait<DeveloperMode>(); devMode = self.Owner.PlayerActor.Trait<DeveloperMode>();
progress = total = info.InitialDelay; progress = total = info.InitialDelay;
var mapBuildRadius = self.World.WorldActor.Trait<MapBuildRadius>(); var mapBuildRadius = self.World.WorldActor.TraitOrDefault<MapBuildRadius>();
allyBuildEnabled = mapBuildRadius.AllyBuildRadiusEnabled; allyBuildEnabled = mapBuildRadius != null && mapBuildRadius.AllyBuildRadiusEnabled;
buildRadiusEnabled = mapBuildRadius.BuildRadiusEnabled; buildRadiusEnabled = mapBuildRadius != null && mapBuildRadius.BuildRadiusEnabled;
} }
void INotifyCreated.Created(Actor self) void INotifyCreated.Created(Actor self)

View File

@@ -146,10 +146,10 @@ namespace OpenRA.Mods.Common.Traits
public BaseProvider FindBaseProvider(World world, Player p, CPos topLeft) public BaseProvider FindBaseProvider(World world, Player p, CPos topLeft)
{ {
var center = world.Map.CenterOfCell(topLeft) + CenterOffset(world); var center = world.Map.CenterOfCell(topLeft) + CenterOffset(world);
var mapBuildRadius = world.WorldActor.Trait<MapBuildRadius>(); var mapBuildRadius = world.WorldActor.TraitOrDefault<MapBuildRadius>();
var allyBuildEnabled = mapBuildRadius.AllyBuildRadiusEnabled; var allyBuildEnabled = mapBuildRadius != null && mapBuildRadius.AllyBuildRadiusEnabled;
if (!mapBuildRadius.BuildRadiusEnabled) if (mapBuildRadius == null || !mapBuildRadius.BuildRadiusEnabled)
return null; return null;
foreach (var bp in world.ActorsWithTrait<BaseProvider>()) foreach (var bp in world.ActorsWithTrait<BaseProvider>())
@@ -176,12 +176,12 @@ namespace OpenRA.Mods.Common.Traits
public virtual bool IsCloseEnoughToBase(World world, Player p, ActorInfo ai, CPos topLeft) public virtual bool IsCloseEnoughToBase(World world, Player p, ActorInfo ai, CPos topLeft)
{ {
var requiresBuildableArea = ai.TraitInfoOrDefault<RequiresBuildableAreaInfo>(); var requiresBuildableArea = ai.TraitInfoOrDefault<RequiresBuildableAreaInfo>();
var mapBuildRadius = world.WorldActor.Trait<MapBuildRadius>(); var mapBuildRadius = world.WorldActor.TraitOrDefault<MapBuildRadius>();
if (requiresBuildableArea == null || p.PlayerActor.Trait<DeveloperMode>().BuildAnywhere) if (requiresBuildableArea == null || p.PlayerActor.Trait<DeveloperMode>().BuildAnywhere)
return true; return true;
if (mapBuildRadius.BuildRadiusEnabled && RequiresBaseProvider && FindBaseProvider(world, p, topLeft) == null) if (mapBuildRadius != null && mapBuildRadius.BuildRadiusEnabled && RequiresBaseProvider && FindBaseProvider(world, p, topLeft) == null)
return false; return false;
var adjacent = requiresBuildableArea.Adjacent; var adjacent = requiresBuildableArea.Adjacent;
@@ -192,7 +192,7 @@ namespace OpenRA.Mods.Common.Traits
var nearnessCandidates = new List<CPos>(); var nearnessCandidates = new List<CPos>();
var bi = world.WorldActor.Trait<BuildingInfluence>(); var bi = world.WorldActor.Trait<BuildingInfluence>();
var allyBuildEnabled = mapBuildRadius.AllyBuildRadiusEnabled; var allyBuildEnabled = mapBuildRadius != null && mapBuildRadius.AllyBuildRadiusEnabled;
for (var y = scanStart.Y; y < scanEnd.Y; y++) for (var y = scanStart.Y; y < scanEnd.Y; y++)
{ {