From 8dd7bfdb6712ff6020d150b2c6a13720f17bf8b1 Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Fri, 21 Sep 2012 00:02:09 +1200 Subject: [PATCH] Move the objective flag stuff to MissionUtils --- OpenRA.Mods.RA/Missions/Allies01Script.cs | 26 ++++++++++------------- OpenRA.Mods.RA/Missions/MissionUtils.cs | 21 ++++++++++++++++++ 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/OpenRA.Mods.RA/Missions/Allies01Script.cs b/OpenRA.Mods.RA/Missions/Allies01Script.cs index fd408f1631..af861cd531 100644 --- a/OpenRA.Mods.RA/Missions/Allies01Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies01Script.cs @@ -36,39 +36,35 @@ namespace OpenRA.Mods.RA.Missions IEnumerable GetObjectiveText() { var objectives = new List(); - if (HasObjective(Objectives.FindEinstein)) + if (MissionUtils.HasFlag(currentObjectives, Objectives.FindEinstein)) { objectives.Add("Find Einstein. Tanya and Einstein must survive."); } - if (HasObjective(Objectives.WaitForHelicopter)) + if (MissionUtils.HasFlag(currentObjectives, Objectives.WaitForHelicopter)) { objectives.Add("Wait for the helicopter and extract Einstein. Tanya and Einstein must survive."); } return objectives; } - bool HasObjective(Objectives o) + void DisplayObjective(string objective) { - return (currentObjectives & o) == o; + Game.AddChatLine(Color.LimeGreen, "Objective", objective); + Sound.Play("bleep6.aud"); } - void AddObjective(Objectives o) + void DisplayHint(string objective) { - currentObjectives |= o; - } - - void RemoveObjective(Objectives o) - { - currentObjectives &= ~o; + Game.AddChatLine(Color.Yellow, "Hint", objective); + Sound.Play("bleep6.aud"); } void DisplayObjectives() { foreach (var objective in GetObjectiveText()) { - Game.AddChatLine(Color.LimeGreen, "Objective", objective); + DisplayObjective(objective); } - Sound.Play("bleep6.aud"); } Objectives currentObjectives = Objectives.FindEinstein; @@ -149,7 +145,7 @@ namespace OpenRA.Mods.RA.Missions { Sound.Play(Taunts[world.SharedRandom.Next(Taunts.Length)]); } - if (HasObjective(Objectives.FindEinstein)) + if (MissionUtils.HasFlag(currentObjectives, Objectives.FindEinstein)) { if (AlliesControlLab()) { @@ -166,7 +162,7 @@ namespace OpenRA.Mods.RA.Missions MissionFailed("Einstein was killed."); } } - else if (HasObjective(Objectives.WaitForHelicopter)) + else if (MissionUtils.HasFlag(currentObjectives, Objectives.WaitForHelicopter)) { if (world.FrameNumber >= currentAttackWaveFrameNumber + 600) { diff --git a/OpenRA.Mods.RA/Missions/MissionUtils.cs b/OpenRA.Mods.RA/Missions/MissionUtils.cs index fc4cbb6b35..46d98d079b 100644 --- a/OpenRA.Mods.RA/Missions/MissionUtils.cs +++ b/OpenRA.Mods.RA/Missions/MissionUtils.cs @@ -87,5 +87,26 @@ namespace OpenRA.Mods.RA.Missions .Where(a => a.Actor.Owner == player && a.Trait.Info.Type == category) .Select(a => a.Trait); } + + public static T AddFlag(T flags, T flag) + { + var fs = Convert.ToInt32(flags); + var f = Convert.ToInt32(flag); + return (T)(object)(fs | f); + } + + public static T RemoveFlag(T flags, T flag) + { + var fs = Convert.ToInt32(flags); + var f = Convert.ToInt32(flag); + return (T)(object)(fs & ~f); + } + + public static bool HasFlag(T flags, T flag) + { + var fs = Convert.ToInt32(flags); + var f = Convert.ToInt32(flag); + return (fs & f) == f; + } } }