add --remap cmdlet to OpenRA Utility, remaps between ra/cnc/etc palettes.

This commit is contained in:
Chris Forbes
2011-12-27 11:48:22 +13:00
parent f8127ab9df
commit 132c678594
3 changed files with 63 additions and 4 deletions

View File

@@ -21,15 +21,26 @@ namespace OpenRA.FileFormats
{
Dictionary<int, Color> remapColors;
static readonly int[] CncRemapRamp = new[] { 0, 2, 4, 6, 8, 10, 13, 15, 1, 3, 5, 7, 9, 11, 12, 14 };
static readonly int[] NormalRemapRamp = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
public static int GetRemapBase(PaletteFormat fmt)
{
return (fmt == PaletteFormat.cnc) ? 0xb0 : (fmt == PaletteFormat.d2k) ? 240 : 80;
}
public static int[] GetRemapRamp(PaletteFormat fmt)
{
return (fmt == PaletteFormat.cnc) ? CncRemapRamp : NormalRemapRamp;
}
public PlayerColorRemap(PaletteFormat fmt, ColorRamp c)
{
var c1 = c.GetColor(0);
var c2 = c.GetColor(1); /* temptemp: this can be expressed better */
var baseIndex = (fmt == PaletteFormat.cnc) ? 0xb0 : (fmt == PaletteFormat.d2k) ? 240 : 80;
var ramp = (fmt == PaletteFormat.cnc)
? new[] { 0, 2, 4, 6, 8, 10, 13, 15, 1, 3, 5, 7, 9, 11, 12, 14 }
: new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
var baseIndex = GetRemapBase(fmt);
var ramp = GetRemapRamp(fmt);
remapColors = ramp.Select((x, i) => Pair.New(baseIndex + i, ColorLerp(x / 16f, c1, c2)))
.ToDictionary(u => u.First, u => u.Second);