Fix some bogus cell accesses in Map.
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user