RenderBuildingTurreted -> WithTurretedSpriteBody

This commit is contained in:
reaperrr
2015-07-15 07:02:02 +02:00
parent 69d062495c
commit 21186c10b6
8 changed files with 75 additions and 23 deletions

View File

@@ -406,8 +406,8 @@
<Compile Include="Traits\Render\Hovers.cs" />
<Compile Include="Traits\Render\LeavesTrails.cs" />
<Compile Include="Traits\Render\RenderBuilding.cs" />
<Compile Include="Traits\Render\RenderBuildingTurreted.cs" />
<Compile Include="Traits\Render\RenderSpritesEditorOnly.cs" />
<Compile Include="Traits\Render\WithTurretedSpriteBody.cs" />
<Compile Include="Traits\Render\RenderNameTag.cs" />
<Compile Include="Traits\Render\RenderSimple.cs" />
<Compile Include="Traits\Render\RenderSprites.cs" />

View File

@@ -17,24 +17,25 @@ using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
{
class RenderBuildingTurretedInfo : RenderBuildingInfo, Requires<TurretedInfo>
[Desc("This actor has turret art with facings baked into the sprite.")]
public class WithTurretedSpriteBodyInfo : WithSpriteBodyInfo, Requires<TurretedInfo>, Requires<IBodyOrientationInfo>
{
public override object Create(ActorInitializer init) { return new RenderBuildingTurreted(init, this); }
public override object Create(ActorInitializer init) { return new WithTurretedSpriteBody(init, this); }
public override IEnumerable<IActorPreview> RenderPreviewSprites(ActorPreviewInitializer init, RenderSpritesInfo rs, string image, int facings, PaletteReference p)
{
var t = init.Actor.Traits.WithInterface<TurretedInfo>()
.FirstOrDefault();
var t = init.Actor.Traits.WithInterface<TurretedInfo>().FirstOrDefault();
var wsb = init.Actor.Traits.WithInterface<WithSpriteBodyInfo>().FirstOrDefault();
// Show the correct turret facing
var anim = new Animation(init.World, image, () => t.InitialFacing);
anim.PlayRepeating(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), Sequence));
anim.PlayRepeating(RenderSprites.NormalizeSequence(anim, init.GetDamageState(), wsb.Sequence));
yield return new SpriteActorPreview(anim, WVec.Zero, 0, p, rs.Scale);
}
}
class RenderBuildingTurreted : RenderBuilding
public class WithTurretedSpriteBody : WithSpriteBody
{
readonly Turreted turreted;
@@ -45,7 +46,7 @@ namespace OpenRA.Mods.Common.Traits
return () => turreted.TurretFacing;
}
public RenderBuildingTurreted(ActorInitializer init, RenderBuildingInfo info)
public WithTurretedSpriteBody(ActorInitializer init, WithSpriteBodyInfo info)
: base(init, info, MakeTurretFacingFunc(init.Self))
{
turreted = init.Self.TraitsImplementing<Turreted>().FirstOrDefault();

View File

@@ -1875,6 +1875,33 @@ namespace OpenRA.Mods.Common.UtilityCommands
if (rrb != null)
rrb.Key = "-WithSiloAnimation";
}
// Replaced RenderBuildingTurreted with RenderSprites + WithTurretedSpriteBody (+AutoSelectionSize)
if (depth == 0)
{
var childKeysExcludeFromRS = new[] { "Sequence", "PauseOnLowPower" };
var rb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("RenderBuildingTurreted"));
if (rb != null)
{
rb.Key = "WithTurretedSpriteBody";
var rsNodes = rb.Value.Nodes.Where(n => !childKeysExcludeFromRS.Contains(n.Key)).ToList();
if (rsNodes.Any())
node.Value.Nodes.Add(new MiniYamlNode("RenderSprites", new MiniYaml("", rsNodes)));
else
node.Value.Nodes.Add(new MiniYamlNode("RenderSprites", ""));
node.Value.Nodes.Add(new MiniYamlNode("AutoSelectionSize", ""));
rb.Value.Nodes.RemoveAll(n => rsNodes.Contains(n));
}
var rrb = node.Value.Nodes.FirstOrDefault(n => n.Key.StartsWith("-RenderBuildingTurreted"));
if (rrb != null)
rrb.Key = "-WithTurretedSpriteBody";
}
}
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);