public void InitializeState() { int Id = GetComponent <Script_Slot>().Id; // ask Script_SavedGameTitleControl for file Model_SavedGameTitleData savedGame = Script_SavedGameTitleControl.Control.Load(Id); continueSubmenu.gameObject.SetActive(false); newGameSubmenu.gameObject.SetActive(false); if (mainController == null) { Debug.LogError("SavedGameTitle: You need to make ref to mainController"); } if (savedGame == null) { EmptyState(); } else { Render(savedGame); } }
private void Render(Model_SavedGameTitleData savedGame) { string run = savedGame.run; float clockTime = savedGame.clockTime; string name = savedGame.name; string headline = savedGame.headline; DateTime dateTime = DateTime.FromBinary(savedGame.date); float playTime = savedGame.playTime; runText.text = run.FormatRun(); clockTimeText.text = clockTime.FormatSecondsClock(isClose: clockTime >= Script_Clock.WarningTime); nameText.text = name; /// Empty means we are initializing a run, use default headline headlineText.text = String.IsNullOrEmpty(headline) ? headlineText.text : headline; dateText.text = dateTime.FormatLastPlayedDateTime(); playTimeText.text = playTime.FormatTotalPlayTime(); savedState.gameObject.SetActive(true); emptyState.gameObject.SetActive(false); isRendered = true; }
public Model_SavedGameTitleData Load(int saveSlotId) { string path = Script_SaveGameControl.path; string fileName = Script_Utils.SaveTitleDataFile(saveSlotId); string filePath = $"{path}/{fileName}"; try { if (File.Exists(filePath)) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(filePath, FileMode.Open); Model_SavedGameTitleData data = (Model_SavedGameTitleData)bf.Deserialize(file); file.Close(); if (Debug.isDebugBuild) { Debug.Log("Successful title load at: " + filePath); } return(data); } else { if (Debug.isDebugBuild) { Debug.Log("Did not load; file not found."); } return(null); } } catch (System.Exception e) { Debug.LogError("Failed Load with exception: " + e.ToString()); return(null); } }
/// <param name="type">SavePoint saves within Kelsingor</param> /// <param name="playerStateOverride">Option to override player state</param> public void Save( Model_PlayerState playerStateOverride = null, Model_GameData gameDataOverride = null ) { SetPath(); try { /// Update total play time game.OnSaveTasks(); BinaryFormatter bf = new BinaryFormatter(); /// Main data to pass around and modify Model_SaveData saveData = new Model_SaveData(); SaveGame(saveData); OverridePlayerData(saveData, playerStateOverride); HandleSaveRun(saveData); WriteSaveDataFile(bf, saveFilePath, saveData); /// Create SavedGameTitleData FileStream titleFile = File.Create(savedGameTitleDataPath); Model_SavedGameTitleData savedGameTitleData = savedGameTitleDataHandler.Create(); bf.Serialize(titleFile, savedGameTitleData); titleFile.Close(); if (Debug.isDebugBuild) { Debug.Log("Save successful at: " + saveFilePath); } } catch (System.Exception e) { Debug.LogError("Failed Save with exception: " + e.ToString()); } void SaveGame(Model_SaveData data) { gameHandler.SaveGameData(data, gameDataOverride); playerHandler.SavePlayerData(data); entriesHandler.SaveEntries(data); inventoryHandler.SaveInventory(data); equipmentHandler.SaveEquipment(data); dropsHandler.SaveDrops(data); namesHandler.SaveNames(data); scarletCipherHandler.SaveScarletCipher(data); eventCycleHandler.SaveEventCycle(data); mynesMirrorHandler.SaveMynesMirror(data); pianosHandler.SavePianos(data); } void WriteSaveDataFile(BinaryFormatter bf, string filePath, Model_SaveData data) { // will overwrite existing file FileStream gameFile = File.Create(filePath); bf.Serialize(gameFile, data); gameFile.Close(); } void OverridePlayerData(Model_SaveData data, Model_PlayerState playerState) { data.playerData = playerState ?? data.playerData; } void HandleSaveRun(Model_SaveData data) { levelsHandler.SaveLevels(data); } }