Fix incorrect uses of Map.Bounds.
This commit is contained in:
@@ -50,15 +50,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Loop through the map looking for templates to overlay
|
// Loop through the map looking for templates to overlay
|
||||||
for (var i = w.Map.Bounds.Left; i < w.Map.Bounds.Right; i++)
|
foreach (var cell in w.Map.AllCells)
|
||||||
{
|
|
||||||
for (var j = w.Map.Bounds.Top; j < w.Map.Bounds.Bottom; j++)
|
|
||||||
{
|
|
||||||
var cell = new CPos(i, j);
|
|
||||||
if (bridgeTypes.ContainsKey(w.Map.MapTiles.Value[cell].Type))
|
if (bridgeTypes.ContainsKey(w.Map.MapTiles.Value[cell].Type))
|
||||||
ConvertBridgeToActor(w, cell);
|
ConvertBridgeToActor(w, cell);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Link adjacent (long)-bridges so that artwork is updated correctly
|
// Link adjacent (long)-bridges so that artwork is updated correctly
|
||||||
foreach (var b in w.Actors.SelectMany(a => a.TraitsImplementing<Bridge>()))
|
foreach (var b in w.Actors.SelectMany(a => a.TraitsImplementing<Bridge>()))
|
||||||
|
|||||||
@@ -159,6 +159,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
bool CanTraverseTile(World world, CPos p)
|
bool CanTraverseTile(World world, CPos p)
|
||||||
{
|
{
|
||||||
|
if (!map.Contains(p))
|
||||||
|
return false;
|
||||||
|
|
||||||
var terrainOffset = world.Map.GetTerrainIndex(p);
|
var terrainOffset = world.Map.GetTerrainIndex(p);
|
||||||
return (movementClass & (1 << terrainOffset)) > 0;
|
return (movementClass & (1 << terrainOffset)) > 0;
|
||||||
}
|
}
|
||||||
@@ -172,7 +175,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
var visited = new CellLayer<bool>(map);
|
var visited = new CellLayer<bool>(map);
|
||||||
|
|
||||||
var toProcess = new Queue<CPos>();
|
var toProcess = new Queue<CPos>();
|
||||||
toProcess.Enqueue(new CPos(map.Bounds.Left, map.Bounds.Top));
|
toProcess.Enqueue(MPos.Zero.ToCPos(map));
|
||||||
|
|
||||||
// Flood-fill over each domain
|
// Flood-fill over each domain
|
||||||
while (toProcess.Count != 0)
|
while (toProcess.Count != 0)
|
||||||
@@ -209,7 +212,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
// Don't crawl off the map, or add already-visited cells
|
// Don't crawl off the map, or add already-visited cells
|
||||||
var neighbors = CVec.Directions.Select(d => n + d)
|
var neighbors = CVec.Directions.Select(d => n + d)
|
||||||
.Where(p => map.Contains(p) && !visited[p]);
|
.Where(p => visited.Contains(p) && !visited[p]);
|
||||||
|
|
||||||
foreach (var neighbor in neighbors)
|
foreach (var neighbor in neighbors)
|
||||||
domainQueue.Enqueue(neighbor);
|
domainQueue.Enqueue(neighbor);
|
||||||
|
|||||||
Reference in New Issue
Block a user