Fix some bogus cell accesses in Map.

This commit is contained in:
Paul Chote
2014-10-05 21:22:41 +13:00
parent 9312d1915f
commit 41c296e5c2
2 changed files with 11 additions and 11 deletions

View File

@@ -271,8 +271,9 @@ namespace OpenRA.Editor
for (var i = 0; i < ChunkSize; i++) for (var i = 0; i < ChunkSize; i++)
for (var j = 0; j < ChunkSize; j++) for (var j = 0; j < ChunkSize; j++)
{ {
var cell = new CPos(u * ChunkSize + i, v * ChunkSize + j); var ui = u * ChunkSize + i;
var tr = Map.MapTiles.Value[cell]; var vj = v * ChunkSize + j;
var tr = Map.MapTiles.Value[ui, vj];
var tile = TileSetRenderer.Data(tr.Type); var tile = TileSetRenderer.Data(tr.Type);
var index = (tr.Index < tile.Length) ? tr.Index : (byte)0; var index = (tr.Index < tile.Length) ? tr.Index : (byte)0;
var rawImage = tile[index]; var rawImage = tile[index];
@@ -280,9 +281,9 @@ namespace OpenRA.Editor
for (var y = 0; y < TileSetRenderer.TileSize; y++) for (var y = 0; y < TileSetRenderer.TileSize; y++)
p[(j * TileSetRenderer.TileSize + y) * stride + i * TileSetRenderer.TileSize + x] = Palette.GetColor(rawImage[x + TileSetRenderer.TileSize * y]).ToArgb(); p[(j * TileSetRenderer.TileSize + y) * stride + i * TileSetRenderer.TileSize + x] = Palette.GetColor(rawImage[x + TileSetRenderer.TileSize * y]).ToArgb();
if (Map.MapResources.Value[cell].Type != 0) if (Map.MapResources.Value[ui, vj].Type != 0)
{ {
var resourceImage = ResourceTemplates[Map.MapResources.Value[cell].Type].Bitmap; var resourceImage = ResourceTemplates[Map.MapResources.Value[ui, vj].Type].Bitmap;
var srcdata = resourceImage.LockBits(resourceImage.Bounds(), var srcdata = resourceImage.LockBits(resourceImage.Bounds(),
ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

View File

@@ -457,7 +457,7 @@ namespace OpenRA
for (var i = 0; i < MapSize.X; i++) for (var i = 0; i < MapSize.X; i++)
for (var j = 0; j < MapSize.Y; j++) for (var j = 0; j < MapSize.Y; j++)
{ {
var tile = MapTiles.Value[new CPos(i, j)]; var tile = MapTiles.Value[i, j];
writer.Write(tile.Type); writer.Write(tile.Type);
writer.Write(tile.Index); writer.Write(tile.Index);
} }
@@ -467,7 +467,7 @@ namespace OpenRA
{ {
for (var j = 0; j < MapSize.Y; j++) for (var j = 0; j < MapSize.Y; j++)
{ {
var tile = MapResources.Value[new CPos(i, j)]; var tile = MapResources.Value[i, j];
writer.Write(tile.Type); writer.Write(tile.Type);
writer.Write(tile.Index); writer.Write(tile.Index);
} }
@@ -654,9 +654,8 @@ namespace OpenRA
{ {
for (var i = Bounds.Left; i < Bounds.Right; i++) for (var i = Bounds.Left; i < Bounds.Right; i++)
{ {
var cell = new CPos(i, j); var type = MapTiles.Value[i, j].Type;
var type = MapTiles.Value[cell].Type; var index = MapTiles.Value[i, j].Index;
var index = MapTiles.Value[cell].Index;
if (!tileset.Templates.ContainsKey(type)) if (!tileset.Templates.ContainsKey(type))
{ {
Console.WriteLine("Unknown Tile ID {0}".F(type)); Console.WriteLine("Unknown Tile ID {0}".F(type));
@@ -668,7 +667,7 @@ namespace OpenRA
continue; continue;
index = (byte)r.Next(0, template.TilesCount); index = (byte)r.Next(0, template.TilesCount);
MapTiles.Value[cell] = new TerrainTile(type, index); MapTiles.Value[i, j] = new TerrainTile(type, index);
} }
} }
} }
@@ -730,7 +729,7 @@ namespace OpenRA
for (var j = -max; j <= max; j++) for (var j = -max; j <= max; j++)
for (var i = -max; i <= max; i++) for (var i = -max; i <= max; i++)
if (max * max >= i * i + j * j) if (max * max >= i * i + j * j)
ts [Exts.ISqrt(i * i + j * j, Exts.ISqrtRoundMode.Ceiling)].Add(new CVec(i, j)); ts[Exts.ISqrt(i * i + j * j, Exts.ISqrtRoundMode.Ceiling)].Add(new CVec(i, j));
// Sort each integer-distance group by the actual distance // Sort each integer-distance group by the actual distance
foreach (var list in ts) foreach (var list in ts)