From 9115395fb8d4203d3d27315f3d22fe6c21612f44 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Fri, 18 Apr 2014 15:35:55 +0200 Subject: [PATCH] GravityBomb palette can now be customized the same way as for Bullets and Missiles. Update CHANGELOG. Also mentioned Bullets and Missiles since it seems there wasn't an entry for that before. --- CHANGELOG | 1 + OpenRA.Mods.RA/Effects/GravityBomb.cs | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 19551994e3..10229c8f60 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -150,6 +150,7 @@ NEW: Added HitAnimPalette trait for LaserZap projectiles. Laser hit animations can now specify individual palettes. Defaults to effect palette. Added RenderNameTag trait to show the player's name above an actor. Added ExplosionPalette and WaterExplosionPalette traits to Warheads to allow custom explosion palettes. Defaults to effect palette. + Bullet, Missile and GravityBomb projectiles can now define a custom palette (see RA Torpedo weapon for reference). Fixed performance issues with units pathing to naval transports. Fixed unit moving to transports that have moved. Updated shroud-based traits to use world units. diff --git a/OpenRA.Mods.RA/Effects/GravityBomb.cs b/OpenRA.Mods.RA/Effects/GravityBomb.cs index 2eecc4a053..9a129e847d 100644 --- a/OpenRA.Mods.RA/Effects/GravityBomb.cs +++ b/OpenRA.Mods.RA/Effects/GravityBomb.cs @@ -18,6 +18,7 @@ namespace OpenRA.Mods.RA.Effects public class GravityBombInfo : IProjectileInfo { public readonly string Image = null; + public readonly bool Shadow = false; public readonly WRange Velocity = WRange.Zero; public readonly WRange Acceleration = new WRange(15); @@ -64,10 +65,19 @@ namespace OpenRA.Mods.RA.Effects public IEnumerable Render(WorldRenderer wr) { var cell = pos.ToCPos(); - if (args.SourceActor.World.FogObscures(cell)) - return SpriteRenderable.None; + if (!args.SourceActor.World.FogObscures(cell)) + { + if (info.Shadow) + { + var shadowPos = pos - new WVec(0, 0, pos.Z); + foreach (var r in anim.Render(shadowPos, wr.Palette("shadow"))) + yield return r; + } - return anim.Render(pos, wr.Palette("effect")); + var palette = wr.Palette(args.Weapon.Palette); + foreach (var r in anim.Render(pos, palette)) + yield return r; + } } } }