fix most of the palette issues with RA desert in OpenRA.Editor
TODO: use the palette as defined in YAML; defaults are wrong for DESERT rocks, trees, walls and ore mine
This commit is contained in:
@@ -42,7 +42,7 @@ namespace OpenRA.Editor
|
|||||||
tilePalette.ResumeLayout();
|
tilePalette.ResumeLayout();
|
||||||
actorPalette.ResumeLayout();
|
actorPalette.ResumeLayout();
|
||||||
resourcePalette.ResumeLayout();
|
resourcePalette.ResumeLayout();
|
||||||
surface1.Bind(null, null, null);
|
surface1.Bind(null, null, null, null);
|
||||||
pmMiniMap.Image = null;
|
pmMiniMap.Image = null;
|
||||||
currentMod = toolStripComboBox1.SelectedItem as string;
|
currentMod = toolStripComboBox1.SelectedItem as string;
|
||||||
|
|
||||||
@@ -140,8 +140,14 @@ namespace OpenRA.Editor
|
|||||||
tileset.LoadTiles();
|
tileset.LoadTiles();
|
||||||
int[] ShadowIndex = { 3, 4 };
|
int[] ShadowIndex = { 3, 4 };
|
||||||
var palette = new Palette(FileSystem.Open(tileset.Palette), ShadowIndex);
|
var palette = new Palette(FileSystem.Open(tileset.Palette), ShadowIndex);
|
||||||
|
/* PlayerPalette is only used in RA desert terrain
|
||||||
|
* TODO: use the palette as defined in YAML
|
||||||
|
* defaults are wrong for DESERT rocks, trees, walls and ore mine
|
||||||
|
*/
|
||||||
|
var playerPalette = tileset.PlayerPalette ?? tileset.Palette;
|
||||||
|
var PlayerPalette = new Palette(FileSystem.Open(playerPalette), ShadowIndex);
|
||||||
|
|
||||||
surface1.Bind(map, tileset, palette);
|
surface1.Bind(map, tileset, palette, PlayerPalette);
|
||||||
// construct the palette of tiles
|
// construct the palette of tiles
|
||||||
var palettes = new[] { tilePalette, actorPalette, resourcePalette };
|
var palettes = new[] { tilePalette, actorPalette, resourcePalette };
|
||||||
foreach (var p in palettes) { p.Visible = false; p.SuspendLayout(); }
|
foreach (var p in palettes) { p.Visible = false; p.SuspendLayout(); }
|
||||||
@@ -211,7 +217,7 @@ namespace OpenRA.Editor
|
|||||||
if (etf != null && etf.RequireTilesets != null
|
if (etf != null && etf.RequireTilesets != null
|
||||||
&& !etf.RequireTilesets.Contains(tileset.Id)) continue;
|
&& !etf.RequireTilesets.Contains(tileset.Id)) continue;
|
||||||
|
|
||||||
var template = RenderUtils.RenderActor(info, tileset, palette);
|
var template = RenderUtils.RenderActor(info, tileset, PlayerPalette);
|
||||||
var ibox = new PictureBox
|
var ibox = new PictureBox
|
||||||
{
|
{
|
||||||
Image = template.Bitmap,
|
Image = template.Bitmap,
|
||||||
@@ -242,7 +248,7 @@ namespace OpenRA.Editor
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var template = RenderUtils.RenderResourceType(a, tileset.Extensions, palette);
|
var template = RenderUtils.RenderResourceType(a, tileset.Extensions, PlayerPalette);
|
||||||
var ibox = new PictureBox
|
var ibox = new PictureBox
|
||||||
{
|
{
|
||||||
Image = template.Bitmap,
|
Image = template.Bitmap,
|
||||||
@@ -317,7 +323,7 @@ namespace OpenRA.Editor
|
|||||||
if ((int)rd.width.Value != surface1.Map.MapSize.X || (int)rd.height.Value != surface1.Map.MapSize.Y)
|
if ((int)rd.width.Value != surface1.Map.MapSize.X || (int)rd.height.Value != surface1.Map.MapSize.Y)
|
||||||
{
|
{
|
||||||
surface1.Map.Resize((int)rd.width.Value, (int)rd.height.Value);
|
surface1.Map.Resize((int)rd.width.Value, (int)rd.height.Value);
|
||||||
surface1.Bind(surface1.Map, surface1.TileSet, surface1.Palette); // rebind it to invalidate all caches
|
surface1.Bind(surface1.Map, surface1.TileSet, surface1.Palette, surface1.PlayerPalette); // rebind it to invalidate all caches
|
||||||
}
|
}
|
||||||
|
|
||||||
surface1.Invalidate();
|
surface1.Invalidate();
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ namespace OpenRA.Editor
|
|||||||
public Map Map { get; private set; }
|
public Map Map { get; private set; }
|
||||||
public TileSet TileSet { get; private set; }
|
public TileSet TileSet { get; private set; }
|
||||||
public Palette Palette { get; private set; }
|
public Palette Palette { get; private set; }
|
||||||
|
public Palette PlayerPalette { get; private set; }
|
||||||
public int2 Offset;
|
public int2 Offset;
|
||||||
|
|
||||||
public int2 GetOffset() { return Offset; }
|
public int2 GetOffset() { return Offset; }
|
||||||
@@ -55,11 +56,12 @@ namespace OpenRA.Editor
|
|||||||
|
|
||||||
public Keys GetModifiers() { return ModifierKeys; }
|
public Keys GetModifiers() { return ModifierKeys; }
|
||||||
|
|
||||||
public void Bind(Map m, TileSet ts, Palette p)
|
public void Bind(Map m, TileSet ts, Palette p, Palette pp)
|
||||||
{
|
{
|
||||||
Map = m;
|
Map = m;
|
||||||
TileSet = ts;
|
TileSet = ts;
|
||||||
Palette = p;
|
Palette = p;
|
||||||
|
PlayerPalette = pp;
|
||||||
PlayerPalettes = null;
|
PlayerPalettes = null;
|
||||||
Chunks.Clear();
|
Chunks.Clear();
|
||||||
Tool = null;
|
Tool = null;
|
||||||
@@ -348,7 +350,7 @@ namespace OpenRA.Editor
|
|||||||
var pr = Map.Players[name];
|
var pr = Map.Players[name];
|
||||||
var pcpi = Rules.Info["player"].Traits.Get<PlayerColorPaletteInfo>();
|
var pcpi = Rules.Info["player"].Traits.Get<PlayerColorPaletteInfo>();
|
||||||
var remap = new PlayerColorRemap(pcpi.RemapIndex, pr.ColorRamp);
|
var remap = new PlayerColorRemap(pcpi.RemapIndex, pr.ColorRamp);
|
||||||
return new Palette(Palette, remap).AsSystemPalette();
|
return new Palette(PlayerPalette, remap).AsSystemPalette();
|
||||||
}
|
}
|
||||||
|
|
||||||
Cache<string, ColorPalette> PlayerPalettes;
|
Cache<string, ColorPalette> PlayerPalettes;
|
||||||
|
|||||||
Reference in New Issue
Block a user