Allow multiple terrain (tile) categories

This commit is contained in:
rob-v
2017-05-23 16:41:03 +02:00
committed by reaperrr
parent 3abd65052c
commit 4b9c6c4746
3 changed files with 16 additions and 5 deletions

View File

@@ -84,7 +84,7 @@ namespace OpenRA
public readonly int[] Frames;
public readonly int2 Size;
public readonly bool PickAny;
public readonly string Category;
public readonly string[] Categories;
public readonly string Palette;
readonly TerrainTileInfo[] tileInfo;

View File

@@ -867,7 +867,17 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
foreach (var node in nodes)
{
// Add rules here
// Renamed Category to Categories in Template.
if (engineVersion < 20170623)
{
if (node.Key == "Template" || node.Key.StartsWith("Template@", StringComparison.Ordinal))
{
var category = node.Value.Nodes.FirstOrDefault(n => n.Key == "Category");
if (category != null)
category.Key = "Categories";
}
}
UpgradeTileset(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
}
}

View File

@@ -56,9 +56,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
panel.RemoveChildren();
var tileIds = tileset.Templates
.Where(t => t.Value.Category == category)
.Select(t => t.Value.Id);
var categoryTiles = tileset.Templates.Where(t => t.Value.Categories.Contains(category)).Select(t => t.Value).ToList();
var tileIds = categoryTiles.Where(t => t.Categories[0] == category)
.Concat(categoryTiles.Where(t => t.Categories[0] != category))
.Select(t => t.Id);
foreach (var t in tileIds)
{