// SAVING AND LOADING /// <summary> /// Puts the data into a save class for saving. /// </summary> /// <returns></returns> public PlayerStatsSaveClass SaveStats() { PlayerStatsSaveClass saveData = new PlayerStatsSaveClass(); //Overworld saveData.currentChapter = currentChapter.value; saveData.currentArea = currentArea.value; saveData.playerArea = playerArea.value; saveData.playerPosX = playerPosX.value; saveData.playerPosY = playerPosY.value; //Exp saveData.expTotal = totalExp.value; //Inventory saveData.money = totalMoney.value; saveData.invItemBag = invItemBag.GenerateSaveData(); saveData.invItemEquip = invItemEquip.GenerateSaveData(); saveData.invKanjiBag = invKanjiBag.GenerateSaveData(); saveData.invKanjiEquip = invKanjiEquip.GenerateSaveData(); //Time saveData.ingameDay = ingameDay.value; saveData.playedSeconds = playedSeconds.value; return(saveData); }
void CreateInfo(int saveCount) { this.saveCount = saveCount; settingsSave = new SettingsSaveClass(); playerSave = new PlayerStatsSaveClass[saveCount]; triggerSave = new TriggerSaveClass[saveCount]; for (int i = 0; i < saveCount; i++) { playerSave[i] = new PlayerStatsSaveClass(); triggerSave[i] = new TriggerSaveClass(); } }
/// <summary> /// Set ups the save file's information and image /// </summary> /// <param name="save"></param> void SetupSaveFile(int saveIndex) { PlayerStatsSaveClass pssc = SaveController.instance.saveFiles.playerSave[saveIndex]; SaveFileButton button = saveFileButtons[saveIndex]; bool newSave = (pssc.playerArea == 0); button.emptyFile.SetActive(newSave); button.saveStats.SetActive(!newSave); if (!isCurrentlySaving.value && newSave && selectedSaveFile == saveIndex) { selectedSaveFile = -1; } button.SetImage((saveIndex == selectedSaveFile) ? selectedImage : normalImage); button.currentChapter.text = "Ch. " + pssc.currentChapterIndex; button.currentArea.text = ((Constants.OverworldArea)pssc.playerArea).ToString(); button.level.text = "Level " + new ExpLevel(pssc.expTotal).level; button.playTime.text = "Time: " + Constants.PlayTimeFromInt(pssc.playedSeconds, false); Sprite icon; for (int i = 0; i < Constants.GEAR_EQUIP_SPACE; i++) { icon = emptyEquipSlot; if (!string.IsNullOrEmpty(pssc.invItemEquip.uuids[i])) { ItemEntry item = (ItemEntry)itemLibrary.GetEntry(pssc.invItemEquip.uuids[i]); icon = item.icon; } button.equipments[i].sprite = icon; } for (int i = 0; i < Constants.MODULE_EQUIP_SPACE; i++) { icon = emptyEquipSlot; if (!string.IsNullOrEmpty(pssc.invModuleEquip.uuids[i])) { Module module = (Module)moduleLibrary.GetEntry(pssc.invModuleEquip.uuids[i]); icon = module.icon; } button.modules[i].sprite = icon; } }
/// <summary> /// Updates the save class and saves it to file. /// </summary> public void Save() { XmlWriterSettings xmlWriterSettings = new XmlWriterSettings() { Indent = true }; XmlSerializer serializer; if (settingsValues != null) { serializer = new XmlSerializer(typeof(SettingsSaveClass)); SettingsSaveClass settingsSave = settingsValues.SaveSettings(); using (XmlWriter xmlWriter = XmlWriter.Create(settingsPath, xmlWriterSettings)) { serializer.Serialize(xmlWriter, settingsSave); } // file.Close(); Debug.Log("Successfully saved the settings!"); } if (playerStats != null) { serializer = new XmlSerializer(typeof(PlayerStatsSaveClass)); PlayerStatsSaveClass playerSave = playerStats.SaveStats(); using (XmlWriter xmlWriter = XmlWriter.Create(playerStatsPath, xmlWriterSettings)) { serializer.Serialize(xmlWriter, playerSave); } // file.Close(); Debug.Log("Successfully saved the player stats!"); } if (triggerController != null) { serializer = new XmlSerializer(typeof(TriggerSaveClass)); TriggerSaveClass triggerSave = triggerController.SaveTriggers(); using (XmlWriter xmlWriter = XmlWriter.Create(triggerPath, xmlWriterSettings)) { serializer.Serialize(xmlWriter, triggerSave); } // file.Close(); Debug.Log("Successfully saved the trigger stats!"); } }
/// <summary> /// Loads the player stats from the save class data. /// </summary> /// <param name="saveData"></param> public void LoadStats() { if (currentSaveFileIndex.value == -1) { Debug.Log("New game. Nothing to load."); return; } PlayerStatsSaveClass saveData = SaveController.instance.saveFiles.playerSave[currentSaveFileIndex.value]; //Overworld currentChapterIndex.value = saveData.currentChapterIndex; currentRoomNumber.value = saveData.currentRoomNumber; currentArea.value = playerArea.value = saveData.playerArea; playerPosX.value = saveData.playerPosX; playerPosY.value = saveData.playerPosY; //Follower playingAsAndroid.value = saveData.playingAsAndroid; useFollower.value = saveData.useFollower; //Exp totalExp.value = saveData.expTotal; CalculateExp(); //Inventory totalMoney.value = saveData.money; itemLibrary.GenerateDictionary(); moduleLibrary.GenerateDictionary(); invItemBag.LoadItemData(saveData.invItemBag, itemLibrary); invItemEquip.LoadItemData(saveData.invItemEquip, itemLibrary); invModuleBag.LoadItemData(saveData.invModuleBag, moduleLibrary); invModuleEquip.LoadItemData(saveData.invModuleEquip, moduleLibrary); //Time ingameDay.value = saveData.ingameDay; playedSeconds.value = saveData.playedSeconds; RecalculateStats(); loadCheckEvent.Invoke(); Debug.Log("LOADED"); }
/// <summary> /// Puts the data into a save class for saving. /// </summary> /// <returns></returns> public void SaveStats() { if (currentSaveFileIndex.value == -1) { Debug.Log("New game. Nothing to save."); return; } PlayerStatsSaveClass playerData = new PlayerStatsSaveClass(); //Overworld playerData.currentChapterIndex = currentChapterIndex.value; playerData.currentRoomNumber = currentRoomNumber.value; playerData.playerArea = playerArea.value; playerData.playerPosX = playerPosX.value; playerData.playerPosY = playerPosY.value; //Follower playerData.playingAsAndroid = playingAsAndroid.value; playerData.useFollower = useFollower.value; //Exp playerData.expTotal = totalExp.value; playerData.money = totalMoney.value; //Inventory playerData.invItemBag = invItemBag.GenerateSaveData(); playerData.invItemEquip = invItemEquip.GenerateSaveData(); playerData.invModuleBag = invModuleBag.GenerateSaveData(); playerData.invModuleEquip = invModuleEquip.GenerateSaveData(); //Time playerData.ingameDay = ingameDay.value; playerData.playedSeconds = playedSeconds.value; SaveController.instance.saveFiles.playerSave[currentSaveFileIndex.value] = playerData; saveCheckEvent.Invoke(); Debug.Log("SAVED"); }
/// <summary> /// Loads the player stats from the save class data. /// </summary> /// <param name="saveData"></param> public void LoadStats(PlayerStatsSaveClass saveData) { //Overworld currentArea.value = saveData.currentArea; playerArea.value = saveData.playerArea; playerPosX.value = saveData.playerPosX; playerPosY.value = saveData.playerPosY; //Exp totalExp.value = saveData.expTotal; //Inventory totalMoney.value = saveData.money; itemLibrary.GenerateDictionary(); invItemBag.LoadItemData(saveData.invItemBag, itemLibrary); invItemEquip.LoadItemData(saveData.invItemEquip, itemLibrary); invKanjiBag.LoadItemData(saveData.invKanjiBag, itemLibrary); invKanjiEquip.LoadItemData(saveData.invKanjiEquip, itemLibrary); //Time ingameDay.value = saveData.ingameDay; playedSeconds.value = saveData.playedSeconds; }
/// <summary> /// Reads the save file if it exists and sets the values. /// </summary> public void Load() { if (!loadGame) { return; } //Settings data if (settingsValues != null) { if (settingsValues != null && File.Exists(settingsPath)) { XmlSerializer serializer = new XmlSerializer(typeof(SettingsSaveClass)); FileStream file = File.Open(settingsPath, FileMode.Open); SettingsSaveClass settingsSave = serializer.Deserialize(file) as SettingsSaveClass; file.Close(); settingsValues.LoadSettings(settingsSave); Debug.Log("Successfully loaded the settings!"); } else { Debug.LogWarning("Could not open the file: " + settingsPath); Save(); } } else { Debug.LogWarning("No settings object"); } //Player data if (playerStats != null) { if (File.Exists(playerStatsPath)) { XmlSerializer serializer = new XmlSerializer(typeof(PlayerStatsSaveClass)); FileStream file = File.Open(playerStatsPath, FileMode.Open); PlayerStatsSaveClass playerSave = serializer.Deserialize(file) as PlayerStatsSaveClass; file.Close(); playerStats.LoadStats(playerSave); Debug.Log("Successfully loaded the player stats!"); } else { Debug.LogWarning("Could not open the file: " + playerStatsPath); Save(); } } else { Debug.LogWarning("No player stats object"); } //Trigger data if (triggerController != null) { if (File.Exists(triggerPath)) { XmlSerializer serializer = new XmlSerializer(typeof(TriggerSaveClass)); FileStream file = File.Open(triggerPath, FileMode.Open); TriggerSaveClass triggerSave = serializer.Deserialize(file) as TriggerSaveClass; file.Close(); triggerController.LoadTriggers(triggerSave); Debug.Log("Successfully loaded the triggers!"); } else { Debug.LogWarning("Could not open the file: " + triggerPath); Save(); } } else { Debug.LogWarning("No trigger object"); } }