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.Players.Clear();
map.MakeDefaultPlayers(); map.MakeDefaultPlayers();
map.FixOpenAreas();
NewMap(map); NewMap(map);
} }
@@ -484,18 +485,7 @@ namespace OpenRA.Editor
void FixOpenAreas(object sender, EventArgs e) void FixOpenAreas(object sender, EventArgs e)
{ {
dirty = true; dirty = true;
var r = new Random(); surface1.Map.FixOpenAreas();
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.Chunks.Clear(); surface1.Chunks.Clear();
surface1.Invalidate(); surface1.Invalidate();
} }

View File

@@ -474,5 +474,24 @@ namespace OpenRA
Enemies = Players.Where(p => p.Value.Playable).Select(p => p.Key).ToArray() 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)); var map = LegacyMapImporter.Import(filename, e => Console.WriteLine(e));
map.RequiresMod = mod; map.RequiresMod = mod;
map.MakeDefaultPlayers(); map.MakeDefaultPlayers();
map.FixOpenAreas();
var dest = map.Title + ".oramap"; var dest = map.Title + ".oramap";
map.Save(dest); map.Save(dest);
Console.WriteLine(dest + " saved."); Console.WriteLine(dest + " saved.");

View File

@@ -60,6 +60,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@65535:
Id: 65535 Id: 65535
Image: clear1 Image: clear1
@@ -67,6 +82,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@0:
Id: 0 Id: 0
Image: clear1 Image: clear1
@@ -74,6 +104,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@1:
Id: 1 Id: 1
Image: w1 Image: w1

View File

@@ -60,6 +60,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@65535:
Id: 65535 Id: 65535
Image: clear1 Image: clear1
@@ -67,6 +82,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@0:
Id: 0 Id: 0
Image: clear1 Image: clear1
@@ -74,6 +104,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@1:
Id: 1 Id: 1
Image: w1 Image: w1

View File

@@ -60,6 +60,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@65535:
Id: 65535 Id: 65535
Image: clear1 Image: clear1
@@ -67,6 +82,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@0:
Id: 0 Id: 0
Image: clear1 Image: clear1
@@ -74,6 +104,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@1:
Id: 1 Id: 1
Image: w1 Image: w1

View File

@@ -60,6 +60,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@65535:
Id: 65535 Id: 65535
Image: clear1 Image: clear1
@@ -67,6 +82,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@0:
Id: 0 Id: 0
Image: clear1 Image: clear1
@@ -74,6 +104,21 @@ Templates:
PickAny: True PickAny: True
Tiles: Tiles:
0: Clear 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: Template@1:
Id: 1 Id: 1
Image: w1 Image: w1

View File

@@ -64,7 +64,7 @@ Templates:
Image: BLOXBASE Image: BLOXBASE
Frames: 0 Frames: 0
Size: 1,1 Size: 1,1
PickAny: False PickAny: True # TODO: add more Frames and Tiles here
Tiles: Tiles:
0: Sand 0: Sand
Template@1: Template@1:
@@ -108,7 +108,7 @@ Templates:
Image: BLOXBASE Image: BLOXBASE
Frames: 16,17,36,37 Frames: 16,17,36,37
Size: 2,2 Size: 2,2
Category: Dune Category: Dune
PickAny: False PickAny: False
Tiles: Tiles:
0: Sand 0: Sand
@@ -120,7 +120,7 @@ Templates:
Image: BLOXBASE Image: BLOXBASE
Frames: 18,19,38,39 Frames: 18,19,38,39
Size: 2,2 Size: 2,2
Category: Dune Category: Dune
PickAny: False PickAny: False
Tiles: Tiles:
0: Dune 0: Dune
@@ -132,7 +132,7 @@ Templates:
Image: BLOXBASE Image: BLOXBASE
Frames: 58,59,78,79 Frames: 58,59,78,79
Size: 2,2 Size: 2,2
Category: Dune Category: Dune
PickAny: False PickAny: False
Tiles: Tiles:
1: Dune 1: Dune

View File

@@ -75,6 +75,7 @@ Templates:
Image: clear1 Image: clear1
Size: 1,1 Size: 1,1
Category: Terrain Category: Terrain
PickAny: True
Tiles: Tiles:
0: Clear 0: Clear
1: Clear 1: Clear
@@ -97,6 +98,7 @@ Templates:
Image: clear1 Image: clear1
Size: 1,1 Size: 1,1
Category: Terrain Category: Terrain
PickAny: True
Tiles: Tiles:
0: Clear 0: Clear
1: Clear 1: Clear
@@ -115,14 +117,14 @@ Templates:
14: Clear 14: Clear
15: Clear 15: Clear
Template@256: Template@256:
Id: 256 Id: 256
Image: w1 Image: w1
Size: 1,1 Size: 1,1
Category: Terrain Category: Terrain
Tiles: Tiles:
0: Water 0: Water
Template@257: Template@257:
Id: 257 Id: 257
Image: sh17 Image: sh17
Size: 2,2 Size: 2,2
Category: Terrain Category: Terrain
@@ -132,7 +134,7 @@ Templates:
2: Water 2: Water
3: Water 3: Water
Template@258: Template@258:
Id: 258 Id: 258
Image: sh18 Image: sh18
Size: 2,2 Size: 2,2
Category: Terrain Category: Terrain

View File

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

View File

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