Pass target line color to inner move activities.
This commit is contained in:
@@ -605,28 +605,28 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return new HeliFly(self, Target.FromCell(self.World, cell));
|
||||
}
|
||||
|
||||
public Activity MoveWithinRange(Target target, WDist range)
|
||||
public Activity MoveWithinRange(Target target, WDist range, Color? targetLineColor = null)
|
||||
{
|
||||
if (!Info.CanHover)
|
||||
return new Fly(self, target, WDist.Zero, range);
|
||||
return new Fly(self, target, WDist.Zero, range, targetLineColor);
|
||||
|
||||
return new HeliFly(self, target, WDist.Zero, range);
|
||||
return new HeliFly(self, target, WDist.Zero, range, targetLineColor);
|
||||
}
|
||||
|
||||
public Activity MoveWithinRange(Target target, WDist minRange, WDist maxRange)
|
||||
public Activity MoveWithinRange(Target target, WDist minRange, WDist maxRange, Color? targetLineColor = null)
|
||||
{
|
||||
if (!Info.CanHover)
|
||||
return new Fly(self, target, minRange, maxRange);
|
||||
return new Fly(self, target, minRange, maxRange, targetLineColor);
|
||||
|
||||
return new HeliFly(self, target, minRange, maxRange);
|
||||
return new HeliFly(self, target, minRange, maxRange, targetLineColor);
|
||||
}
|
||||
|
||||
public Activity MoveFollow(Actor self, Target target, WDist minRange, WDist maxRange)
|
||||
public Activity MoveFollow(Actor self, Target target, WDist minRange, WDist maxRange, Color? targetLineColor = null)
|
||||
{
|
||||
if (!Info.CanHover)
|
||||
return new FlyFollow(self, target, minRange, maxRange);
|
||||
return new FlyFollow(self, target, minRange, maxRange, targetLineColor);
|
||||
|
||||
return new Follow(self, target, minRange, maxRange);
|
||||
return new Follow(self, target, minRange, maxRange, targetLineColor);
|
||||
}
|
||||
|
||||
public Activity MoveIntoWorld(Actor self, CPos cell, SubCell subCell = SubCell.Any)
|
||||
@@ -637,12 +637,12 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return new HeliFly(self, Target.FromCell(self.World, cell, subCell));
|
||||
}
|
||||
|
||||
public Activity MoveToTarget(Actor self, Target target)
|
||||
public Activity MoveToTarget(Actor self, Target target, Color? targetLineColor = null)
|
||||
{
|
||||
if (!Info.CanHover)
|
||||
return new Fly(self, target, WDist.FromCells(3), WDist.FromCells(5));
|
||||
return new Fly(self, target, WDist.FromCells(3), WDist.FromCells(5), targetLineColor);
|
||||
|
||||
return ActivityUtils.SequenceActivities(new HeliFly(self, target), new Turn(self, Info.InitialFacing));
|
||||
return ActivityUtils.SequenceActivities(new HeliFly(self, target, targetLineColor), new Turn(self, Info.InitialFacing));
|
||||
}
|
||||
|
||||
public Activity MoveIntoTarget(Actor self, Target target)
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using OpenRA.Activities;
|
||||
using OpenRA.Mods.Common.Activities;
|
||||
@@ -122,7 +123,10 @@ namespace OpenRA.Mods.Common.Traits
|
||||
hasTicked = true;
|
||||
|
||||
if (move != null)
|
||||
return ActivityUtils.SequenceActivities(move.MoveFollow(self, target, weapon.Weapon.MinRange, maxRange), this);
|
||||
return ActivityUtils.SequenceActivities(
|
||||
move.MoveFollow(self, target, weapon.Weapon.MinRange, maxRange, targetLineColor: Color.Red),
|
||||
this);
|
||||
|
||||
if (target.IsInRange(self.CenterPosition, weapon.MaxRange()) &&
|
||||
!target.IsInRange(self.CenterPosition, weapon.Weapon.MinRange))
|
||||
return this;
|
||||
|
||||
@@ -87,7 +87,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
self.SetTargetLine(target, Color.Red);
|
||||
|
||||
self.QueueActivity(move.MoveToTarget(self, target));
|
||||
self.QueueActivity(move.MoveToTarget(self, target, targetLineColor: Color.Red));
|
||||
|
||||
self.QueueActivity(new CallFunc(() => self.Kill(self, Info.DamageTypes)));
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
self.SetTargetLine(target, Color.Yellow);
|
||||
|
||||
var range = target.Actor.Info.TraitInfo<GuardableInfo>().Range;
|
||||
self.QueueActivity(new AttackMoveActivity(self, move.MoveFollow(self, target, WDist.Zero, range)));
|
||||
self.QueueActivity(new AttackMoveActivity(self, move.MoveFollow(self, target, WDist.Zero, range, targetLineColor: Color.Yellow)));
|
||||
}
|
||||
|
||||
public string VoicePhraseForOrder(Actor self, Order order)
|
||||
|
||||
@@ -457,11 +457,30 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
#region IMove
|
||||
|
||||
public Activity MoveTo(CPos cell, int nearEnough) { return new Move(self, cell, WDist.FromCells(nearEnough)); }
|
||||
public Activity MoveTo(CPos cell, Actor ignoreActor) { return new Move(self, cell, WDist.Zero, ignoreActor); }
|
||||
public Activity MoveWithinRange(Target target, WDist range) { return new MoveWithinRange(self, target, WDist.Zero, range); }
|
||||
public Activity MoveWithinRange(Target target, WDist minRange, WDist maxRange) { return new MoveWithinRange(self, target, minRange, maxRange); }
|
||||
public Activity MoveFollow(Actor self, Target target, WDist minRange, WDist maxRange) { return new Follow(self, target, minRange, maxRange); }
|
||||
public Activity MoveTo(CPos cell, int nearEnough)
|
||||
{
|
||||
return new Move(self, cell, WDist.FromCells(nearEnough));
|
||||
}
|
||||
|
||||
public Activity MoveTo(CPos cell, Actor ignoreActor)
|
||||
{
|
||||
return new Move(self, cell, WDist.Zero, ignoreActor);
|
||||
}
|
||||
|
||||
public Activity MoveWithinRange(Target target, WDist range, Color? targetLineColor = null)
|
||||
{
|
||||
return new MoveWithinRange(self, target, WDist.Zero, range, targetLineColor);
|
||||
}
|
||||
|
||||
public Activity MoveWithinRange(Target target, WDist minRange, WDist maxRange, Color? targetLineColor = null)
|
||||
{
|
||||
return new MoveWithinRange(self, target, minRange, maxRange, targetLineColor);
|
||||
}
|
||||
|
||||
public Activity MoveFollow(Actor self, Target target, WDist minRange, WDist maxRange, Color? targetLineColor = null)
|
||||
{
|
||||
return new Follow(self, target, minRange, maxRange, targetLineColor);
|
||||
}
|
||||
|
||||
public Activity MoveIntoWorld(Actor self, CPos cell, SubCell subCell = SubCell.Any)
|
||||
{
|
||||
@@ -481,12 +500,12 @@ namespace OpenRA.Mods.Common.Traits
|
||||
return VisualMove(self, pos, self.World.Map.CenterOfSubCell(cell, subCell), cell);
|
||||
}
|
||||
|
||||
public Activity MoveToTarget(Actor self, Target target)
|
||||
public Activity MoveToTarget(Actor self, Target target, Color? targetLineColor = null)
|
||||
{
|
||||
if (target.Type == TargetType.Invalid)
|
||||
return null;
|
||||
|
||||
return new MoveAdjacentTo(self, target);
|
||||
return new MoveAdjacentTo(self, target, targetLineColor);
|
||||
}
|
||||
|
||||
public Activity MoveIntoTarget(Actor self, Target target)
|
||||
|
||||
@@ -112,8 +112,12 @@ namespace OpenRA.Mods.Common.Traits
|
||||
self.CancelActivity();
|
||||
|
||||
self.SetTargetLine(order.Target, Color.Green);
|
||||
self.QueueActivity(new WaitForTransport(self, ActivityUtils.SequenceActivities(movement.MoveToTarget(self, order.Target),
|
||||
new CallFunc(() => AfterReachActivities(self, order, movement)))));
|
||||
|
||||
var activities = ActivityUtils.SequenceActivities(
|
||||
movement.MoveToTarget(self, order.Target, targetLineColor: Color.Green),
|
||||
new CallFunc(() => AfterReachActivities(self, order, movement)));
|
||||
|
||||
self.QueueActivity(new WaitForTransport(self, activities));
|
||||
|
||||
TryCallTransport(self, order.Target, new CallFunc(() => AfterReachActivities(self, order, movement)));
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (!order.Queued)
|
||||
self.CancelActivity();
|
||||
|
||||
self.QueueActivity(movement.MoveWithinRange(order.Target, info.CloseEnough));
|
||||
self.QueueActivity(movement.MoveWithinRange(order.Target, info.CloseEnough, targetLineColor: Color.Green));
|
||||
self.QueueActivity(new Repair(self, order.Target.Actor, info.CloseEnough));
|
||||
|
||||
self.SetTargetLine(order.Target, Color.Green, false);
|
||||
|
||||
Reference in New Issue
Block a user