From 76216b8dd9c501015927a0c529e25a62a3b2c2f9 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Tue, 4 Jan 2011 13:13:01 +1300 Subject: [PATCH] Move damage sounds and shaking from Building/RenderBuilding into their own traits. Fix wall damage/death sounds under cnc. --- OpenRA.Mods.RA/Buildings/Building.cs | 15 ++---- OpenRA.Mods.RA/Buildings/ShakeOnDeath.cs | 38 ++++++++++++++ .../Buildings/SoundOnDamageTransition.cs | 48 ++++++++++++++++++ OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 4 +- OpenRA.Mods.RA/Render/RenderBuilding.cs | 3 -- .../Render/RenderBuildingTurreted.cs | 3 -- OpenRA.Mods.RA/Render/RenderBuildingWall.cs | 10 ---- mods/cnc/bits/sandbag2.aud | Bin 0 -> 8075 bytes mods/cnc/rules/defaults.yaml | 7 +-- mods/cnc/rules/structures.yaml | 4 +- mods/ra/rules/defaults.yaml | 7 ++- mods/ra/rules/structures.yaml | 2 +- 12 files changed, 106 insertions(+), 35 deletions(-) create mode 100644 OpenRA.Mods.RA/Buildings/ShakeOnDeath.cs create mode 100644 OpenRA.Mods.RA/Buildings/SoundOnDamageTransition.cs create mode 100644 mods/cnc/bits/sandbag2.aud diff --git a/OpenRA.Mods.RA/Buildings/Building.cs b/OpenRA.Mods.RA/Buildings/Building.cs index c54729a961..9f17263dd5 100755 --- a/OpenRA.Mods.RA/Buildings/Building.cs +++ b/OpenRA.Mods.RA/Buildings/Building.cs @@ -29,10 +29,9 @@ namespace OpenRA.Mods.RA.Buildings public readonly string[] BuildSounds = {"placbldg.aud", "build5.aud"}; public readonly string[] SellSounds = {"cashturn.aud"}; - public readonly string DamagedSound = "kaboom1.aud"; - public readonly string DestroyedSound = "kaboom22.aud"; - public object Create(ActorInitializer init) { return new Building(init); } + + public object Create(ActorInitializer init) { return new Building(init, this); } public bool IsCloseEnoughToBase(World world, Player p, string buildingName, int2 topLeft) { @@ -73,11 +72,11 @@ namespace OpenRA.Mods.RA.Buildings public int2 PxPosition { get { return ( 2 * topLeft + Info.Dimensions ) * Game.CellSize / 2; } } - public Building(ActorInitializer init) + public Building(ActorInitializer init, BuildingInfo info) { this.self = init.self; this.topLeft = init.Get(); - this.Info = self.Info.Traits.Get(); + this.Info = info; this.PlayerPower = init.self.Owner.PlayerActor.Trait(); } @@ -95,12 +94,6 @@ namespace OpenRA.Mods.RA.Buildings // Power plants lose power with damage if (Info.Power > 0) PlayerPower.UpdateActor(self, GetPowerUsage()); - - if (e.DamageState == DamageState.Dead) - { - self.World.WorldActor.Trait().AddEffect(10, self.CenterLocation, 1); - Sound.Play(Info.DestroyedSound, self.CenterLocation); - } } public void ResolveOrder(Actor self, Order order) diff --git a/OpenRA.Mods.RA/Buildings/ShakeOnDeath.cs b/OpenRA.Mods.RA/Buildings/ShakeOnDeath.cs new file mode 100644 index 0000000000..64d3a14b63 --- /dev/null +++ b/OpenRA.Mods.RA/Buildings/ShakeOnDeath.cs @@ -0,0 +1,38 @@ +#region Copyright & License Information +/* + * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see LICENSE. + */ +#endregion + +using System; +using System.Collections.Generic; +using System.Linq; +using OpenRA.Traits; + +namespace OpenRA.Mods.RA.Buildings +{ + public class ShakeOnDeathInfo : ITraitInfo + { + public readonly int Intensity = 10; + public object Create(ActorInitializer init) { return new ShakeOnDeath(this); } + } + + public class ShakeOnDeath : INotifyDamage + { + readonly ShakeOnDeathInfo Info; + public ShakeOnDeath(ShakeOnDeathInfo info) + { + this.Info = info; + } + + public void Damaged(Actor self, AttackInfo e) + { + if (e.DamageState == DamageState.Dead) + self.World.WorldActor.Trait().AddEffect(Info.Intensity, self.CenterLocation, 1); + } + } +} diff --git a/OpenRA.Mods.RA/Buildings/SoundOnDamageTransition.cs b/OpenRA.Mods.RA/Buildings/SoundOnDamageTransition.cs new file mode 100644 index 0000000000..8a18bf97f4 --- /dev/null +++ b/OpenRA.Mods.RA/Buildings/SoundOnDamageTransition.cs @@ -0,0 +1,48 @@ +#region Copyright & License Information +/* + * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see LICENSE. + */ +#endregion + +using System; +using System.Collections.Generic; +using System.Linq; +using OpenRA.Graphics; +using OpenRA.Mods.RA.Buildings; +using OpenRA.Mods.RA.Effects; +using OpenRA.Traits; + +namespace OpenRA.Mods.RA.Render +{ + public class SoundOnDamageTransitionInfo : ITraitInfo + { + public readonly string DamagedSound; + public readonly string DestroyedSound; + + public object Create(ActorInitializer init) { return new SoundOnDamageTransition(this);} + } + + public class SoundOnDamageTransition : INotifyDamage + { + readonly SoundOnDamageTransitionInfo Info; + public SoundOnDamageTransition( SoundOnDamageTransitionInfo info ) + { + Info = info; + } + + public virtual void Damaged(Actor self, AttackInfo e) + { + if (!e.DamageStateChanged) + return; + + if (e.DamageState == DamageState.Dead) + Sound.Play(Info.DestroyedSound, self.CenterLocation); + else if (e.DamageState >= DamageState.Heavy && e.PreviousDamageState < DamageState.Heavy) + Sound.Play(Info.DamagedSound, self.CenterLocation); + } + } +} diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 9dabe345d1..c8c77b2507 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -1,4 +1,4 @@ - + Debug @@ -326,6 +326,8 @@ + + diff --git a/OpenRA.Mods.RA/Render/RenderBuilding.cs b/OpenRA.Mods.RA/Render/RenderBuilding.cs index 54177333ec..8867e46c55 100755 --- a/OpenRA.Mods.RA/Render/RenderBuilding.cs +++ b/OpenRA.Mods.RA/Render/RenderBuilding.cs @@ -107,10 +107,7 @@ namespace OpenRA.Mods.RA.Render self.World.AddFrameEndTask(w => w.Add(new Explosion(w, Traits.Util.CenterOfCell(cell), "building", false, 0))); } else if (e.DamageState >= DamageState.Heavy && e.PreviousDamageState < DamageState.Heavy) - { anim.ReplaceAnim("damaged-idle"); - Sound.Play(self.Info.Traits.Get().DamagedSound, self.CenterLocation); - } else if (e.DamageState < DamageState.Heavy) anim.ReplaceAnim("idle"); } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs index f6b35a935e..fc1ed8e561 100644 --- a/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs @@ -35,10 +35,7 @@ namespace OpenRA.Mods.RA.Render if (!e.DamageStateChanged) return; if (e.DamageState >= DamageState.Heavy && e.PreviousDamageState < DamageState.Heavy) - { anim.ReplaceAnim("damaged-idle"); - Sound.Play(self.Info.Traits.Get().DamagedSound, self.CenterLocation); - } else if (e.DamageState < DamageState.Heavy) anim.ReplaceAnim("idle"); } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingWall.cs b/OpenRA.Mods.RA/Render/RenderBuildingWall.cs index cd894bf1eb..602edb751c 100644 --- a/OpenRA.Mods.RA/Render/RenderBuildingWall.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingWall.cs @@ -35,24 +35,14 @@ namespace OpenRA.Mods.RA.Render { if (!e.DamageStateChanged) return; - var bi = self.Info.Traits.Get(); - if (e.DamageState == DamageState.Medium && anim.HasSequence("scratched-idle")) seqName = "scratched-idle"; else if (e.DamageState <= DamageState.Medium) seqName = "idle"; else if (e.DamageState == DamageState.Critical && anim.HasSequence("critical-idle")) - { seqName = "critical-idle"; - if (e.DamageState > e.PreviousDamageState) - Sound.Play(bi.DamagedSound, self.CenterLocation); - } else if (e.DamageState <= DamageState.Critical) - { seqName = "damaged-idle"; - if (e.DamageState > e.PreviousDamageState) - Sound.Play(bi.DamagedSound, self.CenterLocation); - } anim.PlayFetchIndex(seqName, () => adjacentWalls); } diff --git a/mods/cnc/bits/sandbag2.aud b/mods/cnc/bits/sandbag2.aud new file mode 100644 index 0000000000000000000000000000000000000000..b3b602415ad7ae6a219d4dfe99aecc160f66d6ed GIT binary patch literal 8075 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 BXRrVO literal 0 HcmV?d00001 diff --git a/mods/cnc/rules/defaults.yaml b/mods/cnc/rules/defaults.yaml index 30c0332679..6a19c57836 100644 --- a/mods/cnc/rules/defaults.yaml +++ b/mods/cnc/rules/defaults.yaml @@ -187,6 +187,7 @@ Footprint: x BuildSounds: constru2.aud, hvydoor1.aud SellSounds: cashturn.aud + SoundOnDamageTransition: DamagedSound: xplos.aud DestroyedSound: xplobig4.aud Buildable: @@ -208,6 +209,7 @@ Notification: strclost.aud EditorAppearance: RelativeToTopLeft: yes + ShakeOnDeath: ^CivBuilding: Inherits: ^Building @@ -243,8 +245,6 @@ BuildSounds: hvydoor1.aud Capturable: false BaseNormal: no - DamagedSound: - DestroyedSound: Adjacent: 7 TargetableBuilding: TargetTypes: Ground @@ -311,8 +311,9 @@ BelowUnits: Health: HP: 1000 - Building: + SoundOnDamageTransition: DamagedSound: xplos.aud DestroyedSound: xplobig4.aud + Building: Footprint: ______ ______ ______ ______ Dimensions: 6,4 diff --git a/mods/cnc/rules/structures.yaml b/mods/cnc/rules/structures.yaml index bb56a325e2..679a0b8e6b 100644 --- a/mods/cnc/rules/structures.yaml +++ b/mods/cnc/rules/structures.yaml @@ -569,8 +569,8 @@ BRIK: Type: Heavy Wall: CrushClasses: heavywall - CrushSound: - Building: + -CrushSound: + SoundOnDamageTransition: DestroyedSound: crumble.aud GUN: diff --git a/mods/ra/rules/defaults.yaml b/mods/ra/rules/defaults.yaml index 7149b35a5e..e1117c37da 100644 --- a/mods/ra/rules/defaults.yaml +++ b/mods/ra/rules/defaults.yaml @@ -130,6 +130,9 @@ Building: Dimensions: 1,1 Footprint: x + SoundOnDamageTransition: + DamagedSound: kaboom1.aud + DestroyedSound: kaboom22.aud RenderBuilding: RepairableBuilding: EmitInfantryOnSell: @@ -141,6 +144,7 @@ Notification: strucap1.aud EditorAppearance: RelativeToTopLeft: yes + ShakeOnDeath: ^Wall: AppearsOnRadar: @@ -150,9 +154,10 @@ BuildSounds: placbldg.aud Capturable: false BaseNormal: no + Adjacent: 7 + SoundOnDamageTransition: DamagedSound: sandbag2.aud DestroyedSound: sandbag2.aud - Adjacent: 7 Wall: CrushClasses: wall LineBuild: diff --git a/mods/ra/rules/structures.yaml b/mods/ra/rules/structures.yaml index 1bf328adad..aa2a446900 100755 --- a/mods/ra/rules/structures.yaml +++ b/mods/ra/rules/structures.yaml @@ -1135,7 +1135,7 @@ BRIK: Tooltip: Name: Concrete Wall Description: Stop units and blocks enemy fire. - Building: + SoundOnDamageTransition: DamagedSound: crmble2.aud DestroyedSound: kaboom30.aud Health: