Add a workaround for the legacy map editor.

This commit is contained in:
Paul Chote
2014-07-23 11:40:30 +12:00
parent 029da5116b
commit 6b1cecc6b4
4 changed files with 14 additions and 6 deletions

View File

@@ -219,7 +219,7 @@ namespace OpenRA.Editor
try
{
var info = Program.Rules.Actors[a];
if (!info.Traits.Contains<RenderSimpleInfo>()) continue;
if (!info.Traits.Contains<ILegacyEditorRenderInfo>()) continue;
var etf = info.Traits.GetOrDefault<EditorTilesetFilterInfo>();
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<RenderSimpleInfo>();
var rsi = info.Traits.GetOrDefault<ILegacyEditorRenderInfo>();
// 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);

View File

@@ -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<ILegacyEditorRenderInfo>().EditorImage(info);
using (var s = GlobalFileSystem.OpenWithExts(image, tileset.Extensions))
{
var shp = new ShpReader(s);

View File

@@ -265,4 +265,10 @@ namespace OpenRA.Traits
return a.TraitsImplementing<IDisable>().Any(d => d.Disabled);
}
}
public interface ILegacyEditorRenderInfo
{
string EditorPalette { get; }
string EditorImage(ActorInfo actor);
}
}

View File

@@ -15,7 +15,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.RA.Render
{
public class RenderSimpleInfo : RenderSpritesInfo, Requires<IBodyOrientationInfo>
public class RenderSimpleInfo : RenderSpritesInfo, ILegacyEditorRenderInfo, Requires<IBodyOrientationInfo>
{
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