Add World parameter to Target.FromCell.

This commit is contained in:
Paul Chote
2013-09-17 21:50:15 +12:00
parent e4ea012b9e
commit 086ec07eb6
21 changed files with 36 additions and 37 deletions

View File

@@ -31,7 +31,7 @@ namespace OpenRA.Orders
var frozen = world.ScreenMap.FrozenActorsAt(world.RenderPlayer, mi) var frozen = world.ScreenMap.FrozenActorsAt(world.RenderPlayer, mi)
.Where(a => a.Info.Traits.Contains<ITargetableInfo>()) .Where(a => a.Info.Traits.Contains<ITargetableInfo>())
.WithHighestSelectionPriority(); .WithHighestSelectionPriority();
target = frozen != null ? Target.FromFrozenActor(frozen) : Target.FromCell(xy); target = frozen != null ? Target.FromFrozenActor(frozen) : Target.FromCell(world, xy);
} }
var orders = world.Selection.Actors var orders = world.Selection.Actors
@@ -76,7 +76,7 @@ namespace OpenRA.Orders
var frozen = world.ScreenMap.FrozenActorsAt(world.RenderPlayer, mi) var frozen = world.ScreenMap.FrozenActorsAt(world.RenderPlayer, mi)
.Where(a => a.Info.Traits.Contains<ITargetableInfo>()) .Where(a => a.Info.Traits.Contains<ITargetableInfo>())
.WithHighestSelectionPriority(); .WithHighestSelectionPriority();
target = frozen != null ? Target.FromFrozenActor(frozen) : Target.FromCell(xy); target = frozen != null ? Target.FromFrozenActor(frozen) : Target.FromCell(world, xy);
} }
var orders = world.Selection.Actors var orders = world.Selection.Actors

View File

@@ -28,12 +28,12 @@ namespace OpenRA.Traits
int generation; int generation;
public static Target FromPos(WPos p) { return new Target { pos = p, type = TargetType.Terrain }; } public static Target FromPos(WPos p) { return new Target { pos = p, type = TargetType.Terrain }; }
public static Target FromCell(CPos c) { return new Target { pos = c.CenterPosition, type = TargetType.Terrain }; } public static Target FromCell(World w, CPos c) { return new Target { pos = c.CenterPosition, type = TargetType.Terrain }; }
public static Target FromOrder(World w, Order o) public static Target FromOrder(World w, Order o)
{ {
return o.TargetActor != null return o.TargetActor != null
? FromActor(o.TargetActor) ? FromActor(o.TargetActor)
: FromCell(o.TargetLocation); : FromCell(w, o.TargetLocation);
} }
public static Target FromActor(Actor a) public static Target FromActor(Actor a)

View File

@@ -29,7 +29,7 @@ namespace OpenRA.Mods.Cnc.Effects
this.firedBy = firedBy; this.firedBy = firedBy;
this.weapon = weapon; this.weapon = weapon;
this.palette = palette; this.palette = palette;
target = Target.FromCell(location); target = Target.FromCell(world, location);
anim = new Animation(world, effect); anim = new Animation(world, effect);
anim.PlayThen("idle", () => Finish(world)); anim.PlayThen("idle", () => Finish(world));
} }

View File

@@ -60,7 +60,7 @@ namespace OpenRA.Mods.Cnc
new FacingInit(64) new FacingInit(64)
}); });
a.QueueActivity(new Fly(a, Target.FromCell(self.Location + new CVec(9, 0)))); a.QueueActivity(new Fly(a, Target.FromCell(w, self.Location + new CVec(9, 0))));
a.QueueActivity(new Land(Target.FromActor(self))); a.QueueActivity(new Land(Target.FromActor(self)));
a.QueueActivity(new CallFunc(() => a.QueueActivity(new CallFunc(() =>
{ {
@@ -74,7 +74,7 @@ namespace OpenRA.Mods.Cnc
Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", info.ReadyAudio, self.Owner.Country.Race); Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", info.ReadyAudio, self.Owner.Country.Race);
})); }));
a.QueueActivity(new Fly(a, Target.FromCell(endPos))); a.QueueActivity(new Fly(a, Target.FromCell(w, endPos)));
a.QueueActivity(new RemoveSelf()); a.QueueActivity(new RemoveSelf());
}); });

View File

@@ -114,13 +114,13 @@ namespace OpenRA.Mods.RA.Activities
if (harv.LastOrderLocation == null) if (harv.LastOrderLocation == null)
harv.LastOrderLocation = path[0]; harv.LastOrderLocation = path[0];
self.SetTargetLine(Target.FromCell(path[0]), Color.Red, false); self.SetTargetLine(Target.FromCell(self.World, path[0]), Color.Red, false);
return Util.SequenceActivities(mobile.MoveTo(path[0], 1), new HarvestResource(), new FindResources()); return Util.SequenceActivities(mobile.MoveTo(path[0], 1), new HarvestResource(), new FindResources());
} }
public override IEnumerable<Target> GetTargets(Actor self) public override IEnumerable<Target> GetTargets(Actor self)
{ {
yield return Target.FromCell(self.Location); yield return Target.FromCell(self.World, self.Location);
} }
} }

View File

@@ -84,7 +84,7 @@ namespace OpenRA.Mods.RA.Activities
actor.CancelActivity(); actor.CancelActivity();
pos.SetVisualPosition(actor, spawn); pos.SetVisualPosition(actor, spawn);
actor.QueueActivity(move.MoveIntoWorld(actor, exitCell.Value)); actor.QueueActivity(move.MoveIntoWorld(actor, exitCell.Value));
actor.SetTargetLine(Target.FromCell(exitCell.Value), Color.Green, false); actor.SetTargetLine(Target.FromCell(w, exitCell.Value), Color.Green, false);
}); });
if (!unloadAll || cargo.IsEmpty(self)) if (!unloadAll || cargo.IsEmpty(self))

View File

@@ -51,7 +51,7 @@ namespace OpenRA.Mods.RA.Air
if (order.OrderString == "Move") if (order.OrderString == "Move")
{ {
var cell = self.World.Map.Clamp(order.TargetLocation); var cell = self.World.Map.Clamp(order.TargetLocation);
var t = Target.FromCell(cell); var t = Target.FromCell(self.World, cell);
self.SetTargetLine(t, Color.Green); self.SetTargetLine(t, Color.Green);
self.CancelActivity(); self.CancelActivity();
@@ -161,8 +161,8 @@ namespace OpenRA.Mods.RA.Air
return (d * 1024 * 8) / (int)distSq; return (d * 1024 * 8) / (int)distSq;
} }
public Activity MoveTo(CPos cell, int nearEnough) { return new HeliFly(self, Target.FromCell(cell)); } public Activity MoveTo(CPos cell, int nearEnough) { return new HeliFly(self, Target.FromCell(self.World, cell)); }
public Activity MoveTo(CPos cell, Actor ignoredActor) { return new HeliFly(self, Target.FromCell(cell)); } public Activity MoveTo(CPos cell, Actor ignoredActor) { return new HeliFly(self, Target.FromCell(self.World, cell)); }
public Activity MoveWithinRange(Target target, WRange range) { return new HeliFly(self, target, WRange.Zero, range); } public Activity MoveWithinRange(Target target, WRange range) { return new HeliFly(self, target, WRange.Zero, range); }
public Activity MoveWithinRange(Target target, WRange minRange, WRange maxRange) { return new HeliFly(self, target, minRange, maxRange); } public Activity MoveWithinRange(Target target, WRange minRange, WRange maxRange) { return new HeliFly(self, target, minRange, maxRange); }
public Activity MoveFollow(Actor self, Target target, WRange minRange, WRange maxRange) { return new Follow(self, target, minRange, maxRange); } public Activity MoveFollow(Actor self, Target target, WRange minRange, WRange maxRange) { return new Follow(self, target, minRange, maxRange); }
@@ -170,7 +170,7 @@ namespace OpenRA.Mods.RA.Air
public Activity MoveIntoWorld(Actor self, CPos cell) public Activity MoveIntoWorld(Actor self, CPos cell)
{ {
return new HeliFly(self, Target.FromCell(cell)); return new HeliFly(self, Target.FromCell(self.World, cell));
} }
public Activity VisualMove(Actor self, WPos fromPos, WPos toPos) public Activity VisualMove(Actor self, WPos fromPos, WPos toPos)

View File

@@ -59,7 +59,7 @@ namespace OpenRA.Mods.RA.Air
UnReserve(); UnReserve();
var cell = self.World.Map.Clamp(order.TargetLocation); var cell = self.World.Map.Clamp(order.TargetLocation);
var t = Target.FromCell(cell); var t = Target.FromCell(self.World, cell);
self.SetTargetLine(t, Color.Green); self.SetTargetLine(t, Color.Green);
self.CancelActivity(); self.CancelActivity();
self.QueueActivity(new Fly(self, t)); self.QueueActivity(new Fly(self, t));
@@ -101,14 +101,14 @@ namespace OpenRA.Mods.RA.Air
} }
} }
public Activity MoveTo(CPos cell, int nearEnough) { return Util.SequenceActivities(new Fly(self, Target.FromCell(cell)), new FlyCircle()); } public Activity MoveTo(CPos cell, int nearEnough) { return Util.SequenceActivities(new Fly(self, Target.FromCell(self.World, cell)), new FlyCircle()); }
public Activity MoveTo(CPos cell, Actor ignoredActor) { return Util.SequenceActivities(new Fly(self, Target.FromCell(cell)), new FlyCircle()); } public Activity MoveTo(CPos cell, Actor ignoredActor) { return Util.SequenceActivities(new Fly(self, Target.FromCell(self.World, cell)), new FlyCircle()); }
public Activity MoveWithinRange(Target target, WRange range) { return Util.SequenceActivities(new Fly(self, target, WRange.Zero, range), new FlyCircle()); } public Activity MoveWithinRange(Target target, WRange range) { return Util.SequenceActivities(new Fly(self, target, WRange.Zero, range), new FlyCircle()); }
public Activity MoveWithinRange(Target target, WRange minRange, WRange maxRange) { return Util.SequenceActivities(new Fly(self, target, minRange, maxRange), new FlyCircle()); } public Activity MoveWithinRange(Target target, WRange minRange, WRange maxRange) { return Util.SequenceActivities(new Fly(self, target, minRange, maxRange), new FlyCircle()); }
public Activity MoveFollow(Actor self, Target target, WRange minRange, WRange maxRange) { return new FlyFollow(self, target, minRange, maxRange); } public Activity MoveFollow(Actor self, Target target, WRange minRange, WRange maxRange) { return new FlyFollow(self, target, minRange, maxRange); }
public CPos NearestMoveableCell(CPos cell) { return cell; } public CPos NearestMoveableCell(CPos cell) { return cell; }
public Activity MoveIntoWorld(Actor self, CPos cell) { return new Fly(self, Target.FromCell(cell)); } public Activity MoveIntoWorld(Actor self, CPos cell) { return new Fly(self, Target.FromCell(self.World, cell)); }
public Activity VisualMove(Actor self, WPos fromPos, WPos toPos) { return Util.SequenceActivities(new CallFunc(() => SetVisualPosition(self, fromPos)), new Fly(self, Target.FromPos(toPos))); } public Activity VisualMove(Actor self, WPos fromPos, WPos toPos) { return Util.SequenceActivities(new CallFunc(() => SetVisualPosition(self, fromPos)), new Fly(self, Target.FromPos(toPos))); }
} }
} }

View File

@@ -217,7 +217,7 @@ namespace OpenRA.Mods.RA
if (negativeDamage) if (negativeDamage)
return false; return false;
if (!ab.HasAnyValidWeapons(Target.FromCell(location))) if (!ab.HasAnyValidWeapons(Target.FromCell(self.World, location)))
return false; return false;
if (modifiers.HasModifier(TargetModifiers.ForceAttack)) if (modifiers.HasModifier(TargetModifiers.ForceAttack))

View File

@@ -82,7 +82,7 @@ namespace OpenRA.Mods.RA
OnExitedAttackRange(self); OnExitedAttackRange(self);
} }
public void SetTarget(WPos pos) { target = Target.FromPos(pos); } public void SetTarget(World w, WPos pos) { target = Target.FromPos(pos); }
public void RemovedFromWorld(Actor self) public void RemovedFromWorld(Actor self)
{ {

View File

@@ -58,7 +58,7 @@ namespace OpenRA.Mods.RA
if (order.OrderString == "AttackMove") if (order.OrderString == "AttackMove")
{ {
TargetLocation = move.NearestMoveableCell(order.TargetLocation); TargetLocation = move.NearestMoveableCell(order.TargetLocation);
self.SetTargetLine(Target.FromCell(TargetLocation.Value), Color.Red); self.SetTargetLine(Target.FromCell(self.World, TargetLocation.Value), Color.Red);
Activate(self); Activate(self);
} }
} }

View File

@@ -98,7 +98,7 @@ namespace OpenRA.Mods.RA
}); });
plane.CancelActivity(); plane.CancelActivity();
plane.QueueActivity(new FlyAttack(Target.FromCell(p))); plane.QueueActivity(new FlyAttack(Target.FromCell(w, p)));
plane.Trait<ParaDrop>().SetLZ(p); plane.Trait<ParaDrop>().SetLZ(p);
plane.Trait<Cargo>().Load(plane, crate); plane.Trait<Cargo>().Load(plane, crate);
} }

View File

@@ -170,7 +170,7 @@ namespace OpenRA.Mods.RA
var moveTo = harv.LastHarvestedCell ?? (deliveryLoc + new CVec(0, 4)); var moveTo = harv.LastHarvestedCell ?? (deliveryLoc + new CVec(0, 4));
self.QueueActivity(mobile.MoveTo(moveTo, 1)); self.QueueActivity(mobile.MoveTo(moveTo, 1));
self.SetTargetLine(Target.FromCell(moveTo), Color.Gray, false); self.SetTargetLine(Target.FromCell(self.World, moveTo), Color.Gray, false);
var territory = self.World.WorldActor.TraitOrDefault<ResourceClaimLayer>(); var territory = self.World.WorldActor.TraitOrDefault<ResourceClaimLayer>();
if (territory != null) territory.ClaimResource(self, moveTo); if (territory != null) territory.ClaimResource(self, moveTo);
@@ -194,7 +194,7 @@ namespace OpenRA.Mods.RA
var cell = self.Location; var cell = self.Location;
var moveTo = mobile.NearestMoveableCell(cell, 2, 5); var moveTo = mobile.NearestMoveableCell(cell, 2, 5);
self.QueueActivity(mobile.MoveTo(moveTo, 0)); self.QueueActivity(mobile.MoveTo(moveTo, 0));
self.SetTargetLine(Target.FromCell(moveTo), Color.Gray, false); self.SetTargetLine(Target.FromCell(self.World, moveTo), Color.Gray, false);
// Find more resources but not at this location: // Find more resources but not at this location:
self.QueueActivity(new FindResources(cell)); self.QueueActivity(new FindResources(cell));
@@ -299,7 +299,7 @@ namespace OpenRA.Mods.RA
} }
self.QueueActivity(mobile.MoveTo(loc, 0)); self.QueueActivity(mobile.MoveTo(loc, 0));
self.SetTargetLine(Target.FromCell(loc), Color.Red); self.SetTargetLine(Target.FromCell(self.World, loc), Color.Red);
LastOrderLocation = loc; LastOrderLocation = loc;
} }
@@ -312,7 +312,7 @@ namespace OpenRA.Mods.RA
return; return;
self.QueueActivity(mobile.MoveTo(loc.Value, 0)); self.QueueActivity(mobile.MoveTo(loc.Value, 0));
self.SetTargetLine(Target.FromCell(loc.Value), Color.Red); self.SetTargetLine(Target.FromCell(self.World, loc.Value), Color.Red);
LastOrderLocation = loc; LastOrderLocation = loc;
} }

View File

@@ -375,7 +375,7 @@ namespace OpenRA.Mods.RA.Move
self.QueueActivity(new Move(currentLocation, 8)); self.QueueActivity(new Move(currentLocation, 8));
self.SetTargetLine(Target.FromCell(currentLocation), Color.Green); self.SetTargetLine(Target.FromCell(self.World, currentLocation), Color.Green);
} }
protected void PerformMove(Actor self, CPos targetLocation, bool queued) protected void PerformMove(Actor self, CPos targetLocation, bool queued)
@@ -542,7 +542,7 @@ namespace OpenRA.Mods.RA.Move
if (moveTo.HasValue) if (moveTo.HasValue)
{ {
self.CancelActivity(); self.CancelActivity();
self.SetTargetLine(Target.FromCell(moveTo.Value), Color.Green, false); self.SetTargetLine(Target.FromCell(self.World, moveTo.Value), Color.Green, false);
self.QueueActivity(new Move(moveTo.Value, 0)); self.QueueActivity(new Move(moveTo.Value, 0));
Log.Write("debug", "OnNudge #{0} from {1} to {2}", Log.Write("debug", "OnNudge #{0} from {1} to {2}",

View File

@@ -251,9 +251,9 @@ namespace OpenRA.Mods.RA.Move
public override IEnumerable<Target> GetTargets(Actor self) public override IEnumerable<Target> GetTargets(Actor self)
{ {
if (path != null) if (path != null)
return Enumerable.Reverse(path).Select(c => Target.FromCell(c)); return Enumerable.Reverse(path).Select(c => Target.FromCell(self.World, c));
if (destination != null) if (destination != null)
return new Target[] { Target.FromCell(destination.Value) }; return new Target[] { Target.FromCell(self.World, destination.Value) };
return Target.None; return Target.None;
} }

View File

@@ -63,7 +63,7 @@ namespace OpenRA.Mods.RA
var initialFacing = exitinfo.Facing < 0 ? Util.GetFacing(to - spawn, fi.GetInitialFacing()) : exitinfo.Facing; var initialFacing = exitinfo.Facing < 0 ? Util.GetFacing(to - spawn, fi.GetInitialFacing()) : exitinfo.Facing;
var exitLocation = rp.Value != null ? rp.Value.rallyPoint : exit; var exitLocation = rp.Value != null ? rp.Value.rallyPoint : exit;
var target = Target.FromCell(exitLocation); var target = Target.FromCell(self.World, exitLocation);
var nearEnough = rp.Value != null ? WRange.FromCells(rp.Value.nearEnough) : WRange.Zero; var nearEnough = rp.Value != null ? WRange.FromCells(rp.Value.nearEnough) : WRange.Zero;
self.World.AddFrameEndTask(w => self.World.AddFrameEndTask(w =>
@@ -87,7 +87,6 @@ namespace OpenRA.Mods.RA
if (exitinfo.MoveIntoWorld) if (exitinfo.MoveIntoWorld)
{ {
newUnit.QueueActivity(move.MoveIntoWorld(newUnit, exit)); newUnit.QueueActivity(move.MoveIntoWorld(newUnit, exit));
newUnit.QueueActivity(new AttackMove.AttackMoveActivity( newUnit.QueueActivity(new AttackMove.AttackMoveActivity(
newUnit, move.MoveWithinRange(target, nearEnough))); newUnit, move.MoveWithinRange(target, nearEnough)));
} }

View File

@@ -86,7 +86,7 @@ namespace OpenRA.Mods.RA
if (rp != null) if (rp != null)
self.QueueActivity(new CallFunc(() => self.QueueActivity(new CallFunc(() =>
{ {
self.SetTargetLine(Target.FromCell(rp.rallyPoint), Color.Green); self.SetTargetLine(Target.FromCell(self.World, rp.rallyPoint), Color.Green);
self.QueueActivity(movement.MoveTo(rp.rallyPoint, order.TargetActor)); self.QueueActivity(movement.MoveTo(rp.rallyPoint, order.TargetActor));
})); }));
} }

View File

@@ -298,7 +298,7 @@ namespace OpenRA.Mods.RA.Scripting
[LuaGlobal] [LuaGlobal]
public void FlyAttackCell(Actor actor, CPos location) public void FlyAttackCell(Actor actor, CPos location)
{ {
actor.QueueActivity(new FlyAttack(Target.FromCell(location))); actor.QueueActivity(new FlyAttack(Target.FromCell(actor.World, location)));
} }
[LuaGlobal] [LuaGlobal]

View File

@@ -57,7 +57,7 @@ namespace OpenRA.Mods.RA.Scripting
public void Paradrop(CPos cell) public void Paradrop(CPos cell)
{ {
paradrop.SetLZ(cell); paradrop.SetLZ(cell);
self.QueueActivity(new FlyAttack(Target.FromCell(cell))); self.QueueActivity(new FlyAttack(Target.FromCell(self.World, cell)));
} }
} }
} }

View File

@@ -157,7 +157,7 @@ namespace OpenRA.Mods.RA
}); });
var attack = a.Trait<AttackBomber>(); var attack = a.Trait<AttackBomber>();
attack.SetTarget(target + targetOffset); attack.SetTarget(w, target + targetOffset);
attack.OnEnteredAttackRange += onEnterRange; attack.OnEnteredAttackRange += onEnterRange;
attack.OnExitedAttackRange += onExitRange; attack.OnExitedAttackRange += onExitRange;
attack.OnRemovedFromWorld += onExitRange; attack.OnRemovedFromWorld += onExitRange;

View File

@@ -40,7 +40,7 @@ namespace OpenRA.Mods.RA
}); });
plane.CancelActivity(); plane.CancelActivity();
plane.QueueActivity(new Fly(plane, Target.FromCell(order.TargetLocation))); plane.QueueActivity(new Fly(plane, Target.FromCell(self.World, order.TargetLocation)));
plane.QueueActivity(new CallFunc(() => plane.World.AddFrameEndTask( w => plane.QueueActivity(new CallFunc(() => plane.World.AddFrameEndTask( w =>
{ {
var camera = w.CreateActor("camera", new TypeDictionary var camera = w.CreateActor("camera", new TypeDictionary