Upgrade rules for LimitedAmmo -> AmmoPool refactoring
This commit is contained in:
@@ -774,6 +774,61 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user