Make Voiced trait conditional

This commit is contained in:
michaeldgg2
2023-07-08 21:05:28 +02:00
committed by Gustas
parent 21c21e4963
commit 433d69af7a

View File

@@ -14,7 +14,7 @@ using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
{
[Desc("This actor has a voice.")]
public class VoicedInfo : TraitInfo
public class VoicedInfo : ConditionalTraitInfo
{
[VoiceSetReference]
[FieldLoader.Require]
@@ -27,19 +27,18 @@ namespace OpenRA.Mods.Common.Traits
public override object Create(ActorInitializer init) { return new Voiced(this); }
}
public class Voiced : IVoiced
public class Voiced : ConditionalTrait<VoicedInfo>, IVoiced
{
public readonly VoicedInfo Info;
public Voiced(VoicedInfo info)
{
Info = info;
}
: base(info) { }
string IVoiced.VoiceSet => Info.VoiceSet;
bool IVoiced.PlayVoice(Actor self, string phrase, string variant)
{
if (IsTraitDisabled)
return false;
if (phrase == null)
return false;
@@ -53,6 +52,9 @@ namespace OpenRA.Mods.Common.Traits
bool IVoiced.PlayVoiceLocal(Actor self, string phrase, string variant, float volume)
{
if (IsTraitDisabled)
return false;
if (phrase == null)
return false;
@@ -65,6 +67,9 @@ namespace OpenRA.Mods.Common.Traits
bool IVoiced.HasVoice(Actor self, string voice)
{
if (IsTraitDisabled)
return false;
if (string.IsNullOrEmpty(Info.VoiceSet))
return false;