From 74b948342e5c8896bbeedb6be75f0d20b6ce5b85 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Wed, 15 Jul 2015 07:02:31 +0200 Subject: [PATCH 1/4] Fix WithSpriteBody PlayCustomAnimationRepeating Lacked damage stage awareness. --- OpenRA.Mods.Common/Traits/Render/WithSpriteBody.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Render/WithSpriteBody.cs b/OpenRA.Mods.Common/Traits/Render/WithSpriteBody.cs index 3cd3a2414a..f386f8ec39 100644 --- a/OpenRA.Mods.Common/Traits/Render/WithSpriteBody.cs +++ b/OpenRA.Mods.Common/Traits/Render/WithSpriteBody.cs @@ -81,8 +81,8 @@ namespace OpenRA.Mods.Common.Traits public void PlayCustomAnimationRepeating(Actor self, string name) { - DefaultAnimation.PlayThen(name, - () => PlayCustomAnimationRepeating(self, name)); + var sequence = NormalizeSequence(self, name); + DefaultAnimation.PlayThen(sequence, () => PlayCustomAnimationRepeating(self, sequence)); } public void PlayCustomAnimationBackwards(Actor self, string name, Action after = null) From fe346e5401c433f57353e832ada4a03b1b5fd1d6 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Thu, 16 Jul 2015 17:16:33 +0200 Subject: [PATCH 2/4] Replace RenderBuilding where already possible --- mods/cnc/rules/defaults.yaml | 12 +++++++++--- mods/ra/rules/defaults.yaml | 8 ++++++-- mods/ra/rules/misc.yaml | 24 ++++++++++++++++++------ mods/ts/rules/defaults.yaml | 8 ++++++-- mods/ts/rules/trees.yaml | 4 +++- 5 files changed, 42 insertions(+), 14 deletions(-) diff --git a/mods/cnc/rules/defaults.yaml b/mods/cnc/rules/defaults.yaml index 878a5739a3..29ae3b6700 100644 --- a/mods/cnc/rules/defaults.yaml +++ b/mods/cnc/rules/defaults.yaml @@ -516,8 +516,10 @@ Name: Field (Destroyed) GenericVisibility: None BodyOrientation: - RenderBuilding: + RenderSprites: Palette: terrain + WithSpriteBody: + AutoSelectionSize: FrozenUnderFog: StartsRevealed: true ScriptTriggers: @@ -555,8 +557,10 @@ ^Tree: Tooltip: Name: Tree - RenderBuilding: + RenderSprites: Palette: staticterrain + WithSpriteBody: + AutoSelectionSize: Building: Footprint: __ x_ Dimensions: 2,2 @@ -592,8 +596,10 @@ ^Rock: Tooltip: Name: Rock - RenderBuilding: + RenderSprites: Palette: staticterrain + WithSpriteBody: + AutoSelectionSize: Building: Footprint: __ x_ Dimensions: 2,2 diff --git a/mods/ra/rules/defaults.yaml b/mods/ra/rules/defaults.yaml index be7b4c1471..1aea9b7ef8 100644 --- a/mods/ra/rules/defaults.yaml +++ b/mods/ra/rules/defaults.yaml @@ -524,8 +524,10 @@ ^Tree: Tooltip: Name: Tree - RenderBuilding: + RenderSprites: Palette: terrain + WithSpriteBody: + AutoSelectionSize: Building: Footprint: x Dimensions: 1,1 @@ -621,8 +623,10 @@ ^Rock: Tooltip: Name: Rock - RenderBuilding: + RenderSprites: Palette: terrain + WithSpriteBody: + AutoSelectionSize: Building: Footprint: __ x_ Dimensions: 2,2 diff --git a/mods/ra/rules/misc.yaml b/mods/ra/rules/misc.yaml index e6a0dc285d..28712624ec 100644 --- a/mods/ra/rules/misc.yaml +++ b/mods/ra/rules/misc.yaml @@ -234,8 +234,10 @@ MINE: HiddenUnderShroud: Tooltip: Name: Ore Mine - RenderBuilding: + RenderSprites: Palette: terrain + WithSpriteBody: + AutoSelectionSize: Building: Footprint: x Dimensions: 1,1 @@ -250,8 +252,10 @@ GMINE: HiddenUnderShroud: Tooltip: Name: Gem Mine - RenderBuilding: + RenderSprites: Palette: player + WithSpriteBody: + AutoSelectionSize: Building: Footprint: x Dimensions: 1,1 @@ -267,8 +271,10 @@ RAILMINE: HiddenUnderShroud: Tooltip: Name: Abandoned Mine - RenderBuilding: + RenderSprites: Palette: player + WithSpriteBody: + AutoSelectionSize: Building: Footprint: xx Dimensions: 2,1 @@ -284,7 +290,9 @@ QUEE: Building: Footprint: xx Dimensions: 2,1 - RenderBuilding: + RenderSprites: + WithSpriteBody: + AutoSelectionSize: AppearsOnRadar: BodyOrientation: EditorTilesetFilter: @@ -297,8 +305,10 @@ LAR1: Building: Footprint: x Dimensions: 1,1 - RenderBuilding: + RenderSprites: Palette: terrain + WithSpriteBody: + AutoSelectionSize: AppearsOnRadar: BodyOrientation: EditorTilesetFilter: @@ -311,8 +321,10 @@ LAR2: Building: Footprint: x Dimensions: 1,1 - RenderBuilding: + RenderSprites: Palette: terrain + WithSpriteBody: + AutoSelectionSize: AppearsOnRadar: BodyOrientation: EditorTilesetFilter: diff --git a/mods/ts/rules/defaults.yaml b/mods/ts/rules/defaults.yaml index aaeec0e5e2..95ec47962d 100644 --- a/mods/ts/rules/defaults.yaml +++ b/mods/ts/rules/defaults.yaml @@ -528,8 +528,10 @@ ^Tree: HiddenUnderShroud: - RenderBuilding: + RenderSprites: Palette: terrain + WithSpriteBody: + AutoSelectionSize: Building: Footprint: x Dimensions: 1, 1 @@ -540,8 +542,10 @@ ^Rock: HiddenUnderShroud: - RenderBuilding: + RenderSprites: Palette: terrain + WithSpriteBody: + AutoSelectionSize: Building: Footprint: x Dimensions: 1, 1 diff --git a/mods/ts/rules/trees.yaml b/mods/ts/rules/trees.yaml index 094fe2663f..2edbfcc809 100644 --- a/mods/ts/rules/trees.yaml +++ b/mods/ts/rules/trees.yaml @@ -108,6 +108,8 @@ VEINHOLE: AppearsOnRadar: Tooltip: Name: Veinhole - RenderBuilding: + RenderSprites: Palette: player + WithSpriteBody: + AutoSelectionSize: From 2e9a4b78a38b393df688bfd09ecdfecb89905d74 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Thu, 16 Jul 2015 14:52:12 +0200 Subject: [PATCH 3/4] Refactor RenderEditorOnly into RenderSpritesEditorOnly + WithSpriteBody --- OpenRA.Mods.Common/OpenRA.Mods.Common.csproj | 2 +- ...itorOnly.cs => RenderSpritesEditorOnly.cs} | 10 +++---- .../UtilityCommands/UpgradeRules.cs | 26 +++++++++++++++++++ mods/cnc/rules/misc.yaml | 6 +++-- mods/d2k/rules/misc.yaml | 11 ++++---- mods/ra/rules/misc.yaml | 9 ++++--- mods/ts/rules/misc.yaml | 6 +++-- 7 files changed, 52 insertions(+), 18 deletions(-) rename OpenRA.Mods.Common/Traits/Render/{RenderEditorOnly.cs => RenderSpritesEditorOnly.cs} (71%) diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index a35bf7ce2c..488ef9fd21 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -404,7 +404,7 @@ - + diff --git a/OpenRA.Mods.Common/Traits/Render/RenderEditorOnly.cs b/OpenRA.Mods.Common/Traits/Render/RenderSpritesEditorOnly.cs similarity index 71% rename from OpenRA.Mods.Common/Traits/Render/RenderEditorOnly.cs rename to OpenRA.Mods.Common/Traits/Render/RenderSpritesEditorOnly.cs index 90184db62c..937f0140b5 100644 --- a/OpenRA.Mods.Common/Traits/Render/RenderEditorOnly.cs +++ b/OpenRA.Mods.Common/Traits/Render/RenderSpritesEditorOnly.cs @@ -14,15 +14,15 @@ using OpenRA.Graphics; namespace OpenRA.Mods.Common.Traits { [Desc("Invisible during games.")] - class RenderEditorOnlyInfo : RenderSimpleInfo + class RenderSpritesEditorOnlyInfo : RenderSpritesInfo { - public override object Create(ActorInitializer init) { return new RenderEditorOnly(init, this); } + public override object Create(ActorInitializer init) { return new RenderSpritesEditorOnly(init, this); } } - class RenderEditorOnly : RenderSimple + class RenderSpritesEditorOnly : RenderSprites { - public RenderEditorOnly(ActorInitializer init, RenderEditorOnlyInfo info) - : base(init, info, () => 0) { } + public RenderSpritesEditorOnly(ActorInitializer init, RenderSpritesEditorOnlyInfo info) + : base(init, info) { } public override IEnumerable Render(Actor self, WorldRenderer wr) { return SpriteRenderable.None; } } diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs index e23f86f98e..2ac14ecccf 100644 --- a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs +++ b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs @@ -1637,6 +1637,32 @@ namespace OpenRA.Mods.Common.UtilityCommands } } + if (engineVersion < 20150720) + { + // Rename RenderEditorOnly to RenderSpritesEditorOnly + if (depth == 0) + { + var reo = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("RenderEditorOnly")); + if (reo != null) + { + reo.Key = "RenderSpritesEditorOnly"; + + var wsbNodes = reo.Value.Nodes.Where(n => n.Key == "Sequence").ToList(); + + if (wsbNodes.Any()) + node.Value.Nodes.Add(new MiniYamlNode("WithSpriteBody", new MiniYaml("", wsbNodes))); + else + node.Value.Nodes.Add(new MiniYamlNode("WithSpriteBody", "")); + + reo.Value.Nodes.RemoveAll(n => wsbNodes.Contains(n)); + } + + var rreo = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("-RenderEditorOnly")); + if (rreo != null) + rreo.Key = "-RenderSpritesEditorOnly"; + } + } + UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1); } } diff --git a/mods/cnc/rules/misc.yaml b/mods/cnc/rules/misc.yaml index d6610af0d8..8de9650a65 100644 --- a/mods/cnc/rules/misc.yaml +++ b/mods/cnc/rules/misc.yaml @@ -34,7 +34,8 @@ mpspawn: AlwaysVisible: Immobile: OccupiesSpace: false - RenderEditorOnly: + WithSpriteBody: + RenderSpritesEditorOnly: Palette: chrome BodyOrientation: @@ -42,7 +43,8 @@ waypoint: AlwaysVisible: Immobile: OccupiesSpace: false - RenderEditorOnly: + WithSpriteBody: + RenderSpritesEditorOnly: Palette: chrome BodyOrientation: diff --git a/mods/d2k/rules/misc.yaml b/mods/d2k/rules/misc.yaml index 9113a9893a..5f550faa74 100644 --- a/mods/d2k/rules/misc.yaml +++ b/mods/d2k/rules/misc.yaml @@ -114,22 +114,22 @@ mpspawn: AlwaysVisible: Immobile: OccupiesSpace: false - RenderEditorOnly: + RenderSpritesEditorOnly: + WithSpriteBody: BodyOrientation: waypoint: AlwaysVisible: Immobile: OccupiesSpace: false - RenderEditorOnly: + RenderSpritesEditorOnly: + WithSpriteBody: BodyOrientation: ^carryall.colorpicker: Inherits: carryall - WithFacingSpriteBody: Helicopter: InitialFacing: 104 - AutoSelectionSize: RenderSprites: Image: carryall Palette: colorpicker @@ -149,7 +149,8 @@ wormspawner: AlwaysVisible: Immobile: OccupiesSpace: false - RenderEditorOnly: + RenderSpritesEditorOnly: + WithSpriteBody: BodyOrientation: WormSpawner: diff --git a/mods/ra/rules/misc.yaml b/mods/ra/rules/misc.yaml index 28712624ec..80e62ec8eb 100644 --- a/mods/ra/rules/misc.yaml +++ b/mods/ra/rules/misc.yaml @@ -181,7 +181,8 @@ CAMERA: BodyOrientation: DetectCloaked: Range: 10 - RenderEditorOnly: + WithSpriteBody: + RenderSpritesEditorOnly: Image: camera camera.paradrop: @@ -390,14 +391,16 @@ mpspawn: AlwaysVisible: Immobile: OccupiesSpace: false - RenderEditorOnly: + WithSpriteBody: + RenderSpritesEditorOnly: BodyOrientation: waypoint: AlwaysVisible: Immobile: OccupiesSpace: false - RenderEditorOnly: + WithSpriteBody: + RenderSpritesEditorOnly: BodyOrientation: ^fact.colorpicker: diff --git a/mods/ts/rules/misc.yaml b/mods/ts/rules/misc.yaml index f931bc6c6c..87e9338a8d 100644 --- a/mods/ts/rules/misc.yaml +++ b/mods/ts/rules/misc.yaml @@ -2,14 +2,16 @@ mpspawn: AlwaysVisible: Immobile: OccupiesSpace: false - RenderEditorOnly: + RenderSpritesEditorOnly: + WithSpriteBody: BodyOrientation: waypoint: AlwaysVisible: Immobile: OccupiesSpace: false - RenderEditorOnly: + RenderSpritesEditorOnly: + WithSpriteBody: BodyOrientation: ^mmch.colorpicker: From 65c95eb2ee1ddddf6c42e73222277f3a7e98f7a4 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Sat, 18 Jul 2015 17:06:39 +0200 Subject: [PATCH 4/4] Adapted WithHarvestAnimation to account for damage stages --- .../Traits/Render/WithHarvestAnimation.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Render/WithHarvestAnimation.cs b/OpenRA.Mods.Common/Traits/Render/WithHarvestAnimation.cs index fdc0bc196d..91254be94a 100644 --- a/OpenRA.Mods.Common/Traits/Render/WithHarvestAnimation.cs +++ b/OpenRA.Mods.Common/Traits/Render/WithHarvestAnimation.cs @@ -52,19 +52,20 @@ namespace OpenRA.Mods.Common.Traits public void Tick(Actor self) { - if (!IsModifying && !string.IsNullOrEmpty(wsb.Info.Sequence) && wsb.DefaultAnimation.HasSequence(NormalizeHarvesterSequence(self, wsb.Info.Sequence))) - { - if (wsb.DefaultAnimation.CurrentSequence.Name != NormalizeHarvesterSequence(self, wsb.Info.Sequence)) - wsb.DefaultAnimation.ReplaceAnim(NormalizeHarvesterSequence(self, wsb.Info.Sequence)); - } + var baseSequence = wsb.NormalizeSequence(self, wsb.Info.Sequence); + var sequence = NormalizeHarvesterSequence(self, baseSequence); + if (!IsModifying && wsb.DefaultAnimation.HasSequence(sequence) && wsb.DefaultAnimation.CurrentSequence.Name != sequence) + wsb.DefaultAnimation.ReplaceAnim(sequence); } public void Harvested(Actor self, ResourceType resource) { - if (!IsModifying && !string.IsNullOrEmpty(Info.HarvestSequence) && wsb.DefaultAnimation.HasSequence(NormalizeHarvesterSequence(self, Info.HarvestSequence))) + var baseSequence = wsb.NormalizeSequence(self, Info.HarvestSequence); + var sequence = NormalizeHarvesterSequence(self, baseSequence); + if (!IsModifying && wsb.DefaultAnimation.HasSequence(sequence)) { IsModifying = true; - wsb.PlayCustomAnimation(self, NormalizeHarvesterSequence(self, Info.HarvestSequence), () => IsModifying = false); + wsb.PlayCustomAnimation(self, sequence, () => IsModifying = false); } }