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

@@ -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);
}
}
}
}
}