Changed IAcceptOre to IAcceptResources
This commit is contained in:
@@ -54,17 +54,17 @@ namespace OpenRA.Mods.RA.Activities
|
|||||||
return Util.SequenceActivities(new Wait(25), this);
|
return Util.SequenceActivities(new Wait(25), this);
|
||||||
|
|
||||||
var proc = harv.LinkedProc;
|
var proc = harv.LinkedProc;
|
||||||
var iao = proc.Trait<IAcceptOre>();
|
var iao = proc.Trait<IAcceptResources>();
|
||||||
|
|
||||||
self.SetTargetLine(Target.FromActor(proc), Color.Green, false);
|
self.SetTargetLine(Target.FromActor(proc), Color.Green, false);
|
||||||
if (self.Location != proc.Location + iao.DeliverOffset)
|
if (self.Location != proc.Location + iao.DeliveryOffset)
|
||||||
{
|
{
|
||||||
var notify = self.TraitsImplementing<INotifyHarvesterAction>();
|
var notify = self.TraitsImplementing<INotifyHarvesterAction>();
|
||||||
var next = new DeliverResources();
|
var next = new DeliverResources();
|
||||||
foreach (var n in notify)
|
foreach (var n in notify)
|
||||||
n.MovingToRefinery(self, proc.Location + iao.DeliverOffset, next);
|
n.MovingToRefinery(self, proc.Location + iao.DeliveryOffset, next);
|
||||||
|
|
||||||
return Util.SequenceActivities(movement.MoveTo(proc.Location + iao.DeliverOffset, 0), this);
|
return Util.SequenceActivities(movement.MoveTo(proc.Location + iao.DeliveryOffset, 0), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isDocking)
|
if (!isDocking)
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
public virtual object Create(ActorInitializer init) { return new OreRefinery(init.Self, this); }
|
public virtual object Create(ActorInitializer init) { return new OreRefinery(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class OreRefinery : ITick, IAcceptOre, INotifyKilled, INotifySold, INotifyCapture, INotifyOwnerChanged, IExplodeModifier, ISync
|
public class OreRefinery : ITick, IAcceptResources, INotifyKilled, INotifySold, INotifyCapture, INotifyOwnerChanged, IExplodeModifier, ISync
|
||||||
{
|
{
|
||||||
readonly Actor self;
|
readonly Actor self;
|
||||||
readonly OreRefineryInfo info;
|
readonly OreRefineryInfo info;
|
||||||
@@ -48,7 +48,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
[Sync] bool preventDock = false;
|
[Sync] bool preventDock = false;
|
||||||
|
|
||||||
public bool AllowDocking { get { return !preventDock; } }
|
public bool AllowDocking { get { return !preventDock; } }
|
||||||
public CVec DeliverOffset { get { return info.DockOffset; } }
|
public CVec DeliveryOffset { get { return info.DockOffset; } }
|
||||||
|
|
||||||
public virtual Activity DockSequence(Actor harv, Actor self) { return new RAHarvesterDockSequence(harv, self, info.DockAngle); }
|
public virtual Activity DockSequence(Actor harv, Actor self) { return new RAHarvesterDockSequence(harv, self, info.DockAngle); }
|
||||||
|
|
||||||
@@ -66,9 +66,9 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
.Where(a => a.Trait.LinkedProc == self);
|
.Where(a => a.Trait.LinkedProc == self);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CanGiveOre(int amount) { return playerResources.CanGiveResources(amount); }
|
public bool CanGiveResource(int amount) { return playerResources.CanGiveResources(amount); }
|
||||||
|
|
||||||
public void GiveOre(int amount)
|
public void GiveResource(int amount)
|
||||||
{
|
{
|
||||||
playerResources.GiveResources(amount);
|
playerResources.GiveResources(amount);
|
||||||
if (info.ShowTicks)
|
if (info.ShowTicks)
|
||||||
|
|||||||
@@ -115,10 +115,10 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
{
|
{
|
||||||
// Find all refineries and their occupancy count:
|
// Find all refineries and their occupancy count:
|
||||||
var refs = (
|
var refs = (
|
||||||
from r in self.World.ActorsWithTrait<IAcceptOre>()
|
from r in self.World.ActorsWithTrait<IAcceptResources>()
|
||||||
where r.Actor != ignore && r.Actor.Owner == self.Owner && IsAcceptableProcType(r.Actor)
|
where r.Actor != ignore && r.Actor.Owner == self.Owner && IsAcceptableProcType(r.Actor)
|
||||||
let linkedHarvs = self.World.ActorsWithTrait<Harvester>().Where(a => a.Trait.LinkedProc == r.Actor).Count()
|
let linkedHarvs = self.World.ActorsWithTrait<Harvester>().Where(a => a.Trait.LinkedProc == r.Actor).Count()
|
||||||
select new { Location = r.Actor.Location + r.Trait.DeliverOffset, Actor = r.Actor, Occupancy = linkedHarvs }).ToDictionary(r => r.Location);
|
select new { Location = r.Actor.Location + r.Trait.DeliveryOffset, Actor = r.Actor, Occupancy = linkedHarvs }).ToDictionary(r => r.Location);
|
||||||
|
|
||||||
// Start a search from each refinery's delivery location:
|
// Start a search from each refinery's delivery location:
|
||||||
var mi = self.Info.Traits.Get<MobileInfo>();
|
var mi = self.Info.Traits.Get<MobileInfo>();
|
||||||
@@ -162,7 +162,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
var lastproc = LastLinkedProc ?? LinkedProc;
|
var lastproc = LastLinkedProc ?? LinkedProc;
|
||||||
if (lastproc != null && !lastproc.Destroyed)
|
if (lastproc != null && !lastproc.Destroyed)
|
||||||
{
|
{
|
||||||
var deliveryLoc = lastproc.Location + lastproc.Trait<IAcceptOre>().DeliverOffset;
|
var deliveryLoc = lastproc.Location + lastproc.Trait<IAcceptResources>().DeliveryOffset;
|
||||||
if (self.Location == deliveryLoc)
|
if (self.Location == deliveryLoc)
|
||||||
{
|
{
|
||||||
// Get out of the way:
|
// Get out of the way:
|
||||||
@@ -236,11 +236,11 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
if (contents.Keys.Count > 0)
|
if (contents.Keys.Count > 0)
|
||||||
{
|
{
|
||||||
var type = contents.First().Key;
|
var type = contents.First().Key;
|
||||||
var iao = proc.Trait<IAcceptOre>();
|
var iao = proc.Trait<IAcceptResources>();
|
||||||
if (!iao.CanGiveOre(type.ValuePerUnit))
|
if (!iao.CanGiveResource(type.ValuePerUnit))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
iao.GiveOre(type.ValuePerUnit);
|
iao.GiveResource(type.ValuePerUnit);
|
||||||
if (--contents[type] == 0)
|
if (--contents[type] == 0)
|
||||||
contents.Remove(type);
|
contents.Remove(type);
|
||||||
|
|
||||||
@@ -254,9 +254,9 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
yield return new EnterAlliedActorTargeter<IAcceptOre>("Deliver", 5,
|
yield return new EnterAlliedActorTargeter<IAcceptResources>("Deliver", 5,
|
||||||
proc => IsAcceptableProcType(proc),
|
proc => IsAcceptableProcType(proc),
|
||||||
proc => !IsEmpty && proc.Trait<IAcceptOre>().AllowDocking);
|
proc => !IsEmpty && proc.Trait<IAcceptResources>().AllowDocking);
|
||||||
yield return new HarvestOrderTargeter();
|
yield return new HarvestOrderTargeter();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -337,7 +337,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
else if (order.OrderString == "Deliver")
|
else if (order.OrderString == "Deliver")
|
||||||
{
|
{
|
||||||
// NOTE: An explicit deliver order forces the harvester to always deliver to this refinery.
|
// NOTE: An explicit deliver order forces the harvester to always deliver to this refinery.
|
||||||
var iao = order.TargetActor.TraitOrDefault<IAcceptOre>();
|
var iao = order.TargetActor.TraitOrDefault<IAcceptResources>();
|
||||||
if (iao == null || !iao.AllowDocking || !IsAcceptableProcType(order.TargetActor))
|
if (iao == null || !iao.AllowDocking || !IsAcceptableProcType(order.TargetActor))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -9,17 +9,15 @@
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using OpenRA.Mods.RA.Activities;
|
using OpenRA.Mods.RA.Activities;
|
||||||
using OpenRA.Mods.RA.Traits;
|
|
||||||
using OpenRA.Traits;
|
|
||||||
|
|
||||||
namespace OpenRA.Mods.RA
|
namespace OpenRA.Mods.RA
|
||||||
{
|
{
|
||||||
public interface IAcceptOre
|
public interface IAcceptResources
|
||||||
{
|
{
|
||||||
void OnDock(Actor harv, DeliverResources dockOrder);
|
void OnDock(Actor harv, DeliverResources dockOrder);
|
||||||
void GiveOre(int amount);
|
void GiveResource(int amount);
|
||||||
bool CanGiveOre(int amount);
|
bool CanGiveResource(int amount);
|
||||||
CVec DeliverOffset { get; }
|
CVec DeliveryOffset { get; }
|
||||||
bool AllowDocking { get; }
|
bool AllowDocking { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user