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);
|
||||
|
||||
var proc = harv.LinkedProc;
|
||||
var iao = proc.Trait<IAcceptOre>();
|
||||
var iao = proc.Trait<IAcceptResources>();
|
||||
|
||||
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 next = new DeliverResources();
|
||||
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)
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace OpenRA.Mods.RA.Traits
|
||||
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 OreRefineryInfo info;
|
||||
@@ -48,7 +48,7 @@ namespace OpenRA.Mods.RA.Traits
|
||||
[Sync] bool preventDock = false;
|
||||
|
||||
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); }
|
||||
|
||||
@@ -66,9 +66,9 @@ namespace OpenRA.Mods.RA.Traits
|
||||
.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);
|
||||
if (info.ShowTicks)
|
||||
|
||||
@@ -115,10 +115,10 @@ namespace OpenRA.Mods.RA.Traits
|
||||
{
|
||||
// Find all refineries and their occupancy count:
|
||||
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)
|
||||
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:
|
||||
var mi = self.Info.Traits.Get<MobileInfo>();
|
||||
@@ -162,7 +162,7 @@ namespace OpenRA.Mods.RA.Traits
|
||||
var lastproc = LastLinkedProc ?? LinkedProc;
|
||||
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)
|
||||
{
|
||||
// Get out of the way:
|
||||
@@ -236,11 +236,11 @@ namespace OpenRA.Mods.RA.Traits
|
||||
if (contents.Keys.Count > 0)
|
||||
{
|
||||
var type = contents.First().Key;
|
||||
var iao = proc.Trait<IAcceptOre>();
|
||||
if (!iao.CanGiveOre(type.ValuePerUnit))
|
||||
var iao = proc.Trait<IAcceptResources>();
|
||||
if (!iao.CanGiveResource(type.ValuePerUnit))
|
||||
return false;
|
||||
|
||||
iao.GiveOre(type.ValuePerUnit);
|
||||
iao.GiveResource(type.ValuePerUnit);
|
||||
if (--contents[type] == 0)
|
||||
contents.Remove(type);
|
||||
|
||||
@@ -254,9 +254,9 @@ namespace OpenRA.Mods.RA.Traits
|
||||
{
|
||||
get
|
||||
{
|
||||
yield return new EnterAlliedActorTargeter<IAcceptOre>("Deliver", 5,
|
||||
yield return new EnterAlliedActorTargeter<IAcceptResources>("Deliver", 5,
|
||||
proc => IsAcceptableProcType(proc),
|
||||
proc => !IsEmpty && proc.Trait<IAcceptOre>().AllowDocking);
|
||||
proc => !IsEmpty && proc.Trait<IAcceptResources>().AllowDocking);
|
||||
yield return new HarvestOrderTargeter();
|
||||
}
|
||||
}
|
||||
@@ -337,7 +337,7 @@ namespace OpenRA.Mods.RA.Traits
|
||||
else if (order.OrderString == "Deliver")
|
||||
{
|
||||
// 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))
|
||||
return;
|
||||
|
||||
|
||||
@@ -9,17 +9,15 @@
|
||||
#endregion
|
||||
|
||||
using OpenRA.Mods.RA.Activities;
|
||||
using OpenRA.Mods.RA.Traits;
|
||||
using OpenRA.Traits;
|
||||
|
||||
namespace OpenRA.Mods.RA
|
||||
{
|
||||
public interface IAcceptOre
|
||||
public interface IAcceptResources
|
||||
{
|
||||
void OnDock(Actor harv, DeliverResources dockOrder);
|
||||
void GiveOre(int amount);
|
||||
bool CanGiveOre(int amount);
|
||||
CVec DeliverOffset { get; }
|
||||
void GiveResource(int amount);
|
||||
bool CanGiveResource(int amount);
|
||||
CVec DeliveryOffset { get; }
|
||||
bool AllowDocking { get; }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user