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")); }
private ModUpgradeManager() { var mapped = XmlHelper.FileToObject <Dictionary <string, int> >( Path.Combine(GameFileHelper.GetBaseGameFileLocation(), "modloader-droneUpgradeData.xml")); if (mapped != null) { previousMappedDroneUpgrades = mapped; nextId = mapped["nextId"]; } }