resize support working
This commit is contained in:
@@ -140,7 +140,16 @@ namespace OpenRA.Editor
|
|||||||
if (DialogResult.OK != rd.ShowDialog())
|
if (DialogResult.OK != rd.ShowDialog())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
surface1.Bind(surface1.Map, surface1.TileSet, surface1.Palette); // rebind it to invalidate all caches
|
surface1.Map.TopLeft = new int2((int)rd.cordonLeft.Value, (int)rd.cordonTop.Value);
|
||||||
|
surface1.Map.BottomRight = new int2((int)rd.cordonRight.Value, (int)rd.cordonBottom.Value);
|
||||||
|
|
||||||
|
if ((int)rd.width.Value != surface1.Map.MapSize.X || (int)rd.height.Value != surface1.Map.MapSize.Y)
|
||||||
|
{
|
||||||
|
surface1.Map.Resize((int)rd.width.Value, (int)rd.height.Value);
|
||||||
|
surface1.Bind(surface1.Map, surface1.TileSet, surface1.Palette); // rebind it to invalidate all caches
|
||||||
|
}
|
||||||
|
|
||||||
|
surface1.Invalidate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
1
OpenRA.Editor/ResizeDialog.Designer.cs
generated
1
OpenRA.Editor/ResizeDialog.Designer.cs
generated
@@ -196,6 +196,7 @@
|
|||||||
this.Controls.Add(this.width);
|
this.Controls.Add(this.width);
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||||
this.Name = "ResizeDialog";
|
this.Name = "ResizeDialog";
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
this.Text = "Resize Map";
|
this.Text = "Resize Map";
|
||||||
((System.ComponentModel.ISupportInitialize)(this.width)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.width)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.cordonLeft)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.cordonLeft)).EndInit();
|
||||||
|
|||||||
@@ -136,8 +136,8 @@ namespace OpenRA.Editor
|
|||||||
if (Map == null) return;
|
if (Map == null) return;
|
||||||
if (TileSet == null) return;
|
if (TileSet == null) return;
|
||||||
|
|
||||||
for( var u = 0; u <= Map.BottomRight.X; u += ChunkSize )
|
for( var u = 0; u < Map.MapSize.X; u += ChunkSize )
|
||||||
for (var v = 0; v <= Map.BottomRight.Y; v += ChunkSize)
|
for (var v = 0; v < Map.MapSize.Y; v += ChunkSize)
|
||||||
{
|
{
|
||||||
var x = new int2(u/ChunkSize,v/ChunkSize);
|
var x = new int2(u/ChunkSize,v/ChunkSize);
|
||||||
if (!Chunks.ContainsKey(x)) Chunks[x] = RenderChunk(u / ChunkSize, v / ChunkSize);
|
if (!Chunks.ContainsKey(x)) Chunks[x] = RenderChunk(u / ChunkSize, v / ChunkSize);
|
||||||
|
|||||||
@@ -261,5 +261,22 @@ namespace OpenRA.FileFormats
|
|||||||
foreach (var s in Smudges)
|
foreach (var s in Smudges)
|
||||||
Console.WriteLine("\t{0} {1} {2}", s.Type, s.Location, s.Depth);
|
Console.WriteLine("\t{0} {1} {2}", s.Type, s.Location, s.Depth);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static T[,] ResizeArray<T>(T[,] ts, T t, int width, int height)
|
||||||
|
{
|
||||||
|
var result = new T[width, height];
|
||||||
|
for (var i = 0; i < width; i++)
|
||||||
|
for (var j = 0; j < height; j++)
|
||||||
|
result[i, j] = i <= ts.GetUpperBound(0) && j <= ts.GetUpperBound(1)
|
||||||
|
? ts[i, j] : t;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Resize(int width, int height) // editor magic.
|
||||||
|
{
|
||||||
|
MapTiles = ResizeArray(MapTiles, MapTiles[0, 0], width, height);
|
||||||
|
MapResources = ResizeArray(MapResources, MapResources[0, 0], width, height);
|
||||||
|
MapSize = new int2(width, height);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user