This commit is contained in:
@@ -65,16 +65,29 @@ namespace OpenRA.Mods.Cnc
|
|||||||
return Util.SequenceActivities(new Drag(startDock, endDock, 12), this);
|
return Util.SequenceActivities(new Drag(startDock, endDock, 12), this);
|
||||||
case State.Dock:
|
case State.Dock:
|
||||||
dock.Visible = false;
|
dock.Visible = false;
|
||||||
|
if (rb.anim.CurrentSequence.Name == "idle" || rb.anim.CurrentSequence.Name == "damaged-idle")
|
||||||
|
{
|
||||||
rb.PlayCustomAnimThen(proc, "dock-start", () => {rb.PlayCustomAnimRepeating(proc, "dock-loop"); state = State.Loop;});
|
rb.PlayCustomAnimThen(proc, "dock-start", () => {rb.PlayCustomAnimRepeating(proc, "dock-loop"); state = State.Loop;});
|
||||||
state = State.Wait;
|
state = State.Wait;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
state = State.Loop;
|
||||||
return this;
|
return this;
|
||||||
case State.Loop:
|
case State.Loop:
|
||||||
if (harv.TickUnload(self, proc))
|
if (harv.TickUnload(self, proc))
|
||||||
state = State.Undock;
|
state = State.Undock;
|
||||||
return this;
|
return this;
|
||||||
case State.Undock:
|
case State.Undock:
|
||||||
|
if (rb.anim.CurrentSequence.Name == "dock-loop" || rb.anim.CurrentSequence.Name == "damaged-dock-loop")
|
||||||
|
{
|
||||||
rb.PlayCustomAnimThen(proc, "dock-end", () => {dock.Visible = true; state = State.Dragout;});
|
rb.PlayCustomAnimThen(proc, "dock-end", () => {dock.Visible = true; state = State.Dragout;});
|
||||||
state = State.Wait;
|
state = State.Wait;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
state = State.Dragout;
|
||||||
|
dock.Visible = true;
|
||||||
|
}
|
||||||
return this;
|
return this;
|
||||||
case State.Dragout:
|
case State.Dragout:
|
||||||
return Util.SequenceActivities(new Drag(endDock, startDock, 12), NextActivity);
|
return Util.SequenceActivities(new Drag(endDock, startDock, 12), NextActivity);
|
||||||
@@ -85,7 +98,6 @@ namespace OpenRA.Mods.Cnc
|
|||||||
public override void Cancel(Actor self)
|
public override void Cancel(Actor self)
|
||||||
{
|
{
|
||||||
state = State.Undock;
|
state = State.Undock;
|
||||||
base.Cancel(self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override IEnumerable<Target> GetTargets( Actor self )
|
public override IEnumerable<Target> GetTargets( Actor self )
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ namespace OpenRA.Mods.RA
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
yield return new EnterOrderTargeter<IAcceptOre>( "Deliver", 5, false, true, _ => true, _ => !IsEmpty );
|
yield return new EnterOrderTargeter<IAcceptOre>("Deliver", 5, false, true, _ => true, proc => !IsEmpty && proc.Trait<IAcceptOre>().AllowDocking);
|
||||||
yield return new HarvestOrderTargeter();
|
yield return new HarvestOrderTargeter();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -160,6 +160,10 @@ namespace OpenRA.Mods.RA
|
|||||||
}
|
}
|
||||||
else if (order.OrderString == "Deliver")
|
else if (order.OrderString == "Deliver")
|
||||||
{
|
{
|
||||||
|
var iao = order.TargetActor.TraitOrDefault<IAcceptOre>();
|
||||||
|
if (iao == null || !iao.AllowDocking)
|
||||||
|
return;
|
||||||
|
|
||||||
if (order.TargetActor != LinkedProc)
|
if (order.TargetActor != LinkedProc)
|
||||||
LinkedProc = order.TargetActor;
|
LinkedProc = order.TargetActor;
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ namespace OpenRA.Mods.RA
|
|||||||
[Sync]
|
[Sync]
|
||||||
bool preventDock = false;
|
bool preventDock = false;
|
||||||
|
|
||||||
|
public bool AllowDocking { get { return !preventDock; } }
|
||||||
public int2 DeliverOffset { get { return Info.DockOffset; } }
|
public int2 DeliverOffset { get { return Info.DockOffset; } }
|
||||||
public virtual Activity DockSequence(Actor harv, Actor self)
|
public virtual Activity DockSequence(Actor harv, Actor self)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ namespace OpenRA.Mods.RA
|
|||||||
void GiveOre(int amount);
|
void GiveOre(int amount);
|
||||||
bool CanGiveOre(int amount);
|
bool CanGiveOre(int amount);
|
||||||
int2 DeliverOffset { get; }
|
int2 DeliverOffset { get; }
|
||||||
|
bool AllowDocking { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IAcceptOreDockAction
|
public interface IAcceptOreDockAction
|
||||||
|
|||||||
Reference in New Issue
Block a user