diff --git a/OpenRA.Mods.RA/Cargo.cs b/OpenRA.Mods.RA/Cargo.cs index 1f93c31a63..99779a08b3 100644 --- a/OpenRA.Mods.RA/Cargo.cs +++ b/OpenRA.Mods.RA/Cargo.cs @@ -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 cargo = new List(); public IEnumerable 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 Orders { @@ -103,20 +102,10 @@ namespace OpenRA.Mods.RA return "Move"; } - public bool IsFull(Actor self) - { - return cargo.Count == self.Info.Traits.Get().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 GetPips( Actor self ) { - var numPips = self.Info.Traits.Get().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().ColorOfCargoPip( a ); + yield return cargo[i].Trait().ColorOfCargoPip(); } public void Load(Actor self, Actor a) diff --git a/OpenRA.Mods.RA/Passenger.cs b/OpenRA.Mods.RA/Passenger.cs index dd084d0fd2..f04e8a0814 100644 --- a/OpenRA.Mods.RA/Passenger.cs +++ b/OpenRA.Mods.RA/Passenger.cs @@ -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 Orders { @@ -80,13 +79,12 @@ namespace OpenRA.Mods.RA self.SetTargetLine(Target.FromOrder(order), Color.Green); - var mobile = self.Trait(); 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; } } } diff --git a/OpenRA.Mods.RA/Production.cs b/OpenRA.Mods.RA/Production.cs index 98bbf8326c..d70772c8bb 100755 --- a/OpenRA.Mods.RA/Production.cs +++ b/OpenRA.Mods.RA/Production.cs @@ -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 {