From 6b1cecc6b4c4bcbaaadb657290aa210e7f29ca0d Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 23 Jul 2014 11:40:30 +1200 Subject: [PATCH] Add a workaround for the legacy map editor. --- OpenRA.Editor/Form1.cs | 6 +++--- OpenRA.Editor/RenderUtils.cs | 3 +-- OpenRA.Game/Traits/TraitsInterfaces.cs | 6 ++++++ OpenRA.Mods.RA/Render/RenderSimple.cs | 5 ++++- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/OpenRA.Editor/Form1.cs b/OpenRA.Editor/Form1.cs index 79a948774a..6364e5dd2b 100644 --- a/OpenRA.Editor/Form1.cs +++ b/OpenRA.Editor/Form1.cs @@ -219,7 +219,7 @@ namespace OpenRA.Editor try { var info = Program.Rules.Actors[a]; - if (!info.Traits.Contains()) continue; + if (!info.Traits.Contains()) continue; var etf = info.Traits.GetOrDefault(); if (etf != null && etf.ExcludeTilesets != null @@ -228,10 +228,10 @@ namespace OpenRA.Editor && !etf.RequireTilesets.Contains(tileset.Id)) continue; var templatePalette = shadowedPalette; - var rsi = info.Traits.GetOrDefault(); + var rsi = info.Traits.GetOrDefault(); // exception for desert buildings - if (rsi != null && rsi.Palette != null && rsi.Palette.Contains("terrain")) + if (rsi != null && rsi.EditorPalette != null && rsi.EditorPalette.Contains("terrain")) templatePalette = palette; var template = RenderUtils.RenderActor(info, tileset, templatePalette); diff --git a/OpenRA.Editor/RenderUtils.cs b/OpenRA.Editor/RenderUtils.cs index a7095ceaec..a3497a882f 100644 --- a/OpenRA.Editor/RenderUtils.cs +++ b/OpenRA.Editor/RenderUtils.cs @@ -47,8 +47,7 @@ namespace OpenRA.Editor public static ActorTemplate RenderActor(ActorInfo info, TileSet tileset, IPalette p) { - var image = RenderSprites.GetImage(info); - + var image = info.Traits.Get().EditorImage(info); using (var s = GlobalFileSystem.OpenWithExts(image, tileset.Extensions)) { var shp = new ShpReader(s); diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index ae952393bb..b079dd26ea 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -265,4 +265,10 @@ namespace OpenRA.Traits return a.TraitsImplementing().Any(d => d.Disabled); } } + + public interface ILegacyEditorRenderInfo + { + string EditorPalette { get; } + string EditorImage(ActorInfo actor); + } } diff --git a/OpenRA.Mods.RA/Render/RenderSimple.cs b/OpenRA.Mods.RA/Render/RenderSimple.cs index c32009fb37..14a640692e 100644 --- a/OpenRA.Mods.RA/Render/RenderSimple.cs +++ b/OpenRA.Mods.RA/Render/RenderSimple.cs @@ -15,7 +15,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA.Render { - public class RenderSimpleInfo : RenderSpritesInfo, Requires + public class RenderSimpleInfo : RenderSpritesInfo, ILegacyEditorRenderInfo, Requires { public override object Create(ActorInitializer init) { return new RenderSimple(init.self); } @@ -26,6 +26,9 @@ namespace OpenRA.Mods.RA.Render return anim.Render(WPos.Zero, WVec.Zero, 0, pr, Scale); } + + public string EditorPalette { get { return Palette; } } + public string EditorImage(ActorInfo actor) { return RenderSimple.GetImage(actor); } } public class RenderSimple : RenderSprites, IAutoSelectionSize