Use Refinery reference in HarvesterDockSequence
This commit is contained in:
@@ -20,11 +20,11 @@ namespace OpenRA.Mods.Cnc.Activities
|
|||||||
readonly WithVoxelUnloadBody body;
|
readonly WithVoxelUnloadBody body;
|
||||||
readonly WithDockingOverlay spriteOverlay;
|
readonly WithDockingOverlay spriteOverlay;
|
||||||
|
|
||||||
public VoxelHarvesterDockSequence(Actor self, Actor refinery, WAngle dockAngle, bool isDragRequired, in WVec dragOffset, int dragLength)
|
public VoxelHarvesterDockSequence(Actor self, Actor refineryActor, Refinery refinery)
|
||||||
: base(self, refinery, dockAngle, isDragRequired, dragOffset, dragLength)
|
: base(self, refineryActor, refinery)
|
||||||
{
|
{
|
||||||
body = self.Trait<WithVoxelUnloadBody>();
|
body = self.Trait<WithVoxelUnloadBody>();
|
||||||
spriteOverlay = refinery.TraitOrDefault<WithDockingOverlay>();
|
spriteOverlay = RefineryActor.TraitOrDefault<WithDockingOverlay>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnStateDock(Actor self)
|
public override void OnStateDock(Actor self)
|
||||||
@@ -49,7 +49,7 @@ namespace OpenRA.Mods.Cnc.Activities
|
|||||||
// If body.Docked wasn't set, we didn't actually dock and have to skip the undock overlay
|
// If body.Docked wasn't set, we didn't actually dock and have to skip the undock overlay
|
||||||
if (!body.Docked)
|
if (!body.Docked)
|
||||||
dockingState = DockingState.Complete;
|
dockingState = DockingState.Complete;
|
||||||
else if (Refinery.IsInWorld && !Refinery.IsDead && spriteOverlay != null && !spriteOverlay.Visible)
|
else if (RefineryActor.IsInWorld && !RefineryActor.IsDead && spriteOverlay != null && !spriteOverlay.Visible)
|
||||||
{
|
{
|
||||||
dockingState = DockingState.Wait;
|
dockingState = DockingState.Wait;
|
||||||
spriteOverlay.Visible = true;
|
spriteOverlay.Visible = true;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ namespace OpenRA.Mods.Cnc.Traits
|
|||||||
|
|
||||||
public override Activity DockSequence(Actor harv, Actor self)
|
public override Activity DockSequence(Actor harv, Actor self)
|
||||||
{
|
{
|
||||||
return new VoxelHarvesterDockSequence(harv, self, DeliveryAngle, IsDragRequired, DragOffset, DragLength);
|
return new VoxelHarvesterDockSequence(harv, self, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
{
|
{
|
||||||
protected enum DockingState { Wait, Turn, Drag, Dock, Loop, Undock, Complete }
|
protected enum DockingState { Wait, Turn, Drag, Dock, Loop, Undock, Complete }
|
||||||
|
|
||||||
protected readonly Actor Refinery;
|
protected readonly Actor RefineryActor;
|
||||||
|
protected readonly Refinery Refinery;
|
||||||
protected readonly Harvester Harv;
|
protected readonly Harvester Harv;
|
||||||
protected readonly WAngle DockAngle;
|
protected readonly WAngle DockAngle;
|
||||||
protected readonly bool IsDragRequired;
|
protected readonly bool IsDragRequired;
|
||||||
@@ -37,19 +38,20 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
readonly INotifyDockClient[] notifyDockClients;
|
readonly INotifyDockClient[] notifyDockClients;
|
||||||
readonly INotifyDockHost[] notifyDockHosts;
|
readonly INotifyDockHost[] notifyDockHosts;
|
||||||
|
|
||||||
public HarvesterDockSequence(Actor self, Actor refinery, WAngle dockAngle, bool isDragRequired, in WVec dragOffset, int dragLength)
|
public HarvesterDockSequence(Actor self, Actor refineryActor, Refinery refinery)
|
||||||
{
|
{
|
||||||
dockingState = DockingState.Turn;
|
dockingState = DockingState.Turn;
|
||||||
Refinery = refinery;
|
Refinery = refinery;
|
||||||
DockAngle = dockAngle;
|
RefineryActor = refineryActor;
|
||||||
IsDragRequired = isDragRequired;
|
DockAngle = refinery.DeliveryAngle;
|
||||||
DragOffset = dragOffset;
|
IsDragRequired = refinery.IsDragRequired;
|
||||||
DragLength = dragLength;
|
DragOffset = refinery.DragOffset;
|
||||||
|
DragLength = refinery.DragLength;
|
||||||
Harv = self.Trait<Harvester>();
|
Harv = self.Trait<Harvester>();
|
||||||
StartDrag = self.CenterPosition;
|
StartDrag = self.CenterPosition;
|
||||||
EndDrag = refinery.CenterPosition + DragOffset;
|
EndDrag = refineryActor.CenterPosition + DragOffset;
|
||||||
notifyDockClients = self.TraitsImplementing<INotifyDockClient>().ToArray();
|
notifyDockClients = self.TraitsImplementing<INotifyDockClient>().ToArray();
|
||||||
notifyDockHosts = refinery.TraitsImplementing<INotifyDockHost>().ToArray();
|
notifyDockHosts = refineryActor.TraitsImplementing<INotifyDockHost>().ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool Tick(Actor self)
|
public override bool Tick(Actor self)
|
||||||
@@ -65,7 +67,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
case DockingState.Drag:
|
case DockingState.Drag:
|
||||||
if (IsCanceling || !Refinery.IsInWorld || Refinery.IsDead || Harv.IsTraitDisabled)
|
if (IsCanceling || !RefineryActor.IsInWorld || RefineryActor.IsDead || Harv.IsTraitDisabled)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
dockingState = DockingState.Dock;
|
dockingState = DockingState.Dock;
|
||||||
@@ -75,7 +77,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
case DockingState.Dock:
|
case DockingState.Dock:
|
||||||
if (!IsCanceling && Refinery.IsInWorld && !Refinery.IsDead && !Harv.IsTraitDisabled)
|
if (!IsCanceling && RefineryActor.IsInWorld && !RefineryActor.IsDead && !Harv.IsTraitDisabled)
|
||||||
{
|
{
|
||||||
OnStateDock(self);
|
OnStateDock(self);
|
||||||
NotifyDocked(self);
|
NotifyDocked(self);
|
||||||
@@ -86,7 +88,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
case DockingState.Loop:
|
case DockingState.Loop:
|
||||||
if (IsCanceling || !Refinery.IsInWorld || Refinery.IsDead || Harv.IsTraitDisabled || Harv.TickUnload(self, Refinery))
|
if (IsCanceling || !RefineryActor.IsInWorld || RefineryActor.IsDead || Harv.IsTraitDisabled || Harv.TickUnload(self, RefineryActor))
|
||||||
dockingState = DockingState.Undock;
|
dockingState = DockingState.Undock;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -110,12 +112,12 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
|
|
||||||
public override IEnumerable<Target> GetTargets(Actor self)
|
public override IEnumerable<Target> GetTargets(Actor self)
|
||||||
{
|
{
|
||||||
yield return Target.FromActor(Refinery);
|
yield return Target.FromActor(RefineryActor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override IEnumerable<TargetLineNode> TargetLineNodes(Actor self)
|
public override IEnumerable<TargetLineNode> TargetLineNodes(Actor self)
|
||||||
{
|
{
|
||||||
yield return new TargetLineNode(Target.FromActor(Refinery), Color.Green);
|
yield return new TargetLineNode(Target.FromActor(RefineryActor), Color.Green);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void OnStateDock(Actor self);
|
public abstract void OnStateDock(Actor self);
|
||||||
@@ -125,20 +127,20 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
void NotifyDocked(Actor self)
|
void NotifyDocked(Actor self)
|
||||||
{
|
{
|
||||||
foreach (var nd in notifyDockClients)
|
foreach (var nd in notifyDockClients)
|
||||||
nd.Docked(self, Refinery);
|
nd.Docked(self, RefineryActor);
|
||||||
|
|
||||||
foreach (var nd in notifyDockHosts)
|
foreach (var nd in notifyDockHosts)
|
||||||
nd.Docked(Refinery, self);
|
nd.Docked(RefineryActor, self);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NotifyUndocked(Actor self)
|
void NotifyUndocked(Actor self)
|
||||||
{
|
{
|
||||||
foreach (var nd in notifyDockClients)
|
foreach (var nd in notifyDockClients)
|
||||||
nd.Undocked(self, Refinery);
|
nd.Undocked(self, RefineryActor);
|
||||||
|
|
||||||
if (Refinery.IsInWorld && !Refinery.IsDead)
|
if (RefineryActor.IsInWorld && !RefineryActor.IsDead)
|
||||||
foreach (var nd in notifyDockHosts)
|
foreach (var nd in notifyDockHosts)
|
||||||
nd.Undocked(Refinery, self);
|
nd.Undocked(RefineryActor, self);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
readonly WithDockingAnimationInfo wda;
|
readonly WithDockingAnimationInfo wda;
|
||||||
protected bool dockAnimPlayed;
|
protected bool dockAnimPlayed;
|
||||||
|
|
||||||
public SpriteHarvesterDockSequence(Actor self, Actor refinery, WAngle dockAngle, bool isDragRequired, in WVec dragOffset, int dragLength)
|
public SpriteHarvesterDockSequence(Actor self, Actor refineryActor, Refinery refinery)
|
||||||
: base(self, refinery, dockAngle, isDragRequired, dragOffset, dragLength)
|
: base(self, refineryActor, refinery)
|
||||||
{
|
{
|
||||||
wsb = self.Trait<WithSpriteBody>();
|
wsb = self.Trait<WithSpriteBody>();
|
||||||
wda = self.Info.TraitInfoOrDefault<WithDockingAnimationInfo>();
|
wda = self.Info.TraitInfoOrDefault<WithDockingAnimationInfo>();
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public virtual Activity DockSequence(Actor harv, Actor self)
|
public virtual Activity DockSequence(Actor harv, Actor self)
|
||||||
{
|
{
|
||||||
return new SpriteHarvesterDockSequence(harv, self, DeliveryAngle, IsDragRequired, DragOffset, DragLength);
|
return new SpriteHarvesterDockSequence(harv, self, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<TraitPair<Harvester>> GetLinkedHarvesters()
|
public IEnumerable<TraitPair<Harvester>> GetLinkedHarvesters()
|
||||||
|
|||||||
Reference in New Issue
Block a user