Remove BuildingInfluence from LaysTerrain.

This commit is contained in:
Paul Chote
2020-10-07 17:47:41 +01:00
committed by Matthias Mailänder
parent 8d2156fb30
commit 1a3dfdc67f

View File

@@ -10,6 +10,7 @@
#endregion #endregion
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using OpenRA.Mods.Common.Traits; using OpenRA.Mods.Common.Traits;
using OpenRA.Traits; using OpenRA.Traits;
@@ -35,7 +36,6 @@ namespace OpenRA.Mods.D2k.Traits
public class LaysTerrain : ConditionalTrait<LaysTerrainInfo>, INotifyAddedToWorld public class LaysTerrain : ConditionalTrait<LaysTerrainInfo>, INotifyAddedToWorld
{ {
readonly BuildableTerrainLayer layer; readonly BuildableTerrainLayer layer;
readonly BuildingInfluence bi;
readonly TerrainTemplateInfo template; readonly TerrainTemplateInfo template;
readonly BuildingInfo buildingInfo; readonly BuildingInfo buildingInfo;
@@ -43,7 +43,6 @@ namespace OpenRA.Mods.D2k.Traits
: base(info) : base(info)
{ {
layer = self.World.WorldActor.Trait<BuildableTerrainLayer>(); layer = self.World.WorldActor.Trait<BuildableTerrainLayer>();
bi = self.World.WorldActor.Trait<BuildingInfluence>();
template = self.World.Map.Rules.TileSet.Templates[info.Template]; template = self.World.Map.Rules.TileSet.Templates[info.Template];
buildingInfo = self.Info.TraitInfo<BuildingInfo>(); buildingInfo = self.Info.TraitInfo<BuildingInfo>();
} }
@@ -64,8 +63,12 @@ namespace OpenRA.Mods.D2k.Traits
if (!map.Contains(c) || !Info.TerrainTypes.Contains(map.GetTerrainInfo(c).Type)) if (!map.Contains(c) || !Info.TerrainTypes.Contains(map.GetTerrainInfo(c).Type))
continue; continue;
// Don't place under other buildings or custom terrain // Don't override any existing custom terrain
if (bi.GetBuildingAt(c) != self || map.CustomTerrain[c] != byte.MaxValue) if (map.CustomTerrain[c] != byte.MaxValue)
continue;
// Don't place under other buildings
if (self.World.ActorMap.GetActorsAt(c).Any(a => a != self && a.TraitOrDefault<Building>() != null))
continue; continue;
var index = Game.CosmeticRandom.Next(template.TilesCount); var index = Game.CosmeticRandom.Next(template.TilesCount);
@@ -84,8 +87,12 @@ namespace OpenRA.Mods.D2k.Traits
if (!Info.TerrainTypes.Contains(map.GetTerrainInfo(c).Type)) if (!Info.TerrainTypes.Contains(map.GetTerrainInfo(c).Type))
continue; continue;
// Don't place under other buildings or custom terrain // Don't override any existing custom terrain
if (bi.GetBuildingAt(c) != self || map.CustomTerrain[c] != byte.MaxValue) if (map.CustomTerrain[c] != byte.MaxValue)
continue;
// Don't place under other buildings
if (self.World.ActorMap.GetActorsAt(c).Any(a => a != self && a.TraitOrDefault<Building>() != null))
continue; continue;
layer.AddTile(c, new TerrainTile(template.Id, (byte)i)); layer.AddTile(c, new TerrainTile(template.Id, (byte)i));