From 3e1c1096c233820a20cbdadd7a747b635dcb653b Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 16 May 2013 01:03:54 +1200 Subject: [PATCH] Convert Smoke to world coordinates. --- OpenRA.Mods.RA/Effects/Bullet.cs | 2 +- OpenRA.Mods.RA/Effects/Missile.cs | 2 +- OpenRA.Mods.RA/Effects/Smoke.cs | 17 ++++++++--------- OpenRA.Mods.RA/Missions/Allies02Script.cs | 2 +- OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs | 2 +- OpenRA.Mods.RA/World/SmudgeLayer.cs | 2 +- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/OpenRA.Mods.RA/Effects/Bullet.cs b/OpenRA.Mods.RA/Effects/Bullet.cs index 1a9ec4ecad..5193c3bd4f 100755 --- a/OpenRA.Mods.RA/Effects/Bullet.cs +++ b/OpenRA.Mods.RA/Effects/Bullet.cs @@ -123,7 +123,7 @@ namespace OpenRA.Mods.RA.Effects if (Info.Trail != null && --ticksToNextSmoke < 0) { world.AddFrameEndTask(w => w.Add( - new Smoke(w, (PPos) highPos.ToInt2(), Info.Trail))); + new Smoke(w, ((PPos)highPos.ToInt2()).ToWPos(0), Info.Trail))); ticksToNextSmoke = Info.TrailInterval; } diff --git a/OpenRA.Mods.RA/Effects/Missile.cs b/OpenRA.Mods.RA/Effects/Missile.cs index f234899806..e429148b9b 100755 --- a/OpenRA.Mods.RA/Effects/Missile.cs +++ b/OpenRA.Mods.RA/Effects/Missile.cs @@ -147,7 +147,7 @@ namespace OpenRA.Mods.RA.Effects if (--ticksToNextSmoke < 0) { - world.AddFrameEndTask(w => w.Add(new Smoke(w, sp, Info.Trail))); + world.AddFrameEndTask(w => w.Add(new Smoke(w, sp.ToWPos(0), Info.Trail))); ticksToNextSmoke = Info.TrailInterval; } } diff --git a/OpenRA.Mods.RA/Effects/Smoke.cs b/OpenRA.Mods.RA/Effects/Smoke.cs index 97e8aa6410..0686a91d99 100644 --- a/OpenRA.Mods.RA/Effects/Smoke.cs +++ b/OpenRA.Mods.RA/Effects/Smoke.cs @@ -17,26 +17,25 @@ namespace OpenRA.Mods.RA.Effects { public class Smoke : IEffect { - readonly PPos pos; - readonly Animation anim; + readonly WPos Pos; + readonly Animation Anim; - public Smoke(World world, PPos pos, string trail) + public Smoke(World world, WPos pos, string trail) { - this.pos = pos; - anim = new Animation(trail); - anim.PlayThen("idle", + Pos = pos; + Anim = new Animation(trail); + Anim.PlayThen("idle", () => world.AddFrameEndTask(w => w.Remove(this))); } public void Tick( World world ) { - anim.Tick(); + Anim.Tick(); } public IEnumerable Render(WorldRenderer wr) { - yield return new SpriteRenderable(anim.Image, pos.ToFloat2(), - wr.Palette("effect"), (int)pos.Y); + yield return new SpriteRenderable(Anim.Image, Pos, 0, wr.Palette("effect"), 1f); } } } diff --git a/OpenRA.Mods.RA/Missions/Allies02Script.cs b/OpenRA.Mods.RA/Missions/Allies02Script.cs index 7b59828208..b752395374 100644 --- a/OpenRA.Mods.RA/Missions/Allies02Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies02Script.cs @@ -151,7 +151,7 @@ namespace OpenRA.Mods.RA.Missions if (allies1.WinState != WinState.Undefined) return; if (world.FrameNumber % 50 == 1 && chinookHusk.IsInWorld) - world.Add(new Smoke(world, chinookHusk.CenterLocation, "smoke_m")); + world.Add(new Smoke(world, chinookHusk.CenterPosition, "smoke_m")); if (world.FrameNumber == 1) { diff --git a/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs b/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs index ff4d3972d5..fcb5c871fc 100644 --- a/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs +++ b/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs @@ -45,7 +45,7 @@ namespace OpenRA.Mods.RA !self.World.FogObscures(new CPos(position))) { var offset = info.Offset.Rotate(coords.QuantizeOrientation(self, self.Orientation)); - var pos = PPos.FromWPosHackZ(position + coords.LocalToWorld(offset)); + var pos = position + coords.LocalToWorld(offset); self.World.AddFrameEndTask(w => w.Add(new Smoke(w, pos, info.Sprite))); } diff --git a/OpenRA.Mods.RA/World/SmudgeLayer.cs b/OpenRA.Mods.RA/World/SmudgeLayer.cs index 61b62ef802..98ac1bbb25 100755 --- a/OpenRA.Mods.RA/World/SmudgeLayer.cs +++ b/OpenRA.Mods.RA/World/SmudgeLayer.cs @@ -55,7 +55,7 @@ namespace OpenRA.Mods.RA public void AddSmudge(CPos loc) { if (Game.CosmeticRandom.Next(0,100) <= Info.SmokePercentage) - world.AddFrameEndTask(w => w.Add(new Smoke(w, Traits.Util.CenterOfCell(loc), Info.SmokeType))); + world.AddFrameEndTask(w => w.Add(new Smoke(w, loc.CenterPosition, Info.SmokeType))); // No smudge; create a new one if (!tiles.ContainsKey(loc))