Add a(nother) workaround for the legacy editor.

This commit is contained in:
Paul Chote
2015-03-26 22:13:16 +00:00
parent 549c0bf382
commit a2b423e4f9
2 changed files with 16 additions and 4 deletions

View File

@@ -269,7 +269,7 @@ namespace OpenRA.Editor
{
try
{
var template = RenderUtils.RenderResourceType(a, tileset.Extensions, shadowedPalette);
var template = RenderUtils.RenderResourceType(a, tileset, shadowedPalette);
var ibox = new PictureBox
{
Image = template.Bitmap,

View File

@@ -14,6 +14,7 @@ using System.Linq;
using OpenRA.FileFormats;
using OpenRA.FileSystem;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Graphics;
using OpenRA.Mods.Common.SpriteLoaders;
using OpenRA.Traits;
@@ -46,17 +47,27 @@ namespace OpenRA.Editor
return bitmap;
}
static string[] SpriteExtensions(TileSet tileSet)
{
var ssl = Game.ModData.SpriteSequenceLoader as TilesetSpecificSpriteSequenceLoader;
if (ssl == null)
return tileSet.Extensions;
return tileSet.Extensions.Append(ssl.TilesetExtensions[tileSet.Id], ssl.DefaultSpriteExtension).ToArray();
}
public static ActorTemplate RenderActor(ActorInfo info, SequenceProvider sequenceProvider, TileSet tileset, IPalette p, string race)
{
var image = info.Traits.Get<ILegacyEditorRenderInfo>().EditorImage(info, sequenceProvider, race);
using (var s = GlobalFileSystem.OpenWithExts(image, tileset.Extensions))
var exts = SpriteExtensions(tileset);
using (var s = GlobalFileSystem.OpenWithExts(image, exts))
{
var shp = new ShpTDSprite(s);
var bitmap = RenderShp(shp, p);
try
{
using (var s2 = GlobalFileSystem.OpenWithExts(image + "2", tileset.Extensions))
using (var s2 = GlobalFileSystem.OpenWithExts(image + "2", exts))
{
var shp2 = new ShpTDSprite(s2);
var roofBitmap = RenderShp(shp2, p);
@@ -76,9 +87,10 @@ namespace OpenRA.Editor
}
}
public static ResourceTemplate RenderResourceType(ResourceTypeInfo info, string[] exts, IPalette p)
public static ResourceTemplate RenderResourceType(ResourceTypeInfo info, TileSet tileset, IPalette p)
{
var image = info.EditorSprite;
var exts = SpriteExtensions(tileset);
using (var s = GlobalFileSystem.OpenWithExts(image, exts))
{
// TODO: Do this properly