Merge pull request #10246 from penev92/terrainPalettes

Allow tile templates to define their own palette
This commit is contained in:
Oliver Brakmann
2016-01-17 21:39:28 +01:00
14 changed files with 39 additions and 21 deletions

View File

@@ -18,7 +18,7 @@ namespace OpenRA.Mods.Common.Traits
public class BibInfo : ITraitInfo, Requires<BuildingInfo>, IRenderActorPreviewSpritesInfo, Requires<RenderSpritesInfo>
{
[SequenceReference] public readonly string Sequence = "bib";
[PaletteReference] public readonly string Palette = "terrain";
[PaletteReference] public readonly string Palette = TileSet.TerrainPaletteInternalName;
public readonly bool HasMinibib = false;
public object Create(ActorInitializer init) { return new Bib(init.Self, this); }

View File

@@ -192,7 +192,7 @@ namespace OpenRA.Mods.Common.Traits
{
if (!initialized)
{
var palette = wr.Palette("terrain");
var palette = wr.Palette(TileSet.TerrainPaletteInternalName);
renderables = new Dictionary<ushort, IRenderable[]>();
foreach (var t in info.Templates)
renderables.Add(t.First, TemplateRenderables(wr, palette, t.First));

View File

@@ -20,7 +20,7 @@ namespace OpenRA.Mods.Common.Traits
public class PlaceBuildingInfo : ITraitInfo
{
[Desc("Palette to use for rendering the placement sprite.")]
[PaletteReference] public readonly string Palette = "terrain";
[PaletteReference] public readonly string Palette = TileSet.TerrainPaletteInternalName;
[Desc("Play NewOptionsNotification this many ticks after building placement.")]
public readonly int NewOptionsNotificationDelay = 10;

View File

@@ -149,7 +149,7 @@ namespace OpenRA.Mods.Common.Traits
public IEnumerable<IRenderable> Render(WorldRenderer wr, World world)
{
var xy = wr.Viewport.ViewToWorld(Viewport.LastMousePos);
var pal = wr.Palette("terrain");
var pal = wr.Palette(TileSet.TerrainPaletteInternalName);
foreach (var t in world.Map.FindTilesInCircle(xy, range))
yield return new SpriteRenderable(tile, wr.World.Map.CenterOfCell(t), WVec.Zero, -511, pal, 1f, true);

View File

@@ -25,7 +25,7 @@ namespace OpenRA.Mods.Common.Traits
{
[PaletteReference]
[Desc("Palette to use for rendering the placement sprite.")]
public readonly string Palette = "terrain";
public readonly string Palette = TileSet.TerrainPaletteInternalName;
[Desc("Sequence image where the selection overlay types are defined.")]
public readonly string Image = "editor-overlay";

View File

@@ -33,7 +33,7 @@ namespace OpenRA.Mods.Common.Traits
[PaletteReference] public readonly string SmokePalette = "effect";
[PaletteReference] public readonly string Palette = "terrain";
[PaletteReference] public readonly string Palette = TileSet.TerrainPaletteInternalName;
public object Create(ActorInitializer init) { return new SmudgeLayer(init.Self, this); }
}

View File

@@ -18,7 +18,6 @@ namespace OpenRA.Mods.Common.Widgets
public class TerrainTemplatePreviewWidget : Widget
{
public Func<float> GetScale = () => 1f;
public string Palette = "terrain";
readonly WorldRenderer worldRenderer;
readonly TileSet tileset;
@@ -93,7 +92,8 @@ namespace OpenRA.Mods.Common.Widgets
var u = gridType == MapGridType.Rectangular ? x : (x - y) / 2f;
var v = gridType == MapGridType.Rectangular ? y : (x + y) / 2f;
var pos = origin + scale * (new float2(u * ts.Width, (v - 0.5f * tileInfo.Height) * ts.Height) - 0.5f * sprite.Size);
Game.Renderer.SpriteRenderer.DrawSprite(sprite, pos, worldRenderer.Palette(Palette), size);
var palette = Template.Palette ?? TileSet.TerrainPaletteInternalName;
Game.Renderer.SpriteRenderer.DrawSprite(sprite, pos, worldRenderer.Palette(palette), size);
}
}
}