Upgrade rules for LimitedAmmo -> AmmoPool refactoring
This commit is contained in:
@@ -774,6 +774,61 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
|||||||
node.Key = "StandSequences";
|
node.Key = "StandSequences";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (engineVersion < 20150323)
|
||||||
|
{
|
||||||
|
// Moved Reloads functionality to LimitedAmmo and refactored the latter into AmmoPool
|
||||||
|
if (depth == 0)
|
||||||
|
{
|
||||||
|
var actorTraits = node.Value.Nodes;
|
||||||
|
var limitedAmmo = actorTraits.FirstOrDefault(l => l.Key == "LimitedAmmo");
|
||||||
|
var reloads = actorTraits.FirstOrDefault(r => r.Key == "Reloads");
|
||||||
|
|
||||||
|
if (reloads != null)
|
||||||
|
{
|
||||||
|
var reloadsFields = reloads.Value.Nodes;
|
||||||
|
var limitedAmmoFields = limitedAmmo.Value.Nodes;
|
||||||
|
var count = reloadsFields.FirstOrDefault(c => c.Key == "Count");
|
||||||
|
var period = reloadsFields.FirstOrDefault(p => p.Key == "Period");
|
||||||
|
var resets = reloadsFields.FirstOrDefault(res => res.Key == "ResetOnFire");
|
||||||
|
|
||||||
|
var reloadsCount = count != null ? FieldLoader.GetValue<int>("Count", count.Value.Value) : -1;
|
||||||
|
var reloadsPeriod = period != null ? FieldLoader.GetValue<int>("Period", period.Value.Value) : 50;
|
||||||
|
var reloadsResetOnFire = resets != null ? FieldLoader.GetValue<bool>("ResetOnFire", resets.Value.Value) : false;
|
||||||
|
|
||||||
|
limitedAmmoFields.Add(new MiniYamlNode("SelfReloads", "true"));
|
||||||
|
limitedAmmoFields.Add(new MiniYamlNode("ReloadCount", reloadsCount.ToString()));
|
||||||
|
limitedAmmoFields.Add(new MiniYamlNode("SelfReloadTicks", reloadsPeriod.ToString()));
|
||||||
|
limitedAmmoFields.Add(new MiniYamlNode("ResetOnFire", reloadsResetOnFire.ToString()));
|
||||||
|
|
||||||
|
node.Value.Nodes.RemoveAll(n => n.Key == "Reloads");
|
||||||
|
node.Value.Nodes.RemoveAll(n => n.Key == "-Reloads");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Moved RearmSound from Minelayer to LimitedAmmo/AmmoPool
|
||||||
|
if (depth == 0)
|
||||||
|
{
|
||||||
|
var actorTraits = node.Value.Nodes;
|
||||||
|
var limitedAmmo = actorTraits.FirstOrDefault(la => la.Key == "LimitedAmmo");
|
||||||
|
var minelayer = actorTraits.FirstOrDefault(ml => ml.Key == "Minelayer");
|
||||||
|
|
||||||
|
if (minelayer != null)
|
||||||
|
{
|
||||||
|
var minelayerFields = minelayer.Value.Nodes;
|
||||||
|
var limitedAmmoFields = limitedAmmo.Value.Nodes;
|
||||||
|
var rearmSound = minelayerFields.FirstOrDefault(rs => rs.Key == "RearmSound");
|
||||||
|
var minelayerRearmSound = rearmSound != null ? FieldLoader.GetValue<string>("RearmSound", rearmSound.Value.Value) : "minelay1.aud";
|
||||||
|
|
||||||
|
limitedAmmoFields.Add(new MiniYamlNode("RearmSound", minelayerRearmSound.ToString()));
|
||||||
|
minelayerFields.Remove(rearmSound);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rename LimitedAmmo to AmmoPool
|
||||||
|
if (node.Key == "LimitedAmmo")
|
||||||
|
node.Key = "AmmoPool";
|
||||||
|
}
|
||||||
|
|
||||||
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
|
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user