From cf26e4aa8ae8f3c48f555effd2bc3dd69e66b53c Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 21 Nov 2010 13:57:22 +1300 Subject: [PATCH] improve appearance of smoketrails --- OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs | 40 ++++++++++++++++++++----- mods/ra/rules/vehicles.yaml | 23 ++++++++++++-- 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs b/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs index da251d0221..1dda898e7f 100644 --- a/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs +++ b/OpenRA.Mods.RA/SmokeTrailWhenDamaged.cs @@ -13,18 +13,44 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA { - class SmokeTrailWhenDamagedInfo : TraitInfo { } + class SmokeTrailWhenDamagedInfo : ITraitInfo + { + public readonly int[] Offset = { 0, 0 }; + public readonly int Interval = 1; + + public object Create(ActorInitializer init) { return new SmokeTrailWhenDamaged(init.self, this); } + } class SmokeTrailWhenDamaged : ITick { + Turret smokeTurret; + int2 position; + int interval; + int ticks; + + public SmokeTrailWhenDamaged(Actor self, SmokeTrailWhenDamagedInfo info) + { + smokeTurret = new Turret(info.Offset); + interval = info.Interval; + } + public void Tick(Actor self) { - if (self.GetDamageState() >= DamageState.Heavy) - self.World.AddFrameEndTask( - w => { if (!self.Destroyed) w.Add( - new Smoke(w, self.CenterLocation.ToInt2() - - new int2(0, self.Trait().Altitude), - "smokey")); }); + if (--ticks <= 0) + { + if (self.Trait().Altitude > 0) + { + var facing = self.Trait(); + var altitude = new float2(0, self.Trait().Altitude); + position = (self.CenterLocation - Combat.GetTurretPosition(self, facing, smokeTurret) - altitude).ToInt2(); + + if (self.GetDamageState() >= DamageState.Heavy) + self.World.AddFrameEndTask( + w => w.Add(new Smoke(w, position, "smokey"))); + } + + ticks = interval; + } } } } diff --git a/mods/ra/rules/vehicles.yaml b/mods/ra/rules/vehicles.yaml index 38c58df6f0..07132c9255 100644 --- a/mods/ra/rules/vehicles.yaml +++ b/mods/ra/rules/vehicles.yaml @@ -28,7 +28,12 @@ BADR: Spins: no Moves: yes Explosion: UnitExplode - SmokeTrailWhenDamaged: + SmokeTrailWhenDamaged@0: + Offset: 11, -11 + Interval: 2 + SmokeTrailWhenDamaged@1: + Offset: -11, -11 + Interval: 2 BADR.bomber: CarpetBomb: @@ -61,7 +66,12 @@ BADR.bomber: Spins: no Moves: yes Explosion: UnitExplode - SmokeTrailWhenDamaged: + SmokeTrailWhenDamaged@0: + Offset: 11, -11 + Interval: 2 + SmokeTrailWhenDamaged@1: + Offset: -11, -11 + Interval: 2 V2RL: Inherits: ^Vehicle @@ -738,6 +748,8 @@ MIG: Moves: yes Explosion: UnitExplode SmokeTrailWhenDamaged: + Offset: 0,-20,0,-4 + Interval: 2 YAK: Inherits: ^Plane @@ -785,6 +797,9 @@ YAK: Moves: yes Explosion: UnitExplode SmokeTrailWhenDamaged: + Offset: 0, -20 + Interval: 2 + TRAN: Inherits: ^Plane @@ -863,6 +878,7 @@ HELI: FallsToEarth: Explosion: UnitExplode SmokeTrailWhenDamaged: + Offset: 0,-10 HIND: Inherits: ^Plane @@ -908,6 +924,7 @@ HIND: FallsToEarth: Explosion: UnitExplode SmokeTrailWhenDamaged: + Offset: 0,-10 U2: Inherits: ^Plane @@ -933,6 +950,8 @@ U2: Moves: yes Explosion: UnitExplode SmokeTrailWhenDamaged: + Offset: 0,-25 + Interval: 2 1TNK.Husk: Inherits: ^Husk