Changed IAcceptOre to IAcceptResources

This commit is contained in:
penev92
2015-01-23 23:48:15 +02:00
parent 4cbfa31053
commit 6a40dfd0db
4 changed files with 21 additions and 23 deletions

View File

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

View File

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

View File

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

View File

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