Merge pull request #8725 from reaperrr/bye-rendersimple-pr1

Step towards removing RenderSimple and its derivatives (Part 1)
This commit is contained in:
Pavel Penev
2015-07-25 18:43:13 +03:00
13 changed files with 104 additions and 41 deletions

View File

@@ -404,7 +404,7 @@
<Compile Include="Traits\Render\RenderBuilding.cs" /> <Compile Include="Traits\Render\RenderBuilding.cs" />
<Compile Include="Traits\Render\RenderBuildingCharge.cs" /> <Compile Include="Traits\Render\RenderBuildingCharge.cs" />
<Compile Include="Traits\Render\RenderBuildingTurreted.cs" /> <Compile Include="Traits\Render\RenderBuildingTurreted.cs" />
<Compile Include="Traits\Render\RenderEditorOnly.cs" /> <Compile Include="Traits\Render\RenderSpritesEditorOnly.cs" />
<Compile Include="Traits\Render\RenderNameTag.cs" /> <Compile Include="Traits\Render\RenderNameTag.cs" />
<Compile Include="Traits\Render\RenderSimple.cs" /> <Compile Include="Traits\Render\RenderSimple.cs" />
<Compile Include="Traits\Render\RenderSprites.cs" /> <Compile Include="Traits\Render\RenderSprites.cs" />

View File

@@ -14,15 +14,15 @@ using OpenRA.Graphics;
namespace OpenRA.Mods.Common.Traits namespace OpenRA.Mods.Common.Traits
{ {
[Desc("Invisible during games.")] [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) public RenderSpritesEditorOnly(ActorInitializer init, RenderSpritesEditorOnlyInfo info)
: base(init, info, () => 0) { } : base(init, info) { }
public override IEnumerable<IRenderable> Render(Actor self, WorldRenderer wr) { return SpriteRenderable.None; } public override IEnumerable<IRenderable> Render(Actor self, WorldRenderer wr) { return SpriteRenderable.None; }
} }

View File

@@ -52,19 +52,20 @@ namespace OpenRA.Mods.Common.Traits
public void Tick(Actor self) public void Tick(Actor self)
{ {
if (!IsModifying && !string.IsNullOrEmpty(wsb.Info.Sequence) && wsb.DefaultAnimation.HasSequence(NormalizeHarvesterSequence(self, wsb.Info.Sequence))) var baseSequence = wsb.NormalizeSequence(self, wsb.Info.Sequence);
{ var sequence = NormalizeHarvesterSequence(self, baseSequence);
if (wsb.DefaultAnimation.CurrentSequence.Name != NormalizeHarvesterSequence(self, wsb.Info.Sequence)) if (!IsModifying && wsb.DefaultAnimation.HasSequence(sequence) && wsb.DefaultAnimation.CurrentSequence.Name != sequence)
wsb.DefaultAnimation.ReplaceAnim(NormalizeHarvesterSequence(self, wsb.Info.Sequence)); wsb.DefaultAnimation.ReplaceAnim(sequence);
}
} }
public void Harvested(Actor self, ResourceType resource) 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; IsModifying = true;
wsb.PlayCustomAnimation(self, NormalizeHarvesterSequence(self, Info.HarvestSequence), () => IsModifying = false); wsb.PlayCustomAnimation(self, sequence, () => IsModifying = false);
} }
} }

View File

@@ -81,8 +81,8 @@ namespace OpenRA.Mods.Common.Traits
public void PlayCustomAnimationRepeating(Actor self, string name) public void PlayCustomAnimationRepeating(Actor self, string name)
{ {
DefaultAnimation.PlayThen(name, var sequence = NormalizeSequence(self, name);
() => PlayCustomAnimationRepeating(self, name)); DefaultAnimation.PlayThen(sequence, () => PlayCustomAnimationRepeating(self, sequence));
} }
public void PlayCustomAnimationBackwards(Actor self, string name, Action after = null) public void PlayCustomAnimationBackwards(Actor self, string name, Action after = null)

View File

@@ -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); UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
} }
} }

View File

@@ -516,8 +516,10 @@
Name: Field (Destroyed) Name: Field (Destroyed)
GenericVisibility: None GenericVisibility: None
BodyOrientation: BodyOrientation:
RenderBuilding: RenderSprites:
Palette: terrain Palette: terrain
WithSpriteBody:
AutoSelectionSize:
FrozenUnderFog: FrozenUnderFog:
StartsRevealed: true StartsRevealed: true
ScriptTriggers: ScriptTriggers:
@@ -555,8 +557,10 @@
^Tree: ^Tree:
Tooltip: Tooltip:
Name: Tree Name: Tree
RenderBuilding: RenderSprites:
Palette: staticterrain Palette: staticterrain
WithSpriteBody:
AutoSelectionSize:
Building: Building:
Footprint: __ x_ Footprint: __ x_
Dimensions: 2,2 Dimensions: 2,2
@@ -592,8 +596,10 @@
^Rock: ^Rock:
Tooltip: Tooltip:
Name: Rock Name: Rock
RenderBuilding: RenderSprites:
Palette: staticterrain Palette: staticterrain
WithSpriteBody:
AutoSelectionSize:
Building: Building:
Footprint: __ x_ Footprint: __ x_
Dimensions: 2,2 Dimensions: 2,2

View File

@@ -34,7 +34,8 @@ mpspawn:
AlwaysVisible: AlwaysVisible:
Immobile: Immobile:
OccupiesSpace: false OccupiesSpace: false
RenderEditorOnly: WithSpriteBody:
RenderSpritesEditorOnly:
Palette: chrome Palette: chrome
BodyOrientation: BodyOrientation:
@@ -42,7 +43,8 @@ waypoint:
AlwaysVisible: AlwaysVisible:
Immobile: Immobile:
OccupiesSpace: false OccupiesSpace: false
RenderEditorOnly: WithSpriteBody:
RenderSpritesEditorOnly:
Palette: chrome Palette: chrome
BodyOrientation: BodyOrientation:

View File

@@ -114,22 +114,22 @@ mpspawn:
AlwaysVisible: AlwaysVisible:
Immobile: Immobile:
OccupiesSpace: false OccupiesSpace: false
RenderEditorOnly: RenderSpritesEditorOnly:
WithSpriteBody:
BodyOrientation: BodyOrientation:
waypoint: waypoint:
AlwaysVisible: AlwaysVisible:
Immobile: Immobile:
OccupiesSpace: false OccupiesSpace: false
RenderEditorOnly: RenderSpritesEditorOnly:
WithSpriteBody:
BodyOrientation: BodyOrientation:
^carryall.colorpicker: ^carryall.colorpicker:
Inherits: carryall Inherits: carryall
WithFacingSpriteBody:
Helicopter: Helicopter:
InitialFacing: 104 InitialFacing: 104
AutoSelectionSize:
RenderSprites: RenderSprites:
Image: carryall Image: carryall
Palette: colorpicker Palette: colorpicker
@@ -149,7 +149,8 @@ wormspawner:
AlwaysVisible: AlwaysVisible:
Immobile: Immobile:
OccupiesSpace: false OccupiesSpace: false
RenderEditorOnly: RenderSpritesEditorOnly:
WithSpriteBody:
BodyOrientation: BodyOrientation:
WormSpawner: WormSpawner:

View File

@@ -524,8 +524,10 @@
^Tree: ^Tree:
Tooltip: Tooltip:
Name: Tree Name: Tree
RenderBuilding: RenderSprites:
Palette: terrain Palette: terrain
WithSpriteBody:
AutoSelectionSize:
Building: Building:
Footprint: x Footprint: x
Dimensions: 1,1 Dimensions: 1,1
@@ -621,8 +623,10 @@
^Rock: ^Rock:
Tooltip: Tooltip:
Name: Rock Name: Rock
RenderBuilding: RenderSprites:
Palette: terrain Palette: terrain
WithSpriteBody:
AutoSelectionSize:
Building: Building:
Footprint: __ x_ Footprint: __ x_
Dimensions: 2,2 Dimensions: 2,2

View File

@@ -181,7 +181,8 @@ CAMERA:
BodyOrientation: BodyOrientation:
DetectCloaked: DetectCloaked:
Range: 10 Range: 10
RenderEditorOnly: WithSpriteBody:
RenderSpritesEditorOnly:
Image: camera Image: camera
camera.paradrop: camera.paradrop:
@@ -234,8 +235,10 @@ MINE:
HiddenUnderShroud: HiddenUnderShroud:
Tooltip: Tooltip:
Name: Ore Mine Name: Ore Mine
RenderBuilding: RenderSprites:
Palette: terrain Palette: terrain
WithSpriteBody:
AutoSelectionSize:
Building: Building:
Footprint: x Footprint: x
Dimensions: 1,1 Dimensions: 1,1
@@ -250,8 +253,10 @@ GMINE:
HiddenUnderShroud: HiddenUnderShroud:
Tooltip: Tooltip:
Name: Gem Mine Name: Gem Mine
RenderBuilding: RenderSprites:
Palette: player Palette: player
WithSpriteBody:
AutoSelectionSize:
Building: Building:
Footprint: x Footprint: x
Dimensions: 1,1 Dimensions: 1,1
@@ -267,8 +272,10 @@ RAILMINE:
HiddenUnderShroud: HiddenUnderShroud:
Tooltip: Tooltip:
Name: Abandoned Mine Name: Abandoned Mine
RenderBuilding: RenderSprites:
Palette: player Palette: player
WithSpriteBody:
AutoSelectionSize:
Building: Building:
Footprint: xx Footprint: xx
Dimensions: 2,1 Dimensions: 2,1
@@ -284,7 +291,9 @@ QUEE:
Building: Building:
Footprint: xx Footprint: xx
Dimensions: 2,1 Dimensions: 2,1
RenderBuilding: RenderSprites:
WithSpriteBody:
AutoSelectionSize:
AppearsOnRadar: AppearsOnRadar:
BodyOrientation: BodyOrientation:
EditorTilesetFilter: EditorTilesetFilter:
@@ -297,8 +306,10 @@ LAR1:
Building: Building:
Footprint: x Footprint: x
Dimensions: 1,1 Dimensions: 1,1
RenderBuilding: RenderSprites:
Palette: terrain Palette: terrain
WithSpriteBody:
AutoSelectionSize:
AppearsOnRadar: AppearsOnRadar:
BodyOrientation: BodyOrientation:
EditorTilesetFilter: EditorTilesetFilter:
@@ -311,8 +322,10 @@ LAR2:
Building: Building:
Footprint: x Footprint: x
Dimensions: 1,1 Dimensions: 1,1
RenderBuilding: RenderSprites:
Palette: terrain Palette: terrain
WithSpriteBody:
AutoSelectionSize:
AppearsOnRadar: AppearsOnRadar:
BodyOrientation: BodyOrientation:
EditorTilesetFilter: EditorTilesetFilter:
@@ -378,14 +391,16 @@ mpspawn:
AlwaysVisible: AlwaysVisible:
Immobile: Immobile:
OccupiesSpace: false OccupiesSpace: false
RenderEditorOnly: WithSpriteBody:
RenderSpritesEditorOnly:
BodyOrientation: BodyOrientation:
waypoint: waypoint:
AlwaysVisible: AlwaysVisible:
Immobile: Immobile:
OccupiesSpace: false OccupiesSpace: false
RenderEditorOnly: WithSpriteBody:
RenderSpritesEditorOnly:
BodyOrientation: BodyOrientation:
^fact.colorpicker: ^fact.colorpicker:

View File

@@ -528,8 +528,10 @@
^Tree: ^Tree:
HiddenUnderShroud: HiddenUnderShroud:
RenderBuilding: RenderSprites:
Palette: terrain Palette: terrain
WithSpriteBody:
AutoSelectionSize:
Building: Building:
Footprint: x Footprint: x
Dimensions: 1, 1 Dimensions: 1, 1
@@ -540,8 +542,10 @@
^Rock: ^Rock:
HiddenUnderShroud: HiddenUnderShroud:
RenderBuilding: RenderSprites:
Palette: terrain Palette: terrain
WithSpriteBody:
AutoSelectionSize:
Building: Building:
Footprint: x Footprint: x
Dimensions: 1, 1 Dimensions: 1, 1

View File

@@ -2,14 +2,16 @@ mpspawn:
AlwaysVisible: AlwaysVisible:
Immobile: Immobile:
OccupiesSpace: false OccupiesSpace: false
RenderEditorOnly: RenderSpritesEditorOnly:
WithSpriteBody:
BodyOrientation: BodyOrientation:
waypoint: waypoint:
AlwaysVisible: AlwaysVisible:
Immobile: Immobile:
OccupiesSpace: false OccupiesSpace: false
RenderEditorOnly: RenderSpritesEditorOnly:
WithSpriteBody:
BodyOrientation: BodyOrientation:
^mmch.colorpicker: ^mmch.colorpicker:

View File

@@ -108,6 +108,8 @@ VEINHOLE:
AppearsOnRadar: AppearsOnRadar:
Tooltip: Tooltip:
Name: Veinhole Name: Veinhole
RenderBuilding: RenderSprites:
Palette: player Palette: player
WithSpriteBody:
AutoSelectionSize: