From c7e76cc26da99ce8ae11470c86063f8e9836c7a1 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Tue, 17 Aug 2010 15:25:58 +1200 Subject: [PATCH] Visible cargo for LST --- OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj | 1 + OpenRA.Mods.Cnc/RenderCargo.cs | 41 ++++++++++++++++++++++++++ OpenRA.Mods.RA/Cargo.cs | 1 + mods/cnc/maps/gdi01/map.yaml | 1 + mods/cnc/sequences-vehicles.xml | 1 + mods/cnc/vehicles.yaml | 2 ++ 6 files changed, 47 insertions(+) create mode 100644 OpenRA.Mods.Cnc/RenderCargo.cs diff --git a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj index ba122626d5..8004297628 100644 --- a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj +++ b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj @@ -61,6 +61,7 @@ + diff --git a/OpenRA.Mods.Cnc/RenderCargo.cs b/OpenRA.Mods.Cnc/RenderCargo.cs new file mode 100644 index 0000000000..d597125668 --- /dev/null +++ b/OpenRA.Mods.Cnc/RenderCargo.cs @@ -0,0 +1,41 @@ +#region Copyright & License Information +/* + * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see LICENSE. + */ +#endregion + +using System.Collections.Generic; +using OpenRA.Traits; +using OpenRA.Mods.RA; +using System; +using System.Linq; + +namespace OpenRA.Mods.Cnc +{ + class RenderCargoInfo : ITraitInfo, ITraitPrerequisite + { + public object Create(ActorInitializer init) { return new RenderCargo(init.self); } + } + + public class RenderCargo : IRenderModifier + { + Cargo cargo; + + public RenderCargo(Actor self) + { + cargo = self.Trait(); + } + + public IEnumerable ModifyRender(Actor self, IEnumerable r) + { + foreach (var c in cargo.Passengers) + c.CenterLocation = self.CenterLocation; + + return r.Concat(cargo.Passengers.SelectMany(a => a.Render())); + } + } +} \ No newline at end of file diff --git a/OpenRA.Mods.RA/Cargo.cs b/OpenRA.Mods.RA/Cargo.cs index 752f6fe5e6..0d27c7ed84 100644 --- a/OpenRA.Mods.RA/Cargo.cs +++ b/OpenRA.Mods.RA/Cargo.cs @@ -24,6 +24,7 @@ namespace OpenRA.Mods.RA public class Cargo : IPips, IIssueOrder, IResolveOrder, IOrderCursor, IOrderVoice { List cargo = new List(); + public IEnumerable Passengers { get { return cargo; } } public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor) { diff --git a/mods/cnc/maps/gdi01/map.yaml b/mods/cnc/maps/gdi01/map.yaml index ccd428f6a4..e37b1aeaca 100644 --- a/mods/cnc/maps/gdi01/map.yaml +++ b/mods/cnc/maps/gdi01/map.yaml @@ -447,4 +447,5 @@ Rules: LocalPlayerFromMap: -CreateMPPlayers: -SpawnMPUnits: + -ConquestVictoryConditions: Gdi01Script: diff --git a/mods/cnc/sequences-vehicles.xml b/mods/cnc/sequences-vehicles.xml index a84e3c2569..bf090260ef 100644 --- a/mods/cnc/sequences-vehicles.xml +++ b/mods/cnc/sequences-vehicles.xml @@ -106,6 +106,7 @@ + diff --git a/mods/cnc/vehicles.yaml b/mods/cnc/vehicles.yaml index d312de8dbb..3eca65df0b 100644 --- a/mods/cnc/vehicles.yaml +++ b/mods/cnc/vehicles.yaml @@ -556,6 +556,8 @@ LST: RevealsShroud: Range: 7 RenderUnit: + BelowUnits: + RenderCargo: Cargo: Types: Infantry, Vehicle Passengers: 5