public void Save(bool onlyOptions) { // Options saveFileData.options.musicVolume = musicVolume.value; saveFileData.options.sfxVolume = sfxVolume.value; saveFileData.options.gameSpeed = gameSpeed.value; saveFileData.options.controlsSet = controlsSet.value; saveFileData.options.controlScheme = controlScheme.value; saveFileData.options.useAnimations = useAnimations.value; saveFileData.options.trueHit = trueHit.value; saveFileData.options.autoEnd = autoEnd.value; saveFileData.options.autoSelectCharacter = autoSelectCharacter.value; if (!onlyOptions) { saveFileData.lastSaveFileIndex = saveIndex.value; // Update simple data simpleChapterName[saveIndex.value].value = loadMapID.value; simpleTotalDays[saveIndex.value].value = currentTotalDays.value; simplePlayTimes[saveIndex.value].value = currentPlayTime.value; // Setup save file data SaveData data = new SaveData { chapterName = simpleChapterName[saveIndex.value].value, totalDays = simpleTotalDays[saveIndex.value].value, playTime = simplePlayTimes[saveIndex.value].value, money = currentMoney.value, scrap = currentScrap.value }; //Map data data.mapData = new MapSavePackage() { missionString = (currentMission.value != null) ? currentMission.value.uuid : "", mapIndex = mapIndex.value }; for (int i = 0; i < squad1.Count; i++) { data.mapData.squad1.Add(squad1.values[i].index); } for (int i = 0; i < squad2.Count; i++) { data.mapData.squad2.Add(squad2.values[i].index); } //Player data for (int i = 0; i < playerData.stats.Count; i++) { if (playerData.stats[i].charData == null) { continue; } CharacterSaveData c = new CharacterSaveData(); c.StoreData(playerData.stats[i], playerData.inventory[i], playerData.skills[i], playerData.baseInfo[i]); data.characters.Add(c); } for (int i = 0; i < playerData.items.Count; i++) { ItemSaveData item = new ItemSaveData(); item.StoreData(playerData.items[i]); data.items.Add(item); } for (int i = 0; i < playerData.upgrader.listSize; i++) { UpgradeSaveData upgrade = new UpgradeSaveData(); upgrade.StoreData(playerData.upgrader.upgrades[i]); data.upgrade.Add(upgrade); } for (int i = 0; i < playerData.missions.Count; i++) { MissionSaveData mission = new MissionSaveData(); mission.StoreData(playerData.missions[i]); data.missions.Add(mission); } saveFileData.saveFiles[saveIndex.value] = data; } //Write to file XmlWriterSettings xmlWriterSettings = new XmlWriterSettings() { Indent = true }; XmlSerializer serializer = new XmlSerializer(typeof(SavePackage)); using (XmlWriter xmlWriter = XmlWriter.Create(_savePath, xmlWriterSettings)) { serializer.Serialize(xmlWriter, saveFileData); } if (onlyOptions) { Debug.Log("Successfully saved the options data!\n" + _savePath); } else { Debug.Log("Successfully saved the save data!\n" + _savePath); } }