terrain palette auto detection
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user