From 24f9ff0ac25f85a76fcb9b449b7bd0cc43d0e825 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Fri, 1 Jun 2018 21:16:47 +0200 Subject: [PATCH] Add a 'ReplaceRequiresPower' update rule --- OpenRA.Mods.Common/OpenRA.Mods.Common.csproj | 1 + .../UpdateRules/Rules/ReplaceRequiresPower.cs | 49 +++++++++++++++++++ OpenRA.Mods.Common/UpdateRules/UpdatePath.cs | 3 +- 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 OpenRA.Mods.Common/UpdateRules/Rules/ReplaceRequiresPower.cs diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index e92d3de7ad..03d2ed1e13 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -595,6 +595,7 @@ + diff --git a/OpenRA.Mods.Common/UpdateRules/Rules/ReplaceRequiresPower.cs b/OpenRA.Mods.Common/UpdateRules/Rules/ReplaceRequiresPower.cs new file mode 100644 index 0000000000..85edc99281 --- /dev/null +++ b/OpenRA.Mods.Common/UpdateRules/Rules/ReplaceRequiresPower.cs @@ -0,0 +1,49 @@ +#region Copyright & License Information +/* + * Copyright 2007-2018 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 ReplaceRequiresPower : UpdateRule + { + public override string Name { get { return "Replace 'RequiresPower' with 'GrantConditionOnPowerState'"; } } + public override string Description + { + get + { + return "'RequiresPower' has been replaced with 'GrantConditionOnPowerState' which\n" + + "toggles a condition depending on the power state.\nPossible PowerStates are: Normal " + + "(0 or positive), Low (negative but higher than\n50% of required power) and Critical (below Low)."; + } + } + + bool displayed; + + public override IEnumerable UpdateActorNode(ModData modData, MiniYamlNode actorNode) + { + var requiresPower = actorNode.LastChildMatching("RequiresPower"); + if (requiresPower == null) + yield break; + + requiresPower.RenameKey("GrantConditionOnPowerState@LOWPOWER", false); + requiresPower.AddNode("Condition", "lowpower"); + requiresPower.AddNode("ValidPowerStates", "Low, Critical"); + + if (!displayed) + { + displayed = true; + yield return "'RequiresPower' was renamed to 'GrantConditionOnPowerState'.\n" + + "You might need to review your condition setup."; + } + } + } +} diff --git a/OpenRA.Mods.Common/UpdateRules/UpdatePath.cs b/OpenRA.Mods.Common/UpdateRules/UpdatePath.cs index 31c3cb0ffa..08f4df9e1c 100644 --- a/OpenRA.Mods.Common/UpdateRules/UpdatePath.cs +++ b/OpenRA.Mods.Common/UpdateRules/UpdatePath.cs @@ -48,7 +48,8 @@ namespace OpenRA.Mods.Common.UpdateRules new ChangeBuildableArea(), new ChangeCanPowerDown(), new DropPauseAnimationWhenDisabled(), - new RemoveOutOfAmmo() + new RemoveOutOfAmmo(), + new ReplaceRequiresPower() }), new UpdatePath("release-20180218", "release-20180307", new UpdateRule[0]),