diff --git a/OpenRA.Mods.RA/Cargo.cs b/OpenRA.Mods.RA/Cargo.cs index f255642fcb..22cd55eb82 100644 --- a/OpenRA.Mods.RA/Cargo.cs +++ b/OpenRA.Mods.RA/Cargo.cs @@ -17,7 +17,7 @@ namespace OpenRA.Mods.RA public class CargoInfo : TraitInfo { public readonly int Passengers = 0; - public readonly string[] PassengerTypes = { }; + public readonly string[] Types = { }; public readonly int UnloadFacing = 0; } diff --git a/OpenRA.Mods.RA/Passenger.cs b/OpenRA.Mods.RA/Passenger.cs index 73de86e810..88197a0575 100644 --- a/OpenRA.Mods.RA/Passenger.cs +++ b/OpenRA.Mods.RA/Passenger.cs @@ -13,34 +13,36 @@ using OpenRA.Effects; using OpenRA.Mods.RA.Activities; using OpenRA.Traits; using OpenRA.Traits.Activities; +using System.Linq; namespace OpenRA.Mods.RA { class PassengerInfo : TraitInfo { - public readonly PipType ColorOfCargoPip = PipType.Green; + public readonly string CargoType = null; + public readonly PipType PipType = PipType.Green; } class Passenger : IIssueOrder, IResolveOrder, IOrderCursor, IOrderVoice { public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor) - { - // Disable cargo support until someone fixes it - return null; + { + if (mi.Button != MouseButton.Right) + return null; + + if (underCursor == null || underCursor.Owner != self.Owner) + return null; + + var cargo = underCursor.traits.GetOrDefault(); + if (cargo == null) + return null; - //if (mi.Button != MouseButton.Right) - // return null; - - //if (underCursor == null || underCursor.Owner != self.Owner) - // return null; - - //var cargo = underCursor.traits.GetOrDefault(); - //if (cargo == null) - // return null; - - //// Todo: Check if we can enter the transport + var pi = self.Info.Traits.Get(); + var ci = underCursor.Info.Traits.Get(); + if (!ci.Types.Contains(pi.CargoType)) + return null; - //return new Order("EnterTransport", self, underCursor); + return new Order("EnterTransport", self, underCursor); } bool CanEnter(Actor self, Actor a) @@ -85,7 +87,7 @@ namespace OpenRA.Mods.RA public PipType ColorOfCargoPip( Actor self ) { - return self.Info.Traits.Get().ColorOfCargoPip; + return self.Info.Traits.Get().PipType; } } } diff --git a/mods/cnc/defaults.yaml b/mods/cnc/defaults.yaml index 0fc0de88a7..ee8924f166 100644 --- a/mods/cnc/defaults.yaml +++ b/mods/cnc/defaults.yaml @@ -13,6 +13,7 @@ Repairable: Chronoshiftable: Passenger: + CargoType: Vehicle IronCurtainable: HiddenUnderFog: GainsExperience: @@ -36,6 +37,7 @@ Repairable: Chronoshiftable: Passenger: + CargoType: Vehicle IronCurtainable: HiddenUnderFog: GainsExperience: @@ -80,6 +82,7 @@ RenderInfantry: AutoTarget: Passenger: + CargoType: Infantry HiddenUnderFog: PoisonedByTiberium: GainsExperience: diff --git a/mods/cnc/infantry.yaml b/mods/cnc/infantry.yaml index 773ebb60c7..eeca728fed 100644 --- a/mods/cnc/infantry.yaml +++ b/mods/cnc/infantry.yaml @@ -128,7 +128,7 @@ E6: HP: 25 TakeCover: Passenger: - ColorOfCargoPip: Yellow + PipType: Yellow EngineerRepair: EngineerCapture: -AutoTarget: diff --git a/mods/cnc/vehicles.yaml b/mods/cnc/vehicles.yaml index 6a6829a289..62e0a71447 100644 --- a/mods/cnc/vehicles.yaml +++ b/mods/cnc/vehicles.yaml @@ -78,7 +78,7 @@ APC: WithMuzzleFlash: AutoTarget: Cargo: - PassengerTypes: Foot + Types: Infantry Passengers: 5 UnloadFacing: 220 @@ -418,7 +418,7 @@ TRAN: SecondaryOffset: 0,-14,0,-2 WithShadow: Cargo: - PassengerTypes: Foot + Types: Infantry Passengers: 5 HELI: @@ -489,6 +489,7 @@ C17: RenderUnit: WithShadow: Cargo: + Types: Infantry, Vehicle Passengers: 10 Invulnerable: -Selectable: diff --git a/mods/ra/defaults.yaml b/mods/ra/defaults.yaml index 7a19e361fc..cb5a311030 100644 --- a/mods/ra/defaults.yaml +++ b/mods/ra/defaults.yaml @@ -13,6 +13,7 @@ Repairable: Chronoshiftable: Passenger: + CargoType: Vehicle IronCurtainable: HiddenUnderFog: GainsExperience: @@ -36,6 +37,7 @@ Repairable: Chronoshiftable: Passenger: + CargoType: Vehicle IronCurtainable: HiddenUnderFog: GainsExperience: @@ -62,6 +64,7 @@ RenderInfantry: AutoTarget: Passenger: + CargoType: Infantry HiddenUnderFog: TeslaInstantKills: GainsExperience: diff --git a/mods/ra/infantry.yaml b/mods/ra/infantry.yaml index 4c16000cff..0605706884 100644 --- a/mods/ra/infantry.yaml +++ b/mods/ra/infantry.yaml @@ -125,7 +125,7 @@ E6: Mobile: Speed: 4 Passenger: - ColorOfCargoPip: Yellow + PipType: Yellow EngineerRepair: EngineerCapture: TakeCover: @@ -151,7 +151,7 @@ SPY: RevealsShroud: Range: 5 Passenger: - ColorOfCargoPip: Yellow + PipType: Yellow RenderSpy: TakeCover: Spy: @@ -204,7 +204,7 @@ MEDI: RevealsShroud: Range: 3 Passenger: - ColorOfCargoPip: Yellow + PipType: Yellow AutoHeal: AttackBase: PrimaryWeapon: Heal diff --git a/mods/ra/vehicles.yaml b/mods/ra/vehicles.yaml index 3bb23e5585..c83d089fd7 100644 --- a/mods/ra/vehicles.yaml +++ b/mods/ra/vehicles.yaml @@ -13,6 +13,7 @@ BADR: IronCurtainable: Cargo: Passengers: 10 + Types: Infantry, Vehicle -Selectable: -GainsExperience: @@ -307,7 +308,7 @@ APC: WithMuzzleFlash: AutoTarget: Cargo: - PassengerTypes: Foot + Types: Infantry Passengers: 5 UnloadFacing: 220 @@ -517,7 +518,7 @@ LST: Range: 6 RenderUnit: Cargo: - PassengerTypes: Foot,Wheel,Track + Types: Infantry, Vehicle Passengers: 5 IronCurtainable: RepairableNear: @@ -640,7 +641,7 @@ TRAN: SecondaryOffset: 0,-14,0,-2 WithShadow: Cargo: - PassengerTypes: Foot + Types: Infantry Passengers: 5 IronCurtainable: