Remove HasEmbeddedPalette from sequences.

This commit is contained in:
Paul Chote
2023-03-06 21:00:59 +00:00
committed by Gustas
parent dab3ca0025
commit 992ba1a9a2
9 changed files with 114 additions and 61 deletions

View File

@@ -19,26 +19,6 @@ using OpenRA.Primitives;
namespace OpenRA.Mods.Common.Graphics
{
public class EmbeddedSpritePalette
{
readonly uint[] filePalette = null;
readonly Dictionary<int, uint[]> framePalettes = null;
public EmbeddedSpritePalette(uint[] filePalette = null, Dictionary<int, uint[]> framePalettes = null)
{
this.filePalette = filePalette;
this.framePalettes = framePalettes;
}
public bool TryGetPaletteForFrame(int frame, out uint[] palette)
{
if (framePalettes == null || !framePalettes.TryGetValue(frame, out palette))
palette = filePalette;
return palette != null;
}
}
public class DefaultSpriteSequenceLoader : ISpriteSequenceLoader
{
static readonly MiniYaml NoData = new MiniYaml(null);
@@ -256,11 +236,6 @@ namespace OpenRA.Mods.Common.Graphics
[Desc("X, Y offset to apply to the depth sprite.")]
static readonly SpriteSequenceField<float2> DepthSpriteOffset = new SpriteSequenceField<float2>(nameof(DepthSpriteOffset), float2.Zero);
[Desc("Make a custom palette embedded in the sprite available to the PaletteFromEmbeddedSpritePalette trait.")]
static readonly SpriteSequenceField<bool> HasEmbeddedPalette = new SpriteSequenceField<bool>(nameof(HasEmbeddedPalette), false);
public readonly uint[] EmbeddedPalette;
protected virtual string GetSpriteFilename(ModData modData, string tileset, string image, string sequence, MiniYaml data, MiniYaml defaults)
{
return LoadField(Filename, data, defaults);
@@ -502,19 +477,6 @@ namespace OpenRA.Mods.Common.Graphics
}).ToArray();
}
if (LoadField(HasEmbeddedPalette, data, defaults))
{
var filename = GetSpriteFilename(modData, tileSet, image, sequence, data, defaults);
if (filename == null)
throw new YamlException($"Sequence {image}.{sequence} does not define a filename.");
var metadata = cache.FrameMetadata(filename);
var i = frames != null ? frames[0] : start;
var palettes = metadata?.GetOrDefault<EmbeddedSpritePalette>();
if (palettes == null || !palettes.TryGetPaletteForFrame(i, out EmbeddedPalette))
throw new YamlException($"Cannot export palette from {filename}: frame {i} does not define an embedded palette.");
}
var boundSprites = SpriteBounds(sprites, frames, start, facings, length, stride, transpose);
if (shadowStart > 0)
boundSprites = boundSprites.Concat(SpriteBounds(sprites, frames, shadowStart, facings, length, stride, transpose));