remove some more bits

This commit is contained in:
Chris Forbes
2011-04-10 10:22:01 +12:00
parent c2966978f3
commit c4a72f016a

View File

@@ -8,10 +8,10 @@
*/ */
#endregion #endregion
using System.Collections.Generic;
using System.Linq; using System.Linq;
using OpenRA.Effects; using OpenRA.Effects;
using OpenRA.Traits; using OpenRA.Traits;
using System.Collections.Generic;
namespace OpenRA.Mods.RA namespace OpenRA.Mods.RA
{ {
@@ -27,9 +27,6 @@ namespace OpenRA.Mods.RA
public class ProximityCapturable : ITick, ISync public class ProximityCapturable : ITick, ISync
{ {
[Sync]
public Player Owner { get { return Captured ? Self.Owner : OriginalOwner; } }
[Sync] [Sync]
public readonly Player OriginalOwner; public readonly Player OriginalOwner;
@@ -66,10 +63,10 @@ namespace OpenRA.Mods.RA
} }
// if the area must be clear, and there is more than 1 player nearby => return ownership to default // if the area must be clear, and there is more than 1 player nearby => return ownership to default
if (Info.MustBeClear && !IsClear(self, Owner, OriginalOwner)) if (Info.MustBeClear && !IsClear(self, self.Owner, OriginalOwner))
{ {
// Revert Ownership // Revert Ownership
ChangeOwnership(self, Owner, OriginalOwner); ChangeOwnership(self, self.Owner, OriginalOwner);
return; return;
} }
@@ -81,12 +78,12 @@ namespace OpenRA.Mods.RA
if (captor != null) // got one if (captor != null) // got one
{ {
ChangeOwnership(self, captor, Owner); ChangeOwnership(self, captor, self.Owner);
return; return;
} }
// Revert Ownership otherwise // Revert Ownership otherwise
ChangeOwnership(self, Owner, OriginalOwner); ChangeOwnership(self, self.Owner, OriginalOwner);
} }
} }
@@ -145,12 +142,14 @@ namespace OpenRA.Mods.RA
IEnumerable<Actor> UnitsInRange() IEnumerable<Actor> UnitsInRange()
{ {
return Self.World.FindUnitsInCircle(Self.CenterLocation, Game.CellSize * Info.Range); return Self.World.FindUnitsInCircle(Self.CenterLocation, Game.CellSize * Info.Range)
.Where(a => a.IsInWorld && a != Self && !a.Destroyed)
.Where(a => !a.Owner.NonCombatant);
} }
bool IsClear(Actor self, Player currentOwner, Player originalOwner) bool IsClear(Actor self, Player currentOwner, Player originalOwner)
{ {
return UnitsInRange().Where(a => !a.Destroyed && a.IsInWorld && a != self && !a.Owner.NonCombatant && a.Owner != originalOwner) return UnitsInRange().Where(a => a.Owner != originalOwner)
.Where(a => a.Owner != currentOwner) .Where(a => a.Owner != currentOwner)
.Where(a => CanBeCapturedBy(a)) .Where(a => CanBeCapturedBy(a))
.All(a => AreMutualAllies(a.Owner, currentOwner)); .All(a => AreMutualAllies(a.Owner, currentOwner));
@@ -160,7 +159,7 @@ namespace OpenRA.Mods.RA
bool IsStillInRange(Actor self) bool IsStillInRange(Actor self)
{ {
return UnitsInRange() return UnitsInRange()
.Where(a => a.Owner == self.Owner && !a.Destroyed && a.IsInWorld && a != self) .Where(a => a.Owner == self.Owner)
.Where(a => CanBeCapturedBy(a)) .Where(a => CanBeCapturedBy(a))
.Any(); .Any();
} }
@@ -168,9 +167,7 @@ namespace OpenRA.Mods.RA
IEnumerable<Actor> CaptorsInRange(Actor self) IEnumerable<Actor> CaptorsInRange(Actor self)
{ {
return UnitsInRange() return UnitsInRange()
.Where(a => a.Owner != OriginalOwner && !a.Destroyed && a.IsInWorld && a != self) .Where(a => a.Owner != OriginalOwner)
.Where(a => !a.Owner.PlayerRef.OwnsWorld)
.Where(a => !a.Owner.PlayerRef.NonCombatant)
.Where(a => CanBeCapturedBy(a)); .Where(a => CanBeCapturedBy(a));
} }