Reduce mission music code duplication

This commit is contained in:
Scott_NZ
2012-12-31 17:37:54 +13:00
parent c8e84b3a11
commit 82809f27f7
6 changed files with 30 additions and 106 deletions

View File

@@ -16,6 +16,7 @@ using OpenRA.Mods.RA.Activities;
using OpenRA.Mods.RA.Air;
using OpenRA.Mods.RA.Buildings;
using OpenRA.Traits;
using OpenRA.Network;
namespace OpenRA.Mods.RA.Missions
{
@@ -141,5 +142,27 @@ namespace OpenRA.Mods.RA.Missions
{
return world.Actors.FirstOrDefault(a => a.HasTrait<Cargo>() && a.Trait<Cargo>().Passengers.Contains(actor));
}
public static void PlayMissionMusic()
{
if (!Rules.InstalledMusic.Any()) return;
Game.ConnectionStateChanged += StopMusic;
PlayMusic();
}
static void PlayMusic()
{
var track = Rules.InstalledMusic.Random(Game.CosmeticRandom);
Sound.PlayMusicThen(track.Value, PlayMusic);
}
static void StopMusic(OrderManager orderManager)
{
if (!orderManager.GameStarted)
{
Sound.StopMusic();
Game.ConnectionStateChanged -= StopMusic;
}
}
}
}