diff --git a/OpenRA.Game/Traits/World/ResourceType.cs b/OpenRA.Game/Traits/World/ResourceType.cs index c6927a97a4..9b983a39a5 100644 --- a/OpenRA.Game/Traits/World/ResourceType.cs +++ b/OpenRA.Game/Traits/World/ResourceType.cs @@ -17,8 +17,10 @@ namespace OpenRA.Traits { // HACK: The editor is getting really unmaintanable... public readonly string EditorSprite; + public readonly string[] Variants = { }; public readonly string Palette = "terrain"; + public readonly string Sequence = "resources"; public readonly int ResourceType = 1; public readonly int ValuePerUnit = 0; @@ -47,7 +49,7 @@ namespace OpenRA.Traits Variants = new Dictionary(); foreach (var v in info.Variants) { - var seq = world.Map.SequenceProvider.GetSequence("resources", v); + var seq = world.Map.SequenceProvider.GetSequence(Info.Sequence, v); var sprites = Exts.MakeArray(seq.Length, x => seq.GetSprite(x)); Variants.Add(v, sprites); } diff --git a/OpenRA.Mods.RA/World/ResourceLayer.cs b/OpenRA.Mods.RA/World/ResourceLayer.cs index b7bf86fbe5..06dd6ea0c6 100644 --- a/OpenRA.Mods.RA/World/ResourceLayer.cs +++ b/OpenRA.Mods.RA/World/ResourceLayer.cs @@ -17,7 +17,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA { - [Desc("Attach this to the world actor.")] + [Desc("Attach this to the world actor.", "Order of the layers defines the Z sorting.")] public class ResourceLayerInfo : TraitInfo, Requires { } public class ResourceLayer : IRenderOverlay, IWorldLoaded, ITickRender @@ -43,7 +43,7 @@ namespace OpenRA.Mods.RA var c = render[cell]; if (c.Sprite != null) new SpriteRenderable(c.Sprite, wr.world.Map.CenterOfCell(cell), - WVec.Zero, -511, c.Type.Palette, 1f, true).Render(wr); + WVec.Zero, -511, c.Type.Palette, 1f, true).Render(wr); // TODO ZOffset is ignored } } diff --git a/OpenRA.Mods.RA/World/SmudgeLayer.cs b/OpenRA.Mods.RA/World/SmudgeLayer.cs index 85ef43ccd0..e05108f08b 100644 --- a/OpenRA.Mods.RA/World/SmudgeLayer.cs +++ b/OpenRA.Mods.RA/World/SmudgeLayer.cs @@ -16,14 +16,21 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA { + [Desc("Attach this to the world actor.", "Order of the layers defines the Z sorting.")] public class SmudgeLayerInfo : ITraitInfo { public readonly string Type = "Scorch"; + + [Desc("Sprite sequence name")] public readonly string Sequence = "scorch"; public readonly int SmokePercentage = 25; + + [Desc("Sprite sequence name")] public readonly string SmokeType = "smoke_m"; + public readonly string Palette = "terrain"; + public object Create(ActorInitializer init) { return new SmudgeLayer(this); } } @@ -120,7 +127,7 @@ namespace OpenRA.Mods.RA public void Render(WorldRenderer wr) { - var pal = wr.Palette("terrain"); + var pal = wr.Palette(Info.Palette); foreach (var kv in tiles) { @@ -131,7 +138,7 @@ namespace OpenRA.Mods.RA continue; new SpriteRenderable(kv.Value.Sprite, world.Map.CenterOfCell(kv.Key), - WVec.Zero, -511, pal, 1f, true).Render(wr); + WVec.Zero, -511, pal, 1f, true).Render(wr); // TODO ZOffset is ignored } } }