From 82809f27f7bfaa7c3fa2b5c43f8c305d6381387f Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Mon, 31 Dec 2012 17:37:54 +1300 Subject: [PATCH] Reduce mission music code duplication --- OpenRA.Mods.RA/Missions/Allies01Script.cs | 22 +--------------- OpenRA.Mods.RA/Missions/Allies02Script.cs | 22 +--------------- OpenRA.Mods.RA/Missions/Allies03Script.cs | 22 +--------------- OpenRA.Mods.RA/Missions/Allies04Script.cs | 25 +++---------------- OpenRA.Mods.RA/Missions/MissionUtils.cs | 23 +++++++++++++++++ .../Missions/Soviet01ClassicScript.cs | 22 +--------------- 6 files changed, 30 insertions(+), 106 deletions(-) diff --git a/OpenRA.Mods.RA/Missions/Allies01Script.cs b/OpenRA.Mods.RA/Missions/Allies01Script.cs index 73cc011b9d..96b921881c 100644 --- a/OpenRA.Mods.RA/Missions/Allies01Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies01Script.cs @@ -324,35 +324,15 @@ namespace OpenRA.Mods.RA.Missions alliesRes.TakeCash(alliesRes.Cash); alliesRes.TakeOre(alliesRes.Ore); Game.MoveViewport(insertionLZ.Location.ToFloat2()); - Game.ConnectionStateChanged += StopMusic; Media.PlayFMVFullscreen(w, "ally1.vqa", () => { Media.PlayFMVFullscreen(w, "landing.vqa", () => { InsertTanyaAtLZ(); SendPatrol(); - PlayMusic(); + MissionUtils.PlayMissionMusic(); }); }); } - - void PlayMusic() - { - if (!Rules.InstalledMusic.Any()) - { - return; - } - var track = Rules.InstalledMusic.Random(Game.CosmeticRandom); - Sound.PlayMusicThen(track.Value, PlayMusic); - } - - void StopMusic(OrderManager orderManager) - { - if (!orderManager.GameStarted) - { - Sound.StopMusic(); - Game.ConnectionStateChanged -= StopMusic; - } - } } } diff --git a/OpenRA.Mods.RA/Missions/Allies02Script.cs b/OpenRA.Mods.RA/Missions/Allies02Script.cs index 7195024b44..915b06e0a8 100644 --- a/OpenRA.Mods.RA/Missions/Allies02Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies02Script.cs @@ -569,8 +569,7 @@ namespace OpenRA.Mods.RA.Missions { Game.MoveViewport(allies2BasePoint.Location.ToFloat2()); } - PlayMusic(); - Game.ConnectionStateChanged += StopMusic; + MissionUtils.PlayMissionMusic(); } void SetupAlliedBase(Dictionary actors) @@ -588,24 +587,5 @@ namespace OpenRA.Mods.RA.Missions }); }); } - - void PlayMusic() - { - if (!Rules.InstalledMusic.Any()) - { - return; - } - var track = Rules.InstalledMusic.Random(Game.CosmeticRandom); - Sound.PlayMusicThen(track.Value, PlayMusic); - } - - void StopMusic(OrderManager orderManager) - { - if (!orderManager.GameStarted) - { - Sound.StopMusic(); - Game.ConnectionStateChanged -= StopMusic; - } - } } } diff --git a/OpenRA.Mods.RA/Missions/Allies03Script.cs b/OpenRA.Mods.RA/Missions/Allies03Script.cs index 3bc6cdc782..7f10b97dbb 100644 --- a/OpenRA.Mods.RA/Missions/Allies03Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies03Script.cs @@ -472,28 +472,8 @@ namespace OpenRA.Mods.RA.Missions { Game.MoveViewport(allies2EntryPoint.Location.ToFloat2()); } - PlayMusic(); OnObjectivesUpdated(false); - Game.ConnectionStateChanged += StopMusic; - } - - void PlayMusic() - { - if (!Rules.InstalledMusic.Any()) - { - return; - } - var track = Rules.InstalledMusic.Random(Game.CosmeticRandom); - Sound.PlayMusicThen(track.Value, PlayMusic); - } - - void StopMusic(OrderManager orderManager) - { - if (!orderManager.GameStarted) - { - Sound.StopMusic(); - Game.ConnectionStateChanged -= StopMusic; - } + MissionUtils.PlayMissionMusic(); } } } diff --git a/OpenRA.Mods.RA/Missions/Allies04Script.cs b/OpenRA.Mods.RA/Missions/Allies04Script.cs index 54c0912277..c4ba3db36b 100644 --- a/OpenRA.Mods.RA/Missions/Allies04Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies04Script.cs @@ -34,11 +34,12 @@ namespace OpenRA.Mods.RA.Missions Dictionary objectives = new Dictionary { { InfiltrateID, new Objective(ObjectiveType.Primary, "", ObjectiveStatus.InProgress) }, - { DestroyID, new Objective(ObjectiveType.Primary, "Secure the laboratory and destroy the rest of the Soviet base. Ensure that the laboratory is not destroyed.", ObjectiveStatus.Inactive) } + { DestroyID, new Objective(ObjectiveType.Primary, Destroy, ObjectiveStatus.Inactive) } }; const int InfiltrateID = 0; const int DestroyID = 1; + const string Destroy = "Secure the laboratory and destroy the rest of the Soviet base. Ensure that the laboratory is not destroyed."; const string Infiltrate = "The Soviets are currently developing a new defensive system named the \"Iron Curtain\" at their main research laboratory. Get our {0} into the laboratory undetected."; Actor lstEntryPoint; @@ -415,27 +416,7 @@ namespace OpenRA.Mods.RA.Missions OnObjectivesUpdated(false); SetupSubStances(); Game.MoveViewport(lstEntryPoint.Location.ToFloat2()); - PlayMusic(); - Game.ConnectionStateChanged += StopMusic; - } - - void PlayMusic() - { - if (!Rules.InstalledMusic.Any()) - { - return; - } - var track = Rules.InstalledMusic.Random(Game.CosmeticRandom); - Sound.PlayMusicThen(track.Value, PlayMusic); - } - - void StopMusic(OrderManager orderManager) - { - if (!orderManager.GameStarted) - { - Sound.StopMusic(); - Game.ConnectionStateChanged -= StopMusic; - } + MissionUtils.PlayMissionMusic(); } } diff --git a/OpenRA.Mods.RA/Missions/MissionUtils.cs b/OpenRA.Mods.RA/Missions/MissionUtils.cs index 3c0e7391cc..9bdde04711 100644 --- a/OpenRA.Mods.RA/Missions/MissionUtils.cs +++ b/OpenRA.Mods.RA/Missions/MissionUtils.cs @@ -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() && a.Trait().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; + } + } } } diff --git a/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs b/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs index 2a2d0b203e..16cd8fdff2 100644 --- a/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs +++ b/OpenRA.Mods.RA/Missions/Soviet01ClassicScript.cs @@ -135,32 +135,12 @@ namespace OpenRA.Mods.RA.Missions airfield3 = actors["Airfield3"]; airfields = new[] { airfield1, airfield2, airfield3 }; Game.MoveViewport(startJeep.Location.ToFloat2()); - Game.ConnectionStateChanged += StopMusic; Media.PlayFMVFullscreen(w, "soviet1.vqa", () => { - PlayMusic(); + MissionUtils.PlayMissionMusic(); LandYaks(); MoveJeep(); }); } - - void PlayMusic() - { - if (!Rules.InstalledMusic.Any()) - { - return; - } - var track = Rules.InstalledMusic.Random(Game.CosmeticRandom); - Sound.PlayMusicThen(track.Value, PlayMusic); - } - - void StopMusic(OrderManager orderManager) - { - if (!orderManager.GameStarted) - { - Sound.StopMusic(); - Game.ConnectionStateChanged -= StopMusic; - } - } } }