From 2b3c65334dbed5ee8d2f5d39da8a3175a699bdcc Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 27 Jul 2015 18:22:14 +0100 Subject: [PATCH 1/4] Correct Contains check in ActorMap. --- OpenRA.Game/Traits/World/ActorMap.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OpenRA.Game/Traits/World/ActorMap.cs b/OpenRA.Game/Traits/World/ActorMap.cs index f6b8dc4a1d..ef489335d8 100644 --- a/OpenRA.Game/Traits/World/ActorMap.cs +++ b/OpenRA.Game/Traits/World/ActorMap.cs @@ -194,7 +194,7 @@ namespace OpenRA.Traits public IEnumerable GetUnitsAt(CPos a) { - if (!map.Contains(a)) + if (!influence.Contains(a)) yield break; for (var i = influence[a]; i != null; i = i.Next) @@ -204,7 +204,7 @@ namespace OpenRA.Traits public IEnumerable GetUnitsAt(CPos a, SubCell sub) { - if (!map.Contains(a)) + if (!influence.Contains(a)) yield break; for (var i = influence[a]; i != null; i = i.Next) @@ -249,7 +249,7 @@ namespace OpenRA.Traits // NOTE: always includes transients with influence public bool AnyUnitsAt(CPos a) { - if (!map.Contains(a)) + if (!influence.Contains(a)) return false; return influence[a] != null; @@ -258,7 +258,7 @@ namespace OpenRA.Traits // NOTE: can not check aircraft public bool AnyUnitsAt(CPos a, SubCell sub, bool checkTransient = true) { - if (!map.Contains(a)) + if (!influence.Contains(a)) return false; var always = sub == SubCell.FullCell || sub == SubCell.Any; @@ -281,7 +281,7 @@ namespace OpenRA.Traits // NOTE: can not check aircraft public bool AnyUnitsAt(CPos a, SubCell sub, Func withCondition) { - if (!map.Contains(a)) + if (!influence.Contains(a)) return false; var always = sub == SubCell.FullCell || sub == SubCell.Any; @@ -296,7 +296,7 @@ namespace OpenRA.Traits { foreach (var c in ios.OccupiedCells()) { - if (!map.Contains(c.First)) + if (!influence.Contains(c.First)) continue; influence[c.First] = new InfluenceNode { Next = influence[c.First], SubCell = c.Second, Actor = self }; @@ -312,7 +312,7 @@ namespace OpenRA.Traits { foreach (var c in ios.OccupiedCells()) { - if (!map.Contains(c.First)) + if (!influence.Contains(c.First)) continue; var temp = influence[c.First]; @@ -381,7 +381,7 @@ namespace OpenRA.Traits foreach (var c in cells) { - if (!map.Contains(c)) + if (!influence.Contains(c)) continue; if (!cellTriggerInfluence.ContainsKey(c)) From 0b5b612757fd5c4a0861b527b6aa6e7a9272f477 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 27 Jul 2015 18:22:21 +0100 Subject: [PATCH 2/4] Correct Contains check in BuildingInfluence. --- OpenRA.Mods.Common/Traits/Buildings/BuildingInfluence.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Buildings/BuildingInfluence.cs b/OpenRA.Mods.Common/Traits/Buildings/BuildingInfluence.cs index fe8894f491..e8da7eb8c7 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/BuildingInfluence.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/BuildingInfluence.cs @@ -36,7 +36,7 @@ namespace OpenRA.Mods.Common.Traits return; foreach (var u in FootprintUtils.Tiles(map.Rules, a.Info.Name, b.Info, a.Location)) - if (map.Contains(u) && influence[u] == null) + if (influence.Contains(u) && influence[u] == null) influence[u] = a; }; @@ -47,14 +47,14 @@ namespace OpenRA.Mods.Common.Traits return; foreach (var u in FootprintUtils.Tiles(map.Rules, a.Info.Name, b.Info, a.Location)) - if (map.Contains(u) && influence[u] == a) + if (influence.Contains(u) && influence[u] == a) influence[u] = null; }; } public Actor GetBuildingAt(CPos cell) { - if (!map.Contains(cell)) + if (!influence.Contains(cell)) return null; return influence[cell]; From 3a7300810c6ecfccf7500286638917b341d486a8 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 27 Jul 2015 18:22:34 +0100 Subject: [PATCH 3/4] Correct Contains check in BridgeLayer. --- OpenRA.Mods.Common/Traits/World/BridgeLayer.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/World/BridgeLayer.cs b/OpenRA.Mods.Common/Traits/World/BridgeLayer.cs index 85579f6c36..7794545cce 100644 --- a/OpenRA.Mods.Common/Traits/World/BridgeLayer.cs +++ b/OpenRA.Mods.Common/Traits/World/BridgeLayer.cs @@ -27,14 +27,12 @@ namespace OpenRA.Mods.Common.Traits class BridgeLayer : IWorldLoaded { readonly BridgeLayerInfo info; - readonly World world; Dictionary> bridgeTypes = new Dictionary>(); CellLayer bridges; public BridgeLayer(Actor self, BridgeLayerInfo info) { this.info = info; - this.world = self.World; } public void WorldLoaded(World w, WorldRenderer wr) @@ -81,6 +79,7 @@ namespace OpenRA.Mods.Common.Traits }).Trait(); var subTiles = new Dictionary(); + var mapTiles = w.Map.MapTiles.Value; // For each subtile in the template for (byte ind = 0; ind < template.Size.X * template.Size.Y; ind++) @@ -89,8 +88,7 @@ namespace OpenRA.Mods.Common.Traits var subtile = new CPos(ni + ind % template.Size.X, nj + ind / template.Size.X); // This isn't the bridge you're looking for - if (!w.Map.Contains(subtile) || w.Map.MapTiles.Value[subtile].Type != tile || - w.Map.MapTiles.Value[subtile].Index != ind) + if (!mapTiles.Contains(subtile) || mapTiles[subtile].Type != tile || mapTiles[subtile].Index != ind) continue; subTiles.Add(subtile, ind); @@ -103,7 +101,7 @@ namespace OpenRA.Mods.Common.Traits // Used to check for neighbouring bridges public Bridge GetBridge(CPos cell) { - if (!world.Map.Contains(cell)) + if (!bridges.Contains(cell)) return null; return bridges[cell]; From a8c6a1aa976086f219e6844c764b75e9dd8e8e03 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 27 Jul 2015 18:22:48 +0100 Subject: [PATCH 4/4] Correct Contains check in DomainIndex. --- OpenRA.Mods.Common/Traits/World/DomainIndex.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenRA.Mods.Common/Traits/World/DomainIndex.cs b/OpenRA.Mods.Common/Traits/World/DomainIndex.cs index d716461489..cc5bd6ca19 100644 --- a/OpenRA.Mods.Common/Traits/World/DomainIndex.cs +++ b/OpenRA.Mods.Common/Traits/World/DomainIndex.cs @@ -72,7 +72,7 @@ namespace OpenRA.Mods.Common.Traits public bool IsPassable(CPos p1, CPos p2) { - if (!map.Contains(p1) || !map.Contains(p2)) + if (!domains.Contains(p1) || !domains.Contains(p2)) return false; if (domains[p1] == domains[p2])