diff --git a/OpenRA.Game/Effects/DelayedAction.cs b/OpenRA.Game/Effects/DelayedAction.cs index 64603bc9bf..609af16c4a 100755 --- a/OpenRA.Game/Effects/DelayedAction.cs +++ b/OpenRA.Game/Effects/DelayedAction.cs @@ -10,6 +10,7 @@ using System; using System.Collections.Generic; +using OpenRA.Graphics; using OpenRA.Traits; namespace OpenRA.Effects @@ -25,12 +26,12 @@ namespace OpenRA.Effects this.delay = delay; } - public void Tick( World world ) + public void Tick(World world) { if (--delay <= 0) world.AddFrameEndTask(w => { w.Remove(this); a(); }); } - public IEnumerable Render() { yield break; } + public IEnumerable Render(WorldRenderer wr) { yield break; } } } diff --git a/OpenRA.Game/Effects/FlashTarget.cs b/OpenRA.Game/Effects/FlashTarget.cs index 9dd0de5b92..6e30ff9b39 100755 --- a/OpenRA.Game/Effects/FlashTarget.cs +++ b/OpenRA.Game/Effects/FlashTarget.cs @@ -33,14 +33,14 @@ namespace OpenRA.Effects world.AddFrameEndTask(w => w.Remove(this)); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { if (!target.IsInWorld) yield break; if (remainingTicks % 2 == 0) foreach (var r in target.Render()) - yield return r.WithPalette(PaletteReference.FromName("highlight")); + yield return r.WithPalette(wr.Palette("highlight")); } } } diff --git a/OpenRA.Game/Effects/IEffect.cs b/OpenRA.Game/Effects/IEffect.cs index be2f2fb988..5bab9cfcf3 100755 --- a/OpenRA.Game/Effects/IEffect.cs +++ b/OpenRA.Game/Effects/IEffect.cs @@ -9,13 +9,14 @@ #endregion using System.Collections.Generic; +using OpenRA.Graphics; using OpenRA.Traits; namespace OpenRA.Effects { public interface IEffect { - void Tick( World world ); - IEnumerable Render(); + void Tick(World world); + IEnumerable Render(WorldRenderer r); } } diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index 123b352639..9e9dbbbb56 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -95,7 +95,7 @@ namespace OpenRA.Graphics var renderables = actors.SelectMany(a => a.Render()) .OrderBy(r => r, comparer); - var effects = world.Effects.SelectMany(e => e.Render()); + var effects = world.Effects.SelectMany(e => e.Render(this)); return renderables.Concat(effects); } diff --git a/OpenRA.Mods.Cnc/Effects/IonCannon.cs b/OpenRA.Mods.Cnc/Effects/IonCannon.cs index fd53a1dc20..df9ae17f00 100644 --- a/OpenRA.Mods.Cnc/Effects/IonCannon.cs +++ b/OpenRA.Mods.Cnc/Effects/IonCannon.cs @@ -32,11 +32,11 @@ namespace OpenRA.Mods.Cnc.Effects public void Tick(World world) { anim.Tick(); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { yield return new Renderable(anim.Image, target.CenterLocation.ToFloat2() - new float2(.5f * anim.Image.size.X, anim.Image.size.Y - Game.CellSize), - PaletteReference.FromName("effect"), (int)target.CenterLocation.Y); + wr.Palette("effect"), (int)target.CenterLocation.Y); } void Finish( World world ) diff --git a/OpenRA.Mods.RA/Effects/Bullet.cs b/OpenRA.Mods.RA/Effects/Bullet.cs index 56551c9430..7820e840ea 100755 --- a/OpenRA.Mods.RA/Effects/Bullet.cs +++ b/OpenRA.Mods.RA/Effects/Bullet.cs @@ -144,7 +144,7 @@ namespace OpenRA.Mods.RA.Effects const float height = .1f; - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { if (anim != null) { @@ -158,15 +158,15 @@ namespace OpenRA.Mods.RA.Effects if (Info.High || Info.Angle > 0) { if (Info.Shadow) - yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, PaletteReference.FromName("shadow"), (int)pos.Y); + yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, wr.Palette("shadow"), (int)pos.Y); var highPos = pos - new float2(0, GetAltitude()); - yield return new Renderable(anim.Image, highPos - .5f * anim.Image.size, PaletteReference.FromName("effect"), (int)pos.Y); + yield return new Renderable(anim.Image, highPos - .5f * anim.Image.size, wr.Palette("effect"), (int)pos.Y); } else yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, - PaletteReference.FromName(Args.weapon.Underwater ? "shadow" : "effect"), (int)pos.Y); + wr.Palette(Args.weapon.Underwater ? "shadow" : "effect"), (int)pos.Y); } } diff --git a/OpenRA.Mods.RA/Effects/CashTick.cs b/OpenRA.Mods.RA/Effects/CashTick.cs index 8c2195da9a..976885945b 100644 --- a/OpenRA.Mods.RA/Effects/CashTick.cs +++ b/OpenRA.Mods.RA/Effects/CashTick.cs @@ -49,7 +49,7 @@ namespace OpenRA.Mods.RA.Effects pos -= new PVecInt(0, velocity); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { font.DrawTextWithContrast(s, Game.viewport.Zoom*(pos.ToFloat2() - Game.viewport.Location) - offset, color, Color.Black,1); yield break; diff --git a/OpenRA.Mods.RA/Effects/Corpse.cs b/OpenRA.Mods.RA/Effects/Corpse.cs index ace3f0f235..a22670d0fb 100644 --- a/OpenRA.Mods.RA/Effects/Corpse.cs +++ b/OpenRA.Mods.RA/Effects/Corpse.cs @@ -34,7 +34,7 @@ namespace OpenRA.Mods.RA.Effects public void Tick( World world ) { anim.Tick(); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, palette, (int)pos.Y); } diff --git a/OpenRA.Mods.RA/Effects/CrateEffect.cs b/OpenRA.Mods.RA/Effects/CrateEffect.cs index 48bca60799..61b70dd326 100644 --- a/OpenRA.Mods.RA/Effects/CrateEffect.cs +++ b/OpenRA.Mods.RA/Effects/CrateEffect.cs @@ -39,12 +39,12 @@ namespace OpenRA.Mods.RA.Effects anim.Tick(); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { if (a.IsInWorld) yield return new Renderable(anim.Image, a.CenterLocation.ToFloat2() - .5f * anim.Image.size + offset, - PaletteReference.FromName("effect"), (int)a.CenterLocation.Y); + wr.Palette("effect"), (int)a.CenterLocation.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/Explosion.cs b/OpenRA.Mods.RA/Effects/Explosion.cs index 4ab7089ea3..942abb9a0a 100644 --- a/OpenRA.Mods.RA/Effects/Explosion.cs +++ b/OpenRA.Mods.RA/Effects/Explosion.cs @@ -32,11 +32,11 @@ namespace OpenRA.Mods.RA.Effects public void Tick( World world ) { anim.Tick(); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { yield return new Renderable(anim.Image, pos.ToFloat2() - .5f * anim.Image.size - new int2(0,altitude), - PaletteReference.FromName("effect"), (int)pos.Y - altitude); + wr.Palette("effect"), (int)pos.Y - altitude); } public Player Owner { get { return null; } } diff --git a/OpenRA.Mods.RA/Effects/GpsDot.cs b/OpenRA.Mods.RA/Effects/GpsDot.cs index 21f1413628..f6400ab2da 100644 --- a/OpenRA.Mods.RA/Effects/GpsDot.cs +++ b/OpenRA.Mods.RA/Effects/GpsDot.cs @@ -66,7 +66,7 @@ namespace OpenRA.Mods.RA.Effects } } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { if (show && !self.Destroyed) { diff --git a/OpenRA.Mods.RA/Effects/GpsSatellite.cs b/OpenRA.Mods.RA/Effects/GpsSatellite.cs index 6dd3b331ff..be28c34cc5 100644 --- a/OpenRA.Mods.RA/Effects/GpsSatellite.cs +++ b/OpenRA.Mods.RA/Effects/GpsSatellite.cs @@ -36,9 +36,9 @@ namespace OpenRA.Mods.RA.Effects world.AddFrameEndTask(w => w.Remove(this)); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { - yield return new Renderable(anim.Image,offset, PaletteReference.FromName("effect"), (int)offset.Y); + yield return new Renderable(anim.Image,offset, wr.Palette("effect"), (int)offset.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/GravityBomb.cs b/OpenRA.Mods.RA/Effects/GravityBomb.cs index 0b4caf2e34..090c776995 100755 --- a/OpenRA.Mods.RA/Effects/GravityBomb.cs +++ b/OpenRA.Mods.RA/Effects/GravityBomb.cs @@ -51,10 +51,10 @@ namespace OpenRA.Mods.RA.Effects anim.Tick(); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { var pos = Args.dest.ToInt2() - new int2(0, altitude) - .5f * anim.Image.size; - yield return new Renderable(anim.Image, pos, PaletteReference.FromName("effect"), Args.dest.Y); + yield return new Renderable(anim.Image, pos, wr.Palette("effect"), Args.dest.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/InvulnEffect.cs b/OpenRA.Mods.RA/Effects/InvulnEffect.cs index ef5f431e14..953c0826b6 100644 --- a/OpenRA.Mods.RA/Effects/InvulnEffect.cs +++ b/OpenRA.Mods.RA/Effects/InvulnEffect.cs @@ -32,13 +32,13 @@ namespace OpenRA.Mods.RA.Effects world.AddFrameEndTask(w => w.Remove(this)); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { if (a.Destroyed) // Tick will clean up yield break; foreach (var r in a.Render()) - yield return r.WithPalette(PaletteReference.FromName("invuln")); + yield return r.WithPalette(wr.Palette("invuln")); } } } diff --git a/OpenRA.Mods.RA/Effects/LaserZap.cs b/OpenRA.Mods.RA/Effects/LaserZap.cs index 6480aa30a3..de0589ebd1 100755 --- a/OpenRA.Mods.RA/Effects/LaserZap.cs +++ b/OpenRA.Mods.RA/Effects/LaserZap.cs @@ -74,11 +74,11 @@ namespace OpenRA.Mods.RA.Effects world.AddFrameEndTask(w => w.Remove(this)); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { if (explosion != null) yield return new Renderable(explosion.Image, args.dest.ToFloat2() - .5f * explosion.Image.size, - PaletteReference.FromName("effect"), (int)args.dest.Y); + wr.Palette("effect"), (int)args.dest.Y); if (ticks >= info.BeamDuration) yield break; diff --git a/OpenRA.Mods.RA/Effects/Missile.cs b/OpenRA.Mods.RA/Effects/Missile.cs index 7b0754b529..d273a087a9 100755 --- a/OpenRA.Mods.RA/Effects/Missile.cs +++ b/OpenRA.Mods.RA/Effects/Missile.cs @@ -152,11 +152,11 @@ namespace OpenRA.Mods.RA.Effects Combat.DoImpacts(Args); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { if (Args.firedBy.World.RenderedShroud.IsVisible(PxPosition.ToCPos())) yield return new Renderable(anim.Image, PxPosition.ToFloat2() - 0.5f * anim.Image.size - new float2(0, Altitude), - PaletteReference.FromName(Args.weapon.Underwater ? "shadow" : "effect"), PxPosition.Y); + wr.Palette(Args.weapon.Underwater ? "shadow" : "effect"), PxPosition.Y); if (Trail != null) Trail.Render(Args.firedBy); diff --git a/OpenRA.Mods.RA/Effects/NukeLaunch.cs b/OpenRA.Mods.RA/Effects/NukeLaunch.cs index ed9e2a9631..8b52557bca 100755 --- a/OpenRA.Mods.RA/Effects/NukeLaunch.cs +++ b/OpenRA.Mods.RA/Effects/NukeLaunch.cs @@ -77,10 +77,10 @@ namespace OpenRA.Mods.RA.Effects a.Trait.Enable(); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { yield return new Renderable(anim.Image, pos.ToFloat2() - 0.5f * anim.Image.size - new float2(0, altitude), - PaletteReference.FromName("effect"), (int)pos.Y); + wr.Palette("effect"), (int)pos.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/Parachute.cs b/OpenRA.Mods.RA/Effects/Parachute.cs index fccac9b1fd..45772abb15 100644 --- a/OpenRA.Mods.RA/Effects/Parachute.cs +++ b/OpenRA.Mods.RA/Effects/Parachute.cs @@ -73,10 +73,10 @@ namespace OpenRA.Mods.RA.Effects }); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { var pos = location.ToFloat2() - new float2(0, altitude); - yield return new Renderable(anim.Image, location.ToFloat2() - .5f * anim.Image.size, PaletteReference.FromName("shadow"), 0); + yield return new Renderable(anim.Image, location.ToFloat2() - .5f * anim.Image.size, wr.Palette("shadow"), 0); yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, palette, 2); yield return new Renderable(paraAnim.Image, pos - .5f * paraAnim.Image.size + offset, palette, 3); } diff --git a/OpenRA.Mods.RA/Effects/PowerdownIndicator.cs b/OpenRA.Mods.RA/Effects/PowerdownIndicator.cs index 9d9669f705..1605d9dfcd 100644 --- a/OpenRA.Mods.RA/Effects/PowerdownIndicator.cs +++ b/OpenRA.Mods.RA/Effects/PowerdownIndicator.cs @@ -34,11 +34,11 @@ namespace OpenRA.Mods.RA.Effects anim.Tick(); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { if (!a.Destroyed && (a.World.LocalPlayer == null || a.Owner.Stances[a.Owner.World.LocalPlayer] == Stance.Ally)) yield return new Renderable(anim.Image, a.CenterLocation.ToFloat2() - .5f * anim.Image.size, - PaletteReference.FromName("chrome"), (int)a.CenterLocation.Y); + wr.Palette("chrome"), (int)a.CenterLocation.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/RallyPoint.cs b/OpenRA.Mods.RA/Effects/RallyPoint.cs index bedd9a904e..2ff23f5fcf 100755 --- a/OpenRA.Mods.RA/Effects/RallyPoint.cs +++ b/OpenRA.Mods.RA/Effects/RallyPoint.cs @@ -46,7 +46,7 @@ namespace OpenRA.Mods.RA.Effects world.AddFrameEndTask(w => w.Remove(this)); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { if (building.IsInWorld && building.Owner == building.World.LocalPlayer && building.World.Selection.Actors.Contains(building)) diff --git a/OpenRA.Mods.RA/Effects/RepairIndicator.cs b/OpenRA.Mods.RA/Effects/RepairIndicator.cs index e710e92534..1089dd8450 100755 --- a/OpenRA.Mods.RA/Effects/RepairIndicator.cs +++ b/OpenRA.Mods.RA/Effects/RepairIndicator.cs @@ -40,7 +40,7 @@ namespace OpenRA.Mods.RA.Effects anim.Tick(); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { if (!building.Destroyed) { diff --git a/OpenRA.Mods.RA/Effects/SatelliteLaunch.cs b/OpenRA.Mods.RA/Effects/SatelliteLaunch.cs index 8fd86432eb..047f27e5ba 100644 --- a/OpenRA.Mods.RA/Effects/SatelliteLaunch.cs +++ b/OpenRA.Mods.RA/Effects/SatelliteLaunch.cs @@ -40,9 +40,9 @@ namespace OpenRA.Mods.RA.Effects } } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { - yield return new Renderable(doors.Image, pos, PaletteReference.FromName("effect"), (int)doorOffset.Y); + yield return new Renderable(doors.Image, pos, wr.Palette("effect"), (int)doorOffset.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/Smoke.cs b/OpenRA.Mods.RA/Effects/Smoke.cs index 7a035a31e8..f82f963296 100644 --- a/OpenRA.Mods.RA/Effects/Smoke.cs +++ b/OpenRA.Mods.RA/Effects/Smoke.cs @@ -33,10 +33,10 @@ namespace OpenRA.Mods.RA.Effects anim.Tick(); } - public IEnumerable Render() + public IEnumerable Render(WorldRenderer wr) { yield return new Renderable(anim.Image, pos.ToFloat2() - .5f * anim.Image.size, - PaletteReference.FromName("effect"), (int)pos.Y); + wr.Palette("effect"), (int)pos.Y); } } } diff --git a/OpenRA.Mods.RA/Effects/TeslaZap.cs b/OpenRA.Mods.RA/Effects/TeslaZap.cs index 6be01f59dd..39b3c64c79 100755 --- a/OpenRA.Mods.RA/Effects/TeslaZap.cs +++ b/OpenRA.Mods.RA/Effects/TeslaZap.cs @@ -62,7 +62,7 @@ namespace OpenRA.Mods.RA.Effects } } - public IEnumerable Render() { return renderables; } + public IEnumerable Render(WorldRenderer wr) { return renderables; } static IEnumerable DrawZapWandering(PPos from, PPos to, Sequence s) {