Remove some duplication against WorldUtils.ClosestTo.

This commit is contained in:
Paul Chote
2013-07-20 19:21:16 +12:00
parent b92aa760d2
commit 712e13b1e7
5 changed files with 7 additions and 10 deletions

View File

@@ -150,7 +150,7 @@ namespace OpenRA.Mods.RA.Missions
var enemies = world.Actors.Where(u => u.Owner == creeps && u.HasTrait<ITargetable>() var enemies = world.Actors.Where(u => u.Owner == creeps && u.HasTrait<ITargetable>()
&& ((u.HasTrait<Building>() && !u.HasTrait<Wall>() && !u.HasTrait<Bridge>()) || u.HasTrait<Mobile>()) && !u.IsDead() && u.IsInWorld); && ((u.HasTrait<Building>() && !u.HasTrait<Wall>() && !u.HasTrait<Bridge>()) || u.HasTrait<Mobile>()) && !u.IsDead() && u.IsInWorld);
var enemy = enemies.OrderBy(u => (attacker.CenterPosition - u.CenterPosition).LengthSquared).FirstOrDefault(); var enemy = enemies.ClosestTo(attacker);
if (enemy != null) if (enemy != null)
attacker.QueueActivity(new AttackMove.AttackMoveActivity(attacker, new Attack(Target.FromActor(enemy), WRange.FromCells(3)))); attacker.QueueActivity(new AttackMove.AttackMoveActivity(attacker, new Attack(Target.FromActor(enemy), WRange.FromCells(3))));
else else

View File

@@ -79,11 +79,10 @@ namespace OpenRA.Mods.RA.Missions
{ {
var enemies = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == multi0) var enemies = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == multi0)
&& ((u.HasTrait<Building>() && !u.HasTrait<Mobile>()))); && ((u.HasTrait<Building>() && !u.HasTrait<Mobile>())));
var targetEnemy = enemies.OrderBy(u => (self.CenterPosition - u.CenterPosition).LengthSquared).FirstOrDefault();
var targetEnemy = enemies.ClosestTo(self);
if (targetEnemy != null) if (targetEnemy != null)
{
self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(targetEnemy), WRange.FromCells(6)))); self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(targetEnemy), WRange.FromCells(6))));
}
} }
void SendVehicles() void SendVehicles()

View File

@@ -212,7 +212,7 @@ namespace OpenRA.Mods.RA.Missions
var enemies = self.World.Actors.Where(u => u.AppearsHostileTo(self) && u.Owner == enemyPlayer var enemies = self.World.Actors.Where(u => u.AppearsHostileTo(self) && u.Owner == enemyPlayer
&& ((u.HasTrait<Building>() && !u.HasTrait<Wall>()) || (u.HasTrait<Mobile>() && !u.HasTrait<Aircraft>())) && u.IsInWorld && !u.IsDead()); && ((u.HasTrait<Building>() && !u.HasTrait<Wall>()) || (u.HasTrait<Mobile>() && !u.HasTrait<Aircraft>())) && u.IsInWorld && !u.IsDead());
var enemy = enemies.OrderBy(u => (self.CenterPosition - u.CenterPosition).LengthSquared).FirstOrDefault(); var enemy = enemies.ClosestTo(self);
if (enemy != null) if (enemy != null)
self.QueueActivity(queued, new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(enemy), WRange.FromCells(3)))); self.QueueActivity(queued, new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(enemy), WRange.FromCells(3))));
} }

View File

@@ -126,8 +126,7 @@ namespace OpenRA.Mods.RA.Missions
{ {
var bridge = world.Actors var bridge = world.Actors
.Where(a => a.HasTrait<Bridge>() && !a.IsDead()) .Where(a => a.HasTrait<Bridge>() && !a.IsDead())
.OrderBy(a => (startJeep.CenterPosition - a.CenterPosition).LengthSquared) .ClosestTo(startJeep);
.First();
Combat.DoExplosion(bridge, "Demolish", bridge.CenterPosition); Combat.DoExplosion(bridge, "Demolish", bridge.CenterPosition);
world.WorldActor.Trait<ScreenShaker>().AddEffect(15, bridge.CenterPosition, 6); world.WorldActor.Trait<ScreenShaker>().AddEffect(15, bridge.CenterPosition, 6);
bridge.Kill(bridge); bridge.Kill(bridge);

View File

@@ -211,11 +211,10 @@ namespace OpenRA.Mods.RA.Missions
{ {
var enemies = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == allies) var enemies = world.Actors.Where(u => u.IsInWorld && !u.IsDead() && (u.Owner == allies)
&& ((u.HasTrait<Building>() && !u.HasTrait<Wall>()) || u.HasTrait<Mobile>())); && ((u.HasTrait<Building>() && !u.HasTrait<Wall>()) || u.HasTrait<Mobile>()));
var targetEnemy = enemies.OrderBy(u => (self.CenterPosition - u.CenterPosition).LengthSquared).FirstOrDefault();
var targetEnemy = enemies.ClosestTo(self);
if (targetEnemy != null) if (targetEnemy != null)
{
self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(targetEnemy), WRange.FromCells(3)))); self.QueueActivity(new AttackMove.AttackMoveActivity(self, new Attack(Target.FromActor(targetEnemy), WRange.FromCells(3))));
}
} }
void ManageSovietUnits() void ManageSovietUnits()