cleanup cargo, remove some traitcalls
This commit is contained in:
@@ -21,19 +21,18 @@ namespace OpenRA.Mods.RA
|
||||
public readonly string[] Types = { };
|
||||
public readonly int UnloadFacing = 0;
|
||||
|
||||
public object Create( ActorInitializer init ) { return new Cargo( init.self ); }
|
||||
public object Create( ActorInitializer init ) { return new Cargo( init.self, this ); }
|
||||
}
|
||||
|
||||
public class Cargo : IPips, IIssueOrder, IResolveOrder, IOrderVoice, INotifyKilled
|
||||
{
|
||||
readonly Actor self;
|
||||
readonly CargoInfo info;
|
||||
|
||||
List<Actor> cargo = new List<Actor>();
|
||||
public IEnumerable<Actor> Passengers { get { return cargo; } }
|
||||
|
||||
public Cargo( Actor self )
|
||||
{
|
||||
this.self = self;
|
||||
}
|
||||
public Cargo( Actor self, CargoInfo info ) { this.self = self; this.info = info; }
|
||||
|
||||
public IEnumerable<IOrderTargeter> Orders
|
||||
{
|
||||
@@ -103,20 +102,10 @@ namespace OpenRA.Mods.RA
|
||||
return "Move";
|
||||
}
|
||||
|
||||
public bool IsFull(Actor self)
|
||||
{
|
||||
return cargo.Count == self.Info.Traits.Get<CargoInfo>().Passengers;
|
||||
}
|
||||
public bool IsFull(Actor self) { return cargo.Count == info.Passengers; }
|
||||
public bool IsEmpty(Actor self) { return cargo.Count == 0; }
|
||||
|
||||
public bool IsEmpty(Actor self)
|
||||
{
|
||||
return cargo.Count == 0;
|
||||
}
|
||||
|
||||
public Actor Peek(Actor self)
|
||||
{
|
||||
return cargo[0];
|
||||
}
|
||||
public Actor Peek(Actor self) { return cargo[0]; }
|
||||
|
||||
public Actor Unload(Actor self)
|
||||
{
|
||||
@@ -127,17 +116,12 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
public IEnumerable<PipType> GetPips( Actor self )
|
||||
{
|
||||
var numPips = self.Info.Traits.Get<CargoInfo>().Passengers;
|
||||
var numPips = info.Passengers;
|
||||
for (var i = 0; i < numPips; i++)
|
||||
if (i >= cargo.Count)
|
||||
yield return PipType.Transparent;
|
||||
else
|
||||
yield return GetPipForPassenger(cargo[i]);
|
||||
}
|
||||
|
||||
static PipType GetPipForPassenger(Actor a)
|
||||
{
|
||||
return a.Trait<Passenger>().ColorOfCargoPip( a );
|
||||
yield return cargo[i].Trait<Passenger>().ColorOfCargoPip();
|
||||
}
|
||||
|
||||
public void Load(Actor self, Actor a)
|
||||
|
||||
@@ -13,26 +13,25 @@ using System.Drawing;
|
||||
using System.Linq;
|
||||
using OpenRA.Effects;
|
||||
using OpenRA.Mods.RA.Activities;
|
||||
using OpenRA.Mods.RA.Move;
|
||||
using OpenRA.Mods.RA.Orders;
|
||||
using OpenRA.Traits;
|
||||
using OpenRA.Traits.Activities;
|
||||
using OpenRA.Mods.RA.Move;
|
||||
|
||||
namespace OpenRA.Mods.RA
|
||||
{
|
||||
class PassengerInfo : ITraitInfo
|
||||
public class PassengerInfo : ITraitInfo
|
||||
{
|
||||
public readonly string CargoType = null;
|
||||
public readonly PipType PipType = PipType.Green;
|
||||
|
||||
public object Create( ActorInitializer init ) { return new Passenger( init.self, this ); }
|
||||
public object Create( ActorInitializer init ) { return new Passenger( this ); }
|
||||
}
|
||||
|
||||
public class Passenger : IIssueOrder, IResolveOrder, IOrderVoice
|
||||
{
|
||||
readonly Actor self;
|
||||
readonly PassengerInfo info;
|
||||
public Passenger( Actor self, PassengerInfo info ) { this.self = self; this.info = info; }
|
||||
public Passenger( PassengerInfo info ) { this.info = info; }
|
||||
|
||||
public IEnumerable<IOrderTargeter> Orders
|
||||
{
|
||||
@@ -80,13 +79,12 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
self.SetTargetLine(Target.FromOrder(order), Color.Green);
|
||||
|
||||
var mobile = self.Trait<Mobile>();
|
||||
self.CancelActivity();
|
||||
self.QueueActivity(new MoveAdjacentTo(order.TargetActor));
|
||||
self.QueueActivity(new EnterTransport(self, order.TargetActor));
|
||||
}
|
||||
}
|
||||
|
||||
public PipType ColorOfCargoPip( Actor self ) { return info.PipType; }
|
||||
public PipType ColorOfCargoPip() { return info.PipType; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,10 +11,9 @@
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using OpenRA.FileFormats;
|
||||
using OpenRA.Traits;
|
||||
using OpenRA.Traits.Activities;
|
||||
using OpenRA.Mods.RA.Move;
|
||||
using OpenRA.Mods.RA.Air;
|
||||
using OpenRA.Mods.RA.Move;
|
||||
using OpenRA.Traits;
|
||||
|
||||
namespace OpenRA.Mods.RA
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user