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

View File

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

View File

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

View File

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