public IUpgrade CreateUpgrade(UpgradeJson upgrade) { System.Diagnostics.Debug.WriteLine(upgrade.Name); var upgradeSlotFactory = new UpgradeSlotFactory(this); UpgradeModifierParser parser = new UpgradeModifierParser(upgradeSlotFactory, GetUpgradeType, GetUpgrade, GetAction); return(new Upgrade(upgrade.Name, upgrade.Cost, upgrade.Description, upgrade.Unique, upgrade.Limited, GetFaction(upgrade.Faction), GetUpgradeType(upgrade.Type), new Structures.UpgradeModifierPackage( parser.ParseAddedActions(upgrade.AddedActions?.ToArray() ?? new string[0]), parser.ParseRemovedActions(upgrade.RemovedActions?.ToArray() ?? new string[0]), parser.ParseAddedUpgrades(upgrade.AddedUpgrades?.ToArray() ?? new AddedUpgradeJson[0]), parser.ParseRemovedUpgrades(upgrade.RemovedUpgrades?.ToArray() ?? new string[0]), parser.ParseChangedStats(upgrade.StatChanges?.ToArray() ?? new StatChangeJson[0]), parser.ParseSelectableUpgrades(upgrade.ChooseUpgrade?.ToArray() ?? new ChooseUpgradeJson[0])), UpgradeRestrictionParser.ParseRestrictionsForUpgrade(GetUpgradeType, GetAction, upgrade))); }
public override IReadOnlyList <IUpgradeSlot> ParseAddedUpgrades(AddedUpgradeJson[] data) { List <IUpgradeSlot> newUpgradeSlots = new List <IUpgradeSlot>(); foreach (var upgrade in data) { if (string.IsNullOrEmpty(upgrade.Upgrade)) { newUpgradeSlots.Add(upgradeSlotFactory.CreateEmpty(getUpgradeType(upgrade.Type), UpgradeRestrictionParser.ParseRestrictionsForUpgradeSlot(upgrade.Restrictions ?? new List <RestrictionJson>()), upgrade.CostReduction)); } else { newUpgradeSlots.Add(upgradeSlotFactory.CreatePrefilled(getUpgrade(upgrade.Upgrade, upgrade.Type), upgrade.CostReduction)); } } return(newUpgradeSlots); }