From a99f69035c51d2465a6999a8c466d6c50c0a7c44 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Sat, 23 May 2015 13:04:45 +0200 Subject: [PATCH] Made AnnounceOnKill and AnnounceOnBuild voices customisable. --- .../Traits/Sound/AnnounceOnBuild.cs | 17 +++++++++++++++-- .../Traits/Sound/AnnounceOnKill.cs | 5 ++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Sound/AnnounceOnBuild.cs b/OpenRA.Mods.Common/Traits/Sound/AnnounceOnBuild.cs index f2b4188cc9..f2fb745b6f 100644 --- a/OpenRA.Mods.Common/Traits/Sound/AnnounceOnBuild.cs +++ b/OpenRA.Mods.Common/Traits/Sound/AnnounceOnBuild.cs @@ -13,13 +13,26 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { [Desc("Play the Build voice of this actor when trained.")] - public class AnnounceOnBuildInfo : TraitInfo { } + public class AnnounceOnBuildInfo : ITraitInfo + { + [Desc("Voice to use when built/trained.")] + public readonly string BuildVoice = "Build"; + + public object Create(ActorInitializer init) { return new AnnounceOnBuild(init.Self, this); } + } public class AnnounceOnBuild : INotifyBuildComplete { + readonly AnnounceOnBuildInfo info; + + public AnnounceOnBuild(Actor self, AnnounceOnBuildInfo info) + { + this.info = info; + } + public void BuildingComplete(Actor self) { - self.PlayVoice("Build"); + self.PlayVoice(info.BuildVoice); } } } diff --git a/OpenRA.Mods.Common/Traits/Sound/AnnounceOnKill.cs b/OpenRA.Mods.Common/Traits/Sound/AnnounceOnKill.cs index e5d552d2fc..64713a8b82 100644 --- a/OpenRA.Mods.Common/Traits/Sound/AnnounceOnKill.cs +++ b/OpenRA.Mods.Common/Traits/Sound/AnnounceOnKill.cs @@ -18,6 +18,9 @@ namespace OpenRA.Mods.Common.Traits [Desc("Minimum duration (in seconds) between sound events.")] public readonly int Interval = 5; + [Desc("Voice to use when killing something.")] + public readonly string KillVoice = "Kill"; + public object Create(ActorInitializer init) { return new AnnounceOnKill(init.Self, this); } } @@ -39,7 +42,7 @@ namespace OpenRA.Mods.Common.Traits if (e.DamageState == DamageState.Dead && damaged != e.Attacker) { if (self.World.WorldTick - lastAnnounce > info.Interval * 25) - self.PlayVoice("Kill"); + self.PlayVoice(info.KillVoice); lastAnnounce = self.World.WorldTick; }