Let the map importer account for duplicate tiles

This commit is contained in:
abcdefg30
2016-10-15 18:14:24 +02:00
parent a6078b6e46
commit 80f4feeab3

View File

@@ -380,6 +380,85 @@ namespace OpenRA.Mods.D2k.UtilityCommands
TerrainTile GetTile(int tileIndex)
{
// Some tiles are duplicates of other tiles, just on a different tileset
if (tilesetName.ToLower() == "bloxbgbs.r8")
{
if (tileIndex == 355)
return new TerrainTile(441, 0);
if (tileIndex == 375)
return new TerrainTile(442, 0);
}
if (tilesetName.ToLower() == "bloxtree.r8")
{
var indices = new[] { 683, 684, 685, 706, 703, 704, 705, 726, 723, 724, 725, 746, 743, 744, 745, 747 };
for (var i = 0; i < 16; i++)
if (tileIndex == indices[i])
return new TerrainTile(474, (byte)i);
indices = new[] { 369, 370, 389, 390 };
for (var i = 0; i < 4; i++)
if (tileIndex == indices[i])
return new TerrainTile(117, (byte)i);
indices = new[] { 661, 662, 681, 682 };
for (var i = 0; i < 4; i++)
if (tileIndex == indices[i])
return new TerrainTile(251, (byte)i);
}
if (tilesetName.ToLower() == "bloxwast.r8")
{
if (tileIndex == 342)
return new TerrainTile(250, 0);
if (tileIndex == 383)
return new TerrainTile(121, 1);
if (tileIndex == 384)
return new TerrainTile(1046, 0);
if (tileIndex == 579)
return new TerrainTile(80, 0);
if (tileIndex == 597)
return new TerrainTile(80, 0);
if (tileIndex == 598)
return new TerrainTile(470, 0);
if (tileIndex == 599)
return new TerrainTile(470, 1);
if (tileIndex == 608)
return new TerrainTile(58, 0);
if (tileIndex == 627)
return new TerrainTile(248, 0);
if (tileIndex == 628)
return new TerrainTile(248, 1);
if (tileIndex == 719)
return new TerrainTile(275, 0);
var indices = new[] { 340, 341, 360, 361 };
for (var i = 0; i < 4; i++)
if (tileIndex == indices[i])
return new TerrainTile(308, (byte)i);
indices = new[] { 660, 661, 662, 680, 681, 682 };
for (var i = 0; i < 6; i++)
if (tileIndex == indices[i])
return new TerrainTile(443, (byte)i);
indices = new[] { 609, 610, 629, 630 };
for (var i = 0; i < 4; i++)
if (tileIndex == indices[i])
return new TerrainTile(251, (byte)i);
}
// Get the first tileset template that contains the Frame ID of the original map's tile with the requested index
var template = tileSetsFromYaml.FirstOrDefault(x => x.Frames.Contains(tileIndex));