diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj
index 1fa232d367..24746d4412 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/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);
}
}
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)
diff --git a/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs b/OpenRA.Mods.Common/UtilityCommands/UpgradeRules.cs
index 4d87407d32..4aa6ab9782 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/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/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/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..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:
@@ -234,8 +235,10 @@ MINE:
HiddenUnderShroud:
Tooltip:
Name: Ore Mine
- RenderBuilding:
+ RenderSprites:
Palette: terrain
+ WithSpriteBody:
+ AutoSelectionSize:
Building:
Footprint: x
Dimensions: 1,1
@@ -250,8 +253,10 @@ GMINE:
HiddenUnderShroud:
Tooltip:
Name: Gem Mine
- RenderBuilding:
+ RenderSprites:
Palette: player
+ WithSpriteBody:
+ AutoSelectionSize:
Building:
Footprint: x
Dimensions: 1,1
@@ -267,8 +272,10 @@ RAILMINE:
HiddenUnderShroud:
Tooltip:
Name: Abandoned Mine
- RenderBuilding:
+ RenderSprites:
Palette: player
+ WithSpriteBody:
+ AutoSelectionSize:
Building:
Footprint: xx
Dimensions: 2,1
@@ -284,7 +291,9 @@ QUEE:
Building:
Footprint: xx
Dimensions: 2,1
- RenderBuilding:
+ RenderSprites:
+ WithSpriteBody:
+ AutoSelectionSize:
AppearsOnRadar:
BodyOrientation:
EditorTilesetFilter:
@@ -297,8 +306,10 @@ LAR1:
Building:
Footprint: x
Dimensions: 1,1
- RenderBuilding:
+ RenderSprites:
Palette: terrain
+ WithSpriteBody:
+ AutoSelectionSize:
AppearsOnRadar:
BodyOrientation:
EditorTilesetFilter:
@@ -311,8 +322,10 @@ LAR2:
Building:
Footprint: x
Dimensions: 1,1
- RenderBuilding:
+ RenderSprites:
Palette: terrain
+ WithSpriteBody:
+ AutoSelectionSize:
AppearsOnRadar:
BodyOrientation:
EditorTilesetFilter:
@@ -378,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/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/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:
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: