From 18c9a719ac75c83a455ce00ee878d7b12677dc0d Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 19 May 2011 18:58:17 +1200 Subject: [PATCH] Mission Accomplished / Lost notifications (cnc + ra) --- OpenRA.Mods.RA/ConquestVictoryConditions.cs | 23 +++++++++++++++---- .../Strategic/StrategicVictoryConditions.cs | 2 +- mods/cnc/rules/system.yaml | 2 ++ mods/ra/rules/system.yaml | 2 ++ 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/OpenRA.Mods.RA/ConquestVictoryConditions.cs b/OpenRA.Mods.RA/ConquestVictoryConditions.cs index 9a0d770c4c..867cf3c0a6 100644 --- a/OpenRA.Mods.RA/ConquestVictoryConditions.cs +++ b/OpenRA.Mods.RA/ConquestVictoryConditions.cs @@ -13,10 +13,19 @@ using OpenRA.Traits; namespace OpenRA.Mods.RA { - public class ConquestVictoryConditionsInfo : TraitInfo { } + public class ConquestVictoryConditionsInfo : ITraitInfo + { + public string WinNotification = null; + public string LoseNotification = null; + + public object Create(ActorInitializer init) { return new ConquestVictoryConditions(this); } + } public class ConquestVictoryConditions : ITick, IResolveOrder { + ConquestVictoryConditionsInfo Info; + public ConquestVictoryConditions(ConquestVictoryConditionsInfo info) { Info = info; } + public void Tick(Actor self) { if (self.Owner.WinState != WinState.Undefined || self.Owner.NonCombatant) return; @@ -25,7 +34,7 @@ namespace OpenRA.Mods.RA .Any( a => a.Actor.Owner == self.Owner ); if (!hasAnything && !self.Owner.NonCombatant) - Surrender(self); + Lose(self); var others = self.World.players.Where( p => !p.Value.NonCombatant && p.Value != self.Owner && p.Value.Stances[self.Owner] != Stance.Ally ); @@ -39,10 +48,10 @@ namespace OpenRA.Mods.RA public void ResolveOrder(Actor self, Order order) { if (order.OrderString == "Surrender") - Surrender(self); + Lose(self); } - public void Surrender(Actor self) + public void Lose(Actor self) { if (self.Owner.WinState == WinState.Lost) return; self.Owner.WinState = WinState.Lost; @@ -53,7 +62,10 @@ namespace OpenRA.Mods.RA a.Kill(a); if (self.Owner == self.World.LocalPlayer) + { self.World.LocalShroud.Disabled = true; + Sound.Play(Info.LoseNotification); + } } public void Win(Actor self) @@ -63,7 +75,10 @@ namespace OpenRA.Mods.RA Game.Debug("{0} is victorious.".F(self.Owner.PlayerName)); if (self.Owner == self.World.LocalPlayer) + { self.World.LocalShroud.Disabled = true; + Sound.Play(Info.WinNotification); + } } } diff --git a/OpenRA.Mods.RA/Strategic/StrategicVictoryConditions.cs b/OpenRA.Mods.RA/Strategic/StrategicVictoryConditions.cs index 4b5b2294bb..67d989cca5 100644 --- a/OpenRA.Mods.RA/Strategic/StrategicVictoryConditions.cs +++ b/OpenRA.Mods.RA/Strategic/StrategicVictoryConditions.cs @@ -205,7 +205,7 @@ namespace OpenRA.Mods.RA } else if (p.WinState == WinState.Undefined) { - cvc.Surrender(p.PlayerActor); + cvc.Lose(p.PlayerActor); } } } diff --git a/mods/cnc/rules/system.yaml b/mods/cnc/rules/system.yaml index c4a55ae4f6..4279a35d4a 100644 --- a/mods/cnc/rules/system.yaml +++ b/mods/cnc/rules/system.yaml @@ -3,6 +3,8 @@ Player: TechTree: SupportPowerManager: ConquestVictoryConditions: + WinNotification:accom1.aud + LoseNotification:fail1.aud PowerManager: PlayerResources: InitialCash: 5000 diff --git a/mods/ra/rules/system.yaml b/mods/ra/rules/system.yaml index 65c7a2aedb..824797a5b3 100644 --- a/mods/ra/rules/system.yaml +++ b/mods/ra/rules/system.yaml @@ -31,6 +31,8 @@ Player: PlaceBuilding: SupportPowerManager: ConquestVictoryConditions: + WinNotification:misnwon1.aud + LoseNotification:misnlst1.aud PowerManager: PlayerResources: InitialCash: 5000