コード例 #1
0
        internal void Freeze()
        {
            frozen = true;
            foreach (var upgrade in addedDroneUpgrades)
            {
                if (previousMappedDroneUpgrades.ContainsKey(upgrade.name))
                {
                    var id = previousMappedDroneUpgrades[upgrade.name]; //get the previously registered id
                    upgrade.Register(id);                               //tells the upgrade to create it's definition
                    mappedDroneUpgrades[id] = upgrade;                  //map it for id>upgrade for upgrade factory
                }
                else
                {
                    var id = nextId++; //get a new id
                    //save it for reusing the next game restart so upgrades can be loaded from game save file
                    previousMappedDroneUpgrades[upgrade.name] = id;
                    upgrade.Register(id);              //tells the upgrade to create it's definition
                    mappedDroneUpgrades[id] = upgrade; //map it for id>upgrade for upgrade factory
                }
            }

            previousMappedDroneUpgrades["nextId"] = nextId; //save the next available id
            //Save it into a file
            XmlHelper.ObjectToFile(previousMappedDroneUpgrades,
                                   Path.Combine(GameFileHelper.GetBaseGameFileLocation(), "modloader-droneUpgradeData.xml"));
        }
コード例 #2
0
        private ModUpgradeManager()
        {
            var mapped = XmlHelper.FileToObject <Dictionary <string, int> >(
                Path.Combine(GameFileHelper.GetBaseGameFileLocation(), "modloader-droneUpgradeData.xml"));

            if (mapped != null)
            {
                previousMappedDroneUpgrades = mapped;
                nextId = mapped["nextId"];
            }
        }