Esempio n. 1
0
        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)));
        }
Esempio n. 2
0
        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);
        }