From c2029e9d5ca8e5ec3504efc50fcb6a17ce3bd0c2 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 1 Jul 2012 18:22:19 +1200 Subject: [PATCH] fixed #2166 - filtering of passengers to show with RenderCargo --- OpenRA.Mods.Cnc/RenderCargo.cs | 8 +++++++- OpenRA.Mods.RA/Passenger.cs | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) 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