Add support for random sounds to AmbientSound

This commit is contained in:
reaperrr
2017-04-22 13:05:51 +02:00
parent d9eb224c77
commit 1e63013eb1
6 changed files with 16 additions and 9 deletions

View File

@@ -18,7 +18,7 @@ namespace OpenRA.Mods.Common.Traits.Sound
class AmbientSoundInfo : ConditionalTraitInfo
{
[FieldLoader.Require]
public readonly string SoundFile = null;
public readonly string[] SoundFiles = null;
[Desc("Initial delay (in ticks) before playing the sound for the first time.",
"Two values indicate a random delay range.")]
@@ -74,16 +74,18 @@ namespace OpenRA.Mods.Common.Traits.Sound
void StartSound(Actor self)
{
var sound = Info.SoundFiles.RandomOrDefault(Game.CosmeticRandom);
ISound s;
if (self.OccupiesSpace != null)
{
cachedPosition = self.CenterPosition;
s = loop ? Game.Sound.PlayLooped(SoundType.World, Info.SoundFile, cachedPosition) :
Game.Sound.Play(SoundType.World, Info.SoundFile, self.CenterPosition);
s = loop ? Game.Sound.PlayLooped(SoundType.World, sound, cachedPosition) :
Game.Sound.Play(SoundType.World, sound, self.CenterPosition);
}
else
s = loop ? Game.Sound.PlayLooped(SoundType.World, Info.SoundFile) :
Game.Sound.Play(SoundType.World, Info.SoundFile);
s = loop ? Game.Sound.PlayLooped(SoundType.World, sound) :
Game.Sound.Play(SoundType.World, sound);
currentSounds.Add(s);
}

View File

@@ -596,6 +596,11 @@ namespace OpenRA.Mods.Common.UtilityCommands
RenameNodeKey(node, "-AcceptsDeliveredCash");
}
// Add random sound support to AmbientSound
if (engineVersion < 20170422)
if (node.Key == "SoundFile" && parent.Key.StartsWith("AmbientSound", StringComparison.Ordinal))
RenameNodeKey(node, "SoundFiles");
UpgradeActorRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
}

View File

@@ -773,7 +773,7 @@ OBLI:
ChargingCondition: charging
AmbientSound:
RequiresCondition: charging
SoundFile: obelpowr.aud
SoundFiles: obelpowr.aud
Interval: 30, 40
-EmitInfantryOnSell:
DetectCloaked:

View File

@@ -82,7 +82,7 @@ sandworm:
Sequences: lightninga, lightningb, lightningc, lightningd, lightninge, lightningf
RequiresCondition: !attacking
AmbientSound:
SoundFile: WRMSIGN1.WAV
SoundFiles: WRMSIGN1.WAV
Interval: 160
RequiresCondition: !attacking
WithAttackOverlay@mouth:

View File

@@ -111,7 +111,7 @@ thumper:
Sequence: thump-sand
RequiresCondition: deployed
AmbientSound:
SoundFile: THUMPER1.WAV
SoundFiles: THUMPER1.WAV
Interval: 60
RequiresCondition: deployed
AttractsWorms:

View File

@@ -113,7 +113,7 @@ NAOBEL:
ChargingCondition: charging
AmbientSound:
RequiresCondition: charging
SoundFile: obelpowr.aud
SoundFiles: obelpowr.aud
Interval: 30, 40
WithChargeOverlay:
Palette: player