Remove MuzzleSplitFacings and expose MuzzleSequence to testing.

This commit is contained in:
Matthias Mailänder
2020-08-08 16:04:12 +02:00
committed by abcdefg30
parent b03ab1212f
commit c48eb572e3
9 changed files with 93 additions and 52 deletions

View File

@@ -53,6 +53,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Recoil recovery per-frame")]
public readonly WDist RecoilRecovery = new WDist(9);
[SequenceReference]
[Desc("Muzzle flash sequence to render")]
public readonly string MuzzleSequence = null;
@@ -60,9 +61,6 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Palette to render Muzzle flash sequence in")]
public readonly string MuzzlePalette = "effect";
[Desc("Use multiple muzzle images if non-zero")]
public readonly int MuzzleSplitFacings = 0;
[GrantedConditionReference]
[Desc("Condition to grant while reloading.")]
public readonly string ReloadingCondition = null;

View File

@@ -173,10 +173,6 @@ namespace OpenRA.Mods.Common.Traits
// Muzzle facing is fixed once the firing starts
var muzzleAnim = new Animation(self.World, paxRender[a.Actor].GetImage(a.Actor), () => targetYaw);
var sequence = a.Info.MuzzleSequence;
if (a.Info.MuzzleSplitFacings > 0)
sequence += Util.IndexFacing(targetYaw, a.Info.MuzzleSplitFacings).ToString();
var muzzleFlash = new AnimationWithOffset(muzzleAnim,
() => PortOffset(self, port),
() => false,

View File

@@ -76,9 +76,6 @@ namespace OpenRA.Mods.Common.Traits.Render
return;
var sequence = a.Info.MuzzleSequence;
if (a.Info.MuzzleSplitFacings > 0)
sequence += Util.IndexFacing(getFacing(), a.Info.MuzzleSplitFacings).ToString();
visible[barrel] = true;
anims[barrel].Animation.PlayThen(sequence, () => visible[barrel] = false);
}

View File

@@ -0,0 +1,51 @@
#region Copyright & License Information
/*
* Copyright 2007-2020 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System.Collections.Generic;
namespace OpenRA.Mods.Common.UpdateRules.Rules
{
public class RemoveMuzzleSplitFacings : UpdateRule
{
public override string Name { get { return "Remove Armament.MuzzleSplitFacings."; } }
public override string Description
{
get
{
return "The legacy MuzzleSplitFacings option was removed from Armament.\n" +
"The same result can be created by using `Combine` in the sequence definitions to\n" +
"assemble the different facings sprites into a single sequence.";
}
}
public override IEnumerable<string> UpdateActorNode(ModData modData, MiniYamlNode actorNode)
{
foreach (var a in actorNode.ChildrenMatching("Armament"))
{
var muzzleSplitFacings = a.LastChildMatching("MuzzleSplitFacings");
var sequenceNode = a.LastChildMatching("MuzzleSequence");
if (muzzleSplitFacings != null && sequenceNode != null)
{
var sequence = sequenceNode.Value.Value;
var facings = muzzleSplitFacings.NodeValue<int>() - 1;
var actor = actorNode.Key.ToLowerInvariant();
yield return "The Armament muzzle effect has been removed from {0} ({1}).\n".F(actor, actorNode.Location.Filename) +
"If you would like to restore the muzzle effect you must redefine `MuzzleSequence: {0}`\n".F(sequence) +
"and replace the {0}0-{1} sequence definitions with a single `{0}` sequence that uses\n".F(sequence, facings) +
"the Combine syntax to assemble the different facing sprites.";
a.RemoveNode(muzzleSplitFacings);
a.RemoveNode(sequenceNode);
}
}
}
}
}

View File

@@ -72,6 +72,7 @@ namespace OpenRA.Mods.Common.UpdateRules
new ReplaceFacingAngles(),
new RenameSelfHealing(),
new ReplaceBurns(),
new RemoveMuzzleSplitFacings(),
})
};