automatically fix open areas

and don't hard-code the tiles no more
This commit is contained in:
Matthias Mailänder
2014-01-03 16:46:38 +01:00
parent 9cea5f96cd
commit c6d9574d52
11 changed files with 215 additions and 19 deletions

View File

@@ -402,6 +402,7 @@ namespace OpenRA.Editor
map.Players.Clear();
map.MakeDefaultPlayers();
map.FixOpenAreas();
NewMap(map);
}
@@ -484,18 +485,7 @@ namespace OpenRA.Editor
void FixOpenAreas(object sender, EventArgs e)
{
dirty = true;
var r = new Random();
for (var j = surface1.Map.Bounds.Top; j < surface1.Map.Bounds.Bottom; j++)
for (var i = surface1.Map.Bounds.Left; i < surface1.Map.Bounds.Right; i++)
{
var tr = surface1.Map.MapTiles.Value[i, j];
if (tr.Type == 0xff || tr.Type == 0xffff || tr.Type == 1 || tr.Type == 2)
tr.Index = (byte)r.Next(0, surface1.TileSetRenderer.Data(tr.Type).Count);
surface1.Map.MapTiles.Value[i, j] = tr;
}
surface1.Map.FixOpenAreas();
surface1.Chunks.Clear();
surface1.Invalidate();
}

View File

@@ -474,5 +474,24 @@ namespace OpenRA
Enemies = Players.Where(p => p.Value.Playable).Select(p => p.Key).ToArray()
});
}
public void FixOpenAreas()
{
var r = new Random();
var tileset = OpenRA.Rules.TileSets[Tileset];
for (var j = Bounds.Top; j < Bounds.Bottom; j++)
{
for (var i = Bounds.Left; i < Bounds.Right; i++)
{
var tr = MapTiles.Value[i, j];
var template = tileset.Templates[tr.Type];
if (!template.PickAny)
continue;
tr.Index = (byte)r.Next(0, template.Tiles.Count);
MapTiles.Value[i, j] = tr;
}
}
}
}
}

View File

@@ -342,6 +342,7 @@ namespace OpenRA.Utility
var map = LegacyMapImporter.Import(filename, e => Console.WriteLine(e));
map.RequiresMod = mod;
map.MakeDefaultPlayers();
map.FixOpenAreas();
var dest = map.Title + ".oramap";
map.Save(dest);
Console.WriteLine(dest + " saved.");

View File

@@ -60,6 +60,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@65535:
Id: 65535
Image: clear1
@@ -67,6 +82,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@0:
Id: 0
Image: clear1
@@ -74,6 +104,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@1:
Id: 1
Image: w1

View File

@@ -60,6 +60,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@65535:
Id: 65535
Image: clear1
@@ -67,6 +82,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@0:
Id: 0
Image: clear1
@@ -74,6 +104,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@1:
Id: 1
Image: w1

View File

@@ -60,6 +60,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@65535:
Id: 65535
Image: clear1
@@ -67,6 +82,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@0:
Id: 0
Image: clear1
@@ -74,6 +104,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@1:
Id: 1
Image: w1

View File

@@ -60,6 +60,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@65535:
Id: 65535
Image: clear1
@@ -67,6 +82,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@0:
Id: 0
Image: clear1
@@ -74,6 +104,21 @@ Templates:
PickAny: True
Tiles:
0: Clear
1: Clear
2: Clear
3: Clear
4: Clear
5: Clear
6: Clear
7: Clear
8: Clear
9: Clear
10: Clear
11: Clear
12: Clear
13: Clear
14: Clear
15: Clear
Template@1:
Id: 1
Image: w1

View File

@@ -64,7 +64,7 @@ Templates:
Image: BLOXBASE
Frames: 0
Size: 1,1
PickAny: False
PickAny: True # TODO: add more Frames and Tiles here
Tiles:
0: Sand
Template@1:

View File

@@ -75,6 +75,7 @@ Templates:
Image: clear1
Size: 1,1
Category: Terrain
PickAny: True
Tiles:
0: Clear
1: Clear
@@ -97,6 +98,7 @@ Templates:
Image: clear1
Size: 1,1
Category: Terrain
PickAny: True
Tiles:
0: Clear
1: Clear

View File

@@ -56,6 +56,7 @@ Templates:
Id: 255
Image: clear1
Size: 1,1
PickAny: True
Tiles:
0: Clear
1: Clear
@@ -76,6 +77,7 @@ Templates:
Template@65535:
Id: 65535
Image: clear1
PickAny: True
Size: 1,1
Tiles:
0: Clear

View File

@@ -58,6 +58,7 @@ Templates:
Image: clear1
Size: 1,1
Category: Terrain
PickAny: True
Tiles:
0: Clear
1: Clear
@@ -80,6 +81,7 @@ Templates:
Image: clear1
Size: 1,1
Category: Terrain
PickAny: True
Tiles:
0: Clear
1: Clear