terrain palette auto detection

This commit is contained in:
Matthias Mailänder
2016-02-06 18:15:30 +01:00
parent ee482fee29
commit 26c0f1ebc0
2 changed files with 27 additions and 4 deletions

View File

@@ -16,7 +16,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits namespace OpenRA.Mods.Common.Traits
{ {
[Desc("Loads the palette specified in the tileset definition")] [Desc("Loads the palette specified in the tileset definition")]
class PaletteFromCurrentTilesetInfo : ITraitInfo public class PaletteFromCurrentTilesetInfo : ITraitInfo
{ {
[FieldLoader.Require, PaletteDefinition] [FieldLoader.Require, PaletteDefinition]
[Desc("internal palette name")] [Desc("internal palette name")]
@@ -30,7 +30,7 @@ namespace OpenRA.Mods.Common.Traits
public object Create(ActorInitializer init) { return new PaletteFromCurrentTileset(init.World, this); } public object Create(ActorInitializer init) { return new PaletteFromCurrentTileset(init.World, this); }
} }
class PaletteFromCurrentTileset : ILoadsPalettes, IProvidesAssetBrowserPalettes public class PaletteFromCurrentTileset : ILoadsPalettes, IProvidesAssetBrowserPalettes
{ {
readonly World world; readonly World world;
readonly PaletteFromCurrentTilesetInfo info; readonly PaletteFromCurrentTilesetInfo info;

View File

@@ -47,10 +47,10 @@ namespace OpenRA.Mods.TS.UtilityCommands
var terrainObjects = rulesIni.GetSection("TerrainTypes").Select(b => b.Value).Distinct(); var terrainObjects = rulesIni.GetSection("TerrainTypes").Select(b => b.Value).Distinct();
Console.WriteLine("# Terrain Objects"); Console.WriteLine("# Terrain Objects");
Console.WriteLine(); Console.WriteLine();
ImportStructures(terrainObjects); ImportStructures(terrainObjects, true);
} }
void ImportStructures(IEnumerable<string> structures) void ImportStructures(IEnumerable<string> structures, bool useTerrainPalette = false)
{ {
foreach (var building in structures) foreach (var building in structures)
{ {
@@ -143,9 +143,32 @@ namespace OpenRA.Mods.TS.UtilityCommands
var buildup = artSection.GetValue("Buildup", string.Empty); var buildup = artSection.GetValue("Buildup", string.Empty);
if (!string.IsNullOrEmpty(buildup) && buildup != "none") if (!string.IsNullOrEmpty(buildup) && buildup != "none")
Console.WriteLine("\tWithMakeAnimation:"); Console.WriteLine("\tWithMakeAnimation:");
var terrainPalette = artSection.GetValue("TerrainPalette", string.Empty);
if (!string.IsNullOrEmpty(terrainPalette))
bool.TryParse(terrainPalette, out useTerrainPalette);
var remapable = artSection.GetValue("Remapable", string.Empty);
if (!string.IsNullOrEmpty(remapable) && remapable == "yes")
useTerrainPalette = false;
} }
var isAnimated = rulesSection.GetValue("IsAnimated", string.Empty);
if (!string.IsNullOrEmpty(isAnimated) && isAnimated == "yes")
useTerrainPalette = false;
Console.WriteLine("\tRenderSprites:"); Console.WriteLine("\tRenderSprites:");
if (useTerrainPalette)
{
if (Game.ModData.DefaultRules.Actors.ContainsKey("world"))
{
var terrainPaletteDefintion = Game.ModData.DefaultRules.Actors["world"].TraitInfos<PaletteFromCurrentTilesetInfo>();
if (terrainPaletteDefintion.Any())
Console.WriteLine("\t\tPalette: " + terrainPaletteDefintion.Last().Name);
}
}
Console.WriteLine("\tWithSpriteBody:"); Console.WriteLine("\tWithSpriteBody:");
Console.WriteLine("\tAutoSelectionSize:"); Console.WriteLine("\tAutoSelectionSize:");
Console.WriteLine("\tBodyOrientation:\n\t\tUseClassicPerspectiveFudge: False\n\t\tQuantizedFacings: 1"); Console.WriteLine("\tBodyOrientation:\n\t\tUseClassicPerspectiveFudge: False\n\t\tQuantizedFacings: 1");