From 90b5df73b574c9219bf0d28de00ebd3987653078 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 21 Jan 2010 13:22:39 +1300 Subject: [PATCH] Ditto combat --- OpenRa.Game/Combat.cs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/OpenRa.Game/Combat.cs b/OpenRa.Game/Combat.cs index fac6a77d45..7dc43a24db 100644 --- a/OpenRa.Game/Combat.cs +++ b/OpenRa.Game/Combat.cs @@ -13,13 +13,15 @@ namespace OpenRa public static void DoImpact(int2 loc, int2 visualLoc, WeaponInfo weapon, ProjectileInfo projectile, WarheadInfo warhead, Actor firedBy) { + var world = firedBy.World; + var targetTile = ((1f / Game.CellSize) * loc.ToFloat2()).ToInt2(); - var isWater = Game.world.IsWater(targetTile); - var hitWater = Game.world.IsCellBuildable(targetTile, UnitMovementType.Float); + var isWater = world.IsWater(targetTile); + var hitWater = world.IsCellBuildable(targetTile, UnitMovementType.Float); if (warhead.Explosion != 0) - Game.world.AddFrameEndTask( + world.AddFrameEndTask( w => w.Add(new Explosion(visualLoc, warhead.Explosion, hitWater))); var impactSound = warhead.ImpactSound; @@ -28,10 +30,10 @@ namespace OpenRa if (impactSound != null) Sound.Play(impactSound + ".aud"); if (!isWater) Smudge.AddSmudge(targetTile, warhead); - if (warhead.Ore) Game.world.Map.DestroyOre(targetTile.X, targetTile.Y); + if (warhead.Ore) world.Map.DestroyOre(targetTile.X, targetTile.Y); var maxSpread = GetMaximumSpread(weapon, warhead); - var hitActors = Game.world.FindUnitsInCircle(loc, maxSpread); + var hitActors = world.FindUnitsInCircle(loc, maxSpread); foreach (var victim in hitActors) victim.InflictDamage(firedBy, (int)GetDamageToInflict(victim, loc, weapon, warhead), warhead);