Changed: Owner maps to Self.Owner now IF captured, otherwise returns the OriginalOwner

This commit is contained in:
geckosoft
2010-11-15 05:39:29 +01:00
committed by Chris Forbes
parent 78dea9eecb
commit fbb117705e

View File

@@ -19,7 +19,7 @@ namespace OpenRA.Mods.RA
public class ProximityCapturable : ITick public class ProximityCapturable : ITick
{ {
[Sync] [Sync]
public Player Owner; public Player Owner { get { return Captured ? Self.Owner : OriginalOwner; } }
[Sync] [Sync]
public readonly Player OriginalOwner; public readonly Player OriginalOwner;
@@ -38,21 +38,16 @@ namespace OpenRA.Mods.RA
[Sync] [Sync]
public bool MustBeClear = false; public bool MustBeClear = false;
public Actor Self;
public ProximityCapturable(Actor self, ProximityCapturableInfo info) public ProximityCapturable(Actor self, ProximityCapturableInfo info)
{ {
Owner = self.Owner;
OriginalOwner = Owner;
Info = info; Info = info;
Range = info.Range; Range = info.Range;
Permanent = info.Permanent; Permanent = info.Permanent;
MustBeClear = info.MustBeClear; MustBeClear = info.MustBeClear;
} Self = self;
OriginalOwner = self.Owner;
public Player GetCurrentOwner()
{
if (!Captured) return OriginalOwner;
return Owner ?? OriginalOwner;
} }
public void Tick(Actor self) public void Tick(Actor self)
@@ -76,7 +71,7 @@ namespace OpenRA.Mods.RA
if (MustBeClear && playersNear != 1) if (MustBeClear && playersNear != 1)
{ {
// Revert Ownership // Revert Ownership
ChangeOwnership(self, GetCurrentOwner(), OriginalOwner); ChangeOwnership(self, Owner, OriginalOwner);
} }
// See if the 'temporary' owner still is in range // See if the 'temporary' owner still is in range
else if (!IsStillInRange(self, self.Owner, Range)) else if (!IsStillInRange(self, self.Owner, Range))
@@ -86,12 +81,12 @@ namespace OpenRA.Mods.RA
if (captor != null) // got one if (captor != null) // got one
{ {
ChangeOwnership(self, captor, GetCurrentOwner()); ChangeOwnership(self, captor, Owner);
return; return;
} }
// Revert Ownership otherwise // Revert Ownership otherwise
ChangeOwnership(self, GetCurrentOwner(), OriginalOwner); ChangeOwnership(self, Owner, OriginalOwner);
} }
} }
@@ -110,7 +105,6 @@ namespace OpenRA.Mods.RA
w.Add(new FlashTarget(self)); w.Add(new FlashTarget(self));
Captured = false; Captured = false;
Owner = null;
foreach (var t in self.TraitsImplementing<INotifyCapture>()) foreach (var t in self.TraitsImplementing<INotifyCapture>())
t.OnCapture(self, self, previousOwner, self.Owner); t.OnCapture(self, self, previousOwner, self.Owner);
@@ -132,7 +126,6 @@ namespace OpenRA.Mods.RA
w.Add(new FlashTarget(self)); w.Add(new FlashTarget(self));
Captured = true; Captured = true;
Owner = captor.Owner;
foreach (var t in self.TraitsImplementing<INotifyCapture>()) foreach (var t in self.TraitsImplementing<INotifyCapture>())
t.OnCapture(self, captor, previousOwner, self.Owner); t.OnCapture(self, captor, previousOwner, self.Owner);
@@ -145,7 +138,7 @@ namespace OpenRA.Mods.RA
var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range); var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range);
return unitsInRange return unitsInRange
.Where(a => a.Owner != null && a.Owner == currentOwner && !a.Destroyed && a.IsInWorld && a != self) .Where(a => a.Owner == currentOwner && !a.Destroyed && a.IsInWorld && a != self)
.Any(); .Any();
} }
@@ -155,7 +148,7 @@ namespace OpenRA.Mods.RA
var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range); var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range);
return unitsInRange return unitsInRange
.Where(a => a.Owner != null && a.Owner != originalOwner && !a.Destroyed && a.IsInWorld && a != self) .Where(a => a.Owner != originalOwner && !a.Destroyed && a.IsInWorld && a != self)
.Where(a => !a.Owner.PlayerRef.OwnsWorld) .Where(a => !a.Owner.PlayerRef.OwnsWorld)
.Where(a => !a.Owner.PlayerRef.NonCombatant) .Where(a => !a.Owner.PlayerRef.NonCombatant)
.OrderBy(a => (a.CenterLocation - self.CenterLocation).LengthSquared) .OrderBy(a => (a.CenterLocation - self.CenterLocation).LengthSquared)
@@ -167,7 +160,7 @@ namespace OpenRA.Mods.RA
var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range); var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range);
return unitsInRange return unitsInRange
.Where(a => a.Owner != null && a.Owner != ignoreMe && !a.Destroyed && a.IsInWorld && a != self) .Where(a => a.Owner != ignoreMe && !a.Destroyed && a.IsInWorld && a != self)
.Where(a => !a.Owner.PlayerRef.OwnsWorld) .Where(a => !a.Owner.PlayerRef.OwnsWorld)
.Where(a => !a.Owner.PlayerRef.NonCombatant) .Where(a => !a.Owner.PlayerRef.NonCombatant)
.Select(a => a.Owner) .Select(a => a.Owner)