removing some noise from SVC

This commit is contained in:
Chris Forbes
2011-07-09 21:44:28 +12:00
committed by Paul Chote
parent 5b481c2445
commit 6565f7b32c

View File

@@ -9,6 +9,7 @@
#endregion #endregion
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using OpenRA.Traits; using OpenRA.Traits;
@@ -33,7 +34,7 @@ namespace OpenRA.Mods.RA
Actor self; Actor self;
StrategicVictoryConditionsInfo info; StrategicVictoryConditionsInfo info;
[Sync] public bool SplitHolds; [Sync] bool SplitHolds;
[Sync] public int TicksLeft = 0; [Sync] public int TicksLeft = 0;
[Sync] public int CriticalTicksLeft = 0; [Sync] public int CriticalTicksLeft = 0;
@@ -49,7 +50,7 @@ namespace OpenRA.Mods.RA
/// </summary> /// </summary>
public int Owned public int Owned
{ {
get { return (SplitHolds) ? CountOwnedPoints(false) : CountOwnedPoints(false) + OwnedCritical; } get { return CountOwnedPoints(false) + (SplitHolds ? 0 : OwnedCritical); }
} }
/// <summary> /// <summary>
@@ -60,11 +61,18 @@ namespace OpenRA.Mods.RA
get { return CountOwnedPoints(true); } get { return CountOwnedPoints(true); }
} }
IEnumerable<TraitPair<StrategicPoint>> AllPoints
{
get { return self.World.ActorsWithTrait<StrategicPoint>(); }
}
public int Total public int Total
{ {
get get
{ {
return (SplitHolds) ? self.World.Actors.Where(a => !a.Destroyed && a.HasTrait<StrategicPoint>() && a.TraitOrDefault<StrategicPoint>().Critical == false).Count() : self.World.Actors.Where(a => a.HasTrait<StrategicPoint>()).Count(); return SplitHolds
? AllPoints.Count( a => a.Trait.Critical )
: AllPoints.Count();
} }
} }
@@ -72,24 +80,14 @@ namespace OpenRA.Mods.RA
{ {
get get
{ {
return self.World.Actors.Where(a => !a.Destroyed && a.HasTrait<StrategicPoint>() && a.TraitOrDefault<StrategicPoint>().Critical).Count(); return AllPoints.Count( a => a.Trait.Critical );
} }
} }
public int CountOwnedPoints(bool critical) public int CountOwnedPoints(bool critical)
{ {
int total = 0; return AllPoints.Count( a => a.Trait.Critical == critical &&
WorldUtils.AreMutualAllies( self.Owner, a.Actor.Owner ));
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<StrategicPoint>()
.Where(a => a.Actor.Owner == p)
.Count(a => a.Trait.Critical == critical);
}
}
return total;
} }
public bool HoldingCritical public bool HoldingCritical
@@ -187,13 +185,9 @@ namespace OpenRA.Mods.RA
var cvc = p.PlayerActor.Trait<ConquestVictoryConditions>(); var cvc = p.PlayerActor.Trait<ConquestVictoryConditions>();
if (p.WinState == WinState.Undefined && WorldUtils.AreMutualAllies(self.Owner, p)) if (p.WinState == WinState.Undefined && WorldUtils.AreMutualAllies(self.Owner, p))
{
cvc.Win(p.PlayerActor); cvc.Win(p.PlayerActor);
}
else if (p.WinState == WinState.Undefined) else if (p.WinState == WinState.Undefined)
{
cvc.Lose(p.PlayerActor); cvc.Lose(p.PlayerActor);
}
} }
} }
} }