Made MapBuildRadius optional for traits who do not require it.
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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++)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user