From 6565f7b32c9759206df4efd920fc6d56eebd82da Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sat, 9 Jul 2011 21:44:28 +1200 Subject: [PATCH] removing some noise from SVC --- .../Strategic/StrategicVictoryConditions.cs | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/OpenRA.Mods.RA/Strategic/StrategicVictoryConditions.cs b/OpenRA.Mods.RA/Strategic/StrategicVictoryConditions.cs index f1efd48a7e..27a2611b5e 100644 --- a/OpenRA.Mods.RA/Strategic/StrategicVictoryConditions.cs +++ b/OpenRA.Mods.RA/Strategic/StrategicVictoryConditions.cs @@ -9,6 +9,7 @@ #endregion using System; +using System.Collections.Generic; using System.Linq; using OpenRA.Traits; @@ -33,7 +34,7 @@ namespace OpenRA.Mods.RA Actor self; StrategicVictoryConditionsInfo info; - [Sync] public bool SplitHolds; + [Sync] bool SplitHolds; [Sync] public int TicksLeft = 0; [Sync] public int CriticalTicksLeft = 0; @@ -49,7 +50,7 @@ namespace OpenRA.Mods.RA /// public int Owned { - get { return (SplitHolds) ? CountOwnedPoints(false) : CountOwnedPoints(false) + OwnedCritical; } + get { return CountOwnedPoints(false) + (SplitHolds ? 0 : OwnedCritical); } } /// @@ -60,11 +61,18 @@ namespace OpenRA.Mods.RA get { return CountOwnedPoints(true); } } + IEnumerable> AllPoints + { + get { return self.World.ActorsWithTrait(); } + } + public int Total { get { - return (SplitHolds) ? self.World.Actors.Where(a => !a.Destroyed && a.HasTrait() && a.TraitOrDefault().Critical == false).Count() : self.World.Actors.Where(a => a.HasTrait()).Count(); + return SplitHolds + ? AllPoints.Count( a => a.Trait.Critical ) + : AllPoints.Count(); } } @@ -72,24 +80,14 @@ namespace OpenRA.Mods.RA { get { - return self.World.Actors.Where(a => !a.Destroyed && a.HasTrait() && a.TraitOrDefault().Critical).Count(); + return AllPoints.Count( a => a.Trait.Critical ); } } public int CountOwnedPoints(bool critical) { - int total = 0; - - foreach (var p in self.World.Players) - { - if (p == self.Owner || (p.Stances[self.Owner] == Stance.Ally && self.Owner.Stances[p] == Stance.Ally)) - { - total += self.World.ActorsWithTrait() - .Where(a => a.Actor.Owner == p) - .Count(a => a.Trait.Critical == critical); - } - } - return total; + return AllPoints.Count( a => a.Trait.Critical == critical && + WorldUtils.AreMutualAllies( self.Owner, a.Actor.Owner )); } public bool HoldingCritical @@ -187,13 +185,9 @@ namespace OpenRA.Mods.RA var cvc = p.PlayerActor.Trait(); if (p.WinState == WinState.Undefined && WorldUtils.AreMutualAllies(self.Owner, p)) - { cvc.Win(p.PlayerActor); - } else if (p.WinState == WinState.Undefined) - { cvc.Lose(p.PlayerActor); - } } } }