make the parachute palettes configurable

This commit is contained in:
Matthias Mailänder
2014-07-01 20:22:28 +02:00
parent ef01fb289b
commit 18a77e0039
2 changed files with 7 additions and 3 deletions

View File

@@ -18,6 +18,7 @@ namespace OpenRA.Mods.RA.Effects
{ {
public class Parachute : IEffect public class Parachute : IEffect
{ {
readonly ParachutableInfo parachutableInfo;
readonly Animation parachute; readonly Animation parachute;
readonly WVec parachuteOffset; readonly WVec parachuteOffset;
readonly Actor cargo; readonly Actor cargo;
@@ -28,7 +29,7 @@ namespace OpenRA.Mods.RA.Effects
{ {
this.cargo = cargo; this.cargo = cargo;
var parachutableInfo = cargo.Info.Traits.GetOrDefault<ParachutableInfo>(); parachutableInfo = cargo.Info.Traits.GetOrDefault<ParachutableInfo>();
var parachuteSprite = parachutableInfo != null ? parachutableInfo.ParachuteSequence : null; var parachuteSprite = parachutableInfo != null ? parachutableInfo.ParachuteSequence : null;
if (parachuteSprite != null) if (parachuteSprite != null)
{ {
@@ -74,7 +75,7 @@ namespace OpenRA.Mods.RA.Effects
if (!rc.Any()) if (!rc.Any())
yield break; yield break;
var shadow = wr.Palette("shadow"); var shadow = wr.Palette(parachutableInfo.ParachuteShadowPalette);
foreach (var c in rc) foreach (var c in rc)
{ {
if (!c.IsDecoration) if (!c.IsDecoration)
@@ -83,8 +84,9 @@ namespace OpenRA.Mods.RA.Effects
yield return c.OffsetBy(pos - c.Pos); yield return c.OffsetBy(pos - c.Pos);
} }
var palette = !string.IsNullOrEmpty(parachutableInfo.ParachutePalette) ? wr.Palette(parachutableInfo.ParachutePalette) : rc.First().Palette;
if (parachute != null) if (parachute != null)
foreach (var r in parachute.Render(pos, parachuteOffset, 1, rc.First().Palette, 1f)) foreach (var r in parachute.Render(pos, parachuteOffset, 1, palette, 1f))
yield return r; yield return r;
} }
} }

View File

@@ -28,6 +28,8 @@ namespace OpenRA.Mods.RA
[Desc("Requires the sub-sequences \"open\" and \"idle\".")] [Desc("Requires the sub-sequences \"open\" and \"idle\".")]
public readonly string ParachuteSequence = null; public readonly string ParachuteSequence = null;
public readonly string ParachutePalette = null;
public readonly string ParachuteShadowPalette = "shadow";
public readonly WVec ParachuteOffset = WVec.Zero; public readonly WVec ParachuteOffset = WVec.Zero;
public object Create(ActorInitializer init) { return new Parachutable(init, this); } public object Create(ActorInitializer init) { return new Parachutable(init, this); }