From ef01fb289b6e82f52b1beccaed02ffa05a0779de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Sun, 22 Jun 2014 15:34:52 +0200 Subject: [PATCH] make the parachute animation optional instead of hard-coding default sprite sequences --- OpenRA.Mods.RA/Effects/Parachute.cs | 19 ++++++++++++------- OpenRA.Mods.RA/Parachutable.cs | 3 ++- OpenRA.Utility/UpgradeRules.cs | 3 +++ mods/d2k/bits/parach.shp | Bin 13262 -> 0 bytes mods/ra/rules/defaults.yaml | 2 ++ mods/ra/rules/misc.yaml | 3 +++ 6 files changed, 22 insertions(+), 8 deletions(-) delete mode 100644 mods/d2k/bits/parach.shp diff --git a/OpenRA.Mods.RA/Effects/Parachute.cs b/OpenRA.Mods.RA/Effects/Parachute.cs index 1767e334a7..b614161533 100644 --- a/OpenRA.Mods.RA/Effects/Parachute.cs +++ b/OpenRA.Mods.RA/Effects/Parachute.cs @@ -18,7 +18,7 @@ namespace OpenRA.Mods.RA.Effects { public class Parachute : IEffect { - readonly Animation paraAnim; + readonly Animation parachute; readonly WVec parachuteOffset; readonly Actor cargo; WPos pos; @@ -29,9 +29,12 @@ namespace OpenRA.Mods.RA.Effects this.cargo = cargo; var parachutableInfo = cargo.Info.Traits.GetOrDefault(); - var sprite = parachutableInfo != null ? parachutableInfo.ParachuteSprite : "parach"; - paraAnim = new Animation(cargo.World, sprite); - paraAnim.PlayThen("open", () => paraAnim.PlayRepeating("idle")); + var parachuteSprite = parachutableInfo != null ? parachutableInfo.ParachuteSequence : null; + if (parachuteSprite != null) + { + parachute = new Animation(cargo.World, parachuteSprite); + parachute.PlayThen("open", () => parachute.PlayRepeating("idle")); + } if (parachutableInfo != null) parachuteOffset = parachutableInfo.ParachuteOffset; @@ -44,7 +47,8 @@ namespace OpenRA.Mods.RA.Effects public void Tick(World world) { - paraAnim.Tick(); + if (parachute != null) + parachute.Tick(); pos -= fallRate; @@ -79,8 +83,9 @@ namespace OpenRA.Mods.RA.Effects yield return c.OffsetBy(pos - c.Pos); } - foreach (var r in paraAnim.Render(pos, parachuteOffset, 1, rc.First().Palette, 1f)) - yield return r; + if (parachute != null) + foreach (var r in parachute.Render(pos, parachuteOffset, 1, rc.First().Palette, 1f)) + yield return r; } } } diff --git a/OpenRA.Mods.RA/Parachutable.cs b/OpenRA.Mods.RA/Parachutable.cs index 75e2586b67..76a1b9eeba 100644 --- a/OpenRA.Mods.RA/Parachutable.cs +++ b/OpenRA.Mods.RA/Parachutable.cs @@ -26,7 +26,8 @@ namespace OpenRA.Mods.RA public readonly string WaterCorpseSequence = "small_splash"; public readonly string WaterCorpsePalette = "effect"; - public readonly string ParachuteSprite = "parach"; + [Desc("Requires the sub-sequences \"open\" and \"idle\".")] + public readonly string ParachuteSequence = null; public readonly WVec ParachuteOffset = WVec.Zero; public object Create(ActorInitializer init) { return new Parachutable(init, this); } diff --git a/OpenRA.Utility/UpgradeRules.cs b/OpenRA.Utility/UpgradeRules.cs index 80c7df9c69..12551fb493 100644 --- a/OpenRA.Utility/UpgradeRules.cs +++ b/OpenRA.Utility/UpgradeRules.cs @@ -263,6 +263,9 @@ namespace OpenRA.Utility if (subnode.Key == "Offset") subnode.Key = "ParachuteOffset"; } + + if (depth == 2 && node.Key == "ParachuteSprite") + node.Key = "ParachuteSequence"; } UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); diff --git a/mods/d2k/bits/parach.shp b/mods/d2k/bits/parach.shp deleted file mode 100644 index 6ab15cd9caf722989339db13a12dd03d83492004..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13262 zcmeI2U5eB|5XT!=5CmbthXp|p_CXjB1W^yt_$4{amSQ9)BryLl^%p!ua%A7(YJ`<=1+C~LQoD6ZH?dW1J(+vH(Qt7Xz$DRUgvP&hV@|5Z^-t8 zHrWIe2i>%(K6$Zb7K`(+#0{fhK$$N6>{BMt9>rlwlUt% z+0G$E$Ob5zR1Pw%G>EF*328@=$FoX-m0M);A3bM}U$1vjGms z<2qwVvjKTAGO8o5C^H!{Ea+5LYX}&@;e3GD%cr;*KMrw3Z~dfYMr$rj$ugn!d;#Bu)0S!2%s+lH3AHYe~x2pKfH; z#kt#`E;3Y5M9BzG6JGr@#z0Y+QZh&deKX ztax`P)N%4mnxXiRlR0G?>U;1zxxP)g1!njb+IF@dGZglz3z}++QmkK6X8qCO-Z5W) zuX;9l?)E2(3>p{Snk7#R$?Is(mN9eN&R{}V^t5BcF&M!&$??dU8HmY`%s=QdV%YXg z>TuW6f}yrSTciv-CLE;`7|_SAklAqBcEWzVRc!7O4?I&8R%FJg-E%C&{~%8%iwwW; zqx`4u^+>7=-D=+BFafp7Y)#o?+n+8ni>Cs$mnl^wK#Cf+=I7Wc_t@7zQDmsb(CJm2 z0_az;DRVf$ipmcf8Jvr8%Od2KcV*~L;3yJ1K1ib$C)$^sQ- diff --git a/mods/ra/rules/defaults.yaml b/mods/ra/rules/defaults.yaml index ea847021f2..5d3eeba251 100644 --- a/mods/ra/rules/defaults.yaml +++ b/mods/ra/rules/defaults.yaml @@ -177,6 +177,8 @@ InfDeaths: 6 Parachutable: ParachuteOffset: 0,0,427 + KilledOnImpassableTerrain: true + ParachuteSequence: parach ^Ship: AppearsOnRadar: diff --git a/mods/ra/rules/misc.yaml b/mods/ra/rules/misc.yaml index ba8c2109f7..93051c793f 100644 --- a/mods/ra/rules/misc.yaml +++ b/mods/ra/rules/misc.yaml @@ -60,6 +60,9 @@ CRATE: Crate: Lifetime: 120 TerrainTypes: Clear, Rough, Road, Water, Ore, Beach + Parachutable: + KilledOnImpassableTerrain: false + ParachuteSequence: parach GiveCashCrateAction: Amount: 1000 SelectionShares: 50