diff --git a/OpenRA.Mods.Cnc/RenderCargo.cs b/OpenRA.Mods.Cnc/RenderCargo.cs index fa38c27d09..9e5101f41b 100644 --- a/OpenRA.Mods.Cnc/RenderCargo.cs +++ b/OpenRA.Mods.Cnc/RenderCargo.cs @@ -19,6 +19,7 @@ namespace OpenRA.Mods.Cnc { /* altitude of the cargo, relative to us. -ve is underneath us */ public readonly int RelativeAltitude = 0; + public readonly string[] PassengerTypes; public object Create(ActorInitializer init) { return new RenderCargo(init.self, this); } } @@ -49,7 +50,12 @@ namespace OpenRA.Mods.Cnc cargoFacing.Facing = facing.Facing; } - return r.Concat(cargo.Passengers.SelectMany(a => a.Render()) + var visiblePassengers = (Info.PassengerTypes != null && Info.PassengerTypes.Length > 0) + ? cargo.Passengers.Where(p => + Info.PassengerTypes.Contains(p.Trait().info.CargoType)) + : cargo.Passengers; + + return r.Concat(visiblePassengers.SelectMany(a => a.Render()) .Select(a => a.WithPos(a.Pos - new float2(0, Info.RelativeAltitude)) .WithZOffset(a.ZOffset + Info.RelativeAltitude))); } diff --git a/OpenRA.Mods.RA/Passenger.cs b/OpenRA.Mods.RA/Passenger.cs index d5cc9911fe..7a4c9fc6b8 100644 --- a/OpenRA.Mods.RA/Passenger.cs +++ b/OpenRA.Mods.RA/Passenger.cs @@ -28,7 +28,7 @@ namespace OpenRA.Mods.RA public class Passenger : IIssueOrder, IResolveOrder, IOrderVoice { - readonly PassengerInfo info; + public readonly PassengerInfo info; public Passenger( PassengerInfo info ) { this.info = info; } public IEnumerable Orders