Pass target line color to inner move activities.

This commit is contained in:
Paul Chote
2019-01-13 16:36:30 +00:00
parent 62102b9f77
commit b2d960ec19
32 changed files with 127 additions and 68 deletions

View File

@@ -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)

View File

@@ -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;

View File

@@ -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)));
}

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)));
}

View File

@@ -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);