private bool IsFileValid(string filename) { bool result = false; try { SaveGame.Header header; SaveGame.GameInfo gameInfo = SaveLoader.LoadHeader(filename, out header); result = (gameInfo.saveMajorVersion >= 7); return(result); } catch (Exception ex) { Debug.LogWarning("Corrupted save file: " + filename + "\n" + ex.ToString()); return(result); } }
private Tuple <SaveGame.Header, SaveGame.GameInfo> GetFileInfo(string filename) { try { SaveGame.Header header; SaveGame.GameInfo b = SaveLoader.LoadHeader(filename, out header); if (b.saveMajorVersion >= 7) { return(new Tuple <SaveGame.Header, SaveGame.GameInfo>(header, b)); } } catch (Exception obj) { Debug.LogWarning(obj); InfoText.text = string.Format(UI.FRONTEND.LOADSCREEN.CORRUPTEDSAVE, filename); } return(null); }
private void AddExistingMod(string filename) { KButton freeElement = this.saveButtonPool.GetFreeElement(this.saveButtonRoot, true); freeElement.ClearOnClick(); LocText componentInChildren = freeElement.GetComponentInChildren <LocText>(); System.DateTime lastWriteTime = File.GetLastWriteTime(filename); componentInChildren.text = string.Format("{0}\n{1:H:mm:ss}\n" + Localization.GetFileDateFormat(1), Path.GetFileNameWithoutExtension(filename), lastWriteTime); freeElement.onClick += delegate { this.onClick(filename); }; bool flag = false; try { SaveGame.Header header; flag = (SaveLoader.LoadHeader(filename, out header).saveMajorVersion >= 7); } catch (Exception ex) { global::Debug.LogWarning("Corrupted save file: " + filename + "\n" + ex.ToString(), null); } if (flag) { freeElement.onDoubleClick += delegate { this.onClick(filename); this.DoLoad(); }; } ImageToggleState component = freeElement.GetComponent <ImageToggleState>(); component.colorStyleSetting = ((!flag) ? this.invalidSaveFileStyle : this.validSaveFileStyle); component.RefreshColorStyle(); component.SetState(ImageToggleState.State.Inactive); component.ResetColor(); freeElement.transform.SetAsLastSibling(); this.fileButtonMap.Add(filename, freeElement); }
private void DoLoad() { ReportErrorDialog.MOST_RECENT_SAVEFILE = this.selectedFileName; bool flag = true; SaveGame.Header header; SaveGame.GameInfo gameInfo = SaveLoader.LoadHeader(this.selectedFileName, out header); string arg = null; string arg2 = null; if (header.buildVersion > 260525u) { arg = header.buildVersion.ToString(); arg2 = 260525u.ToString(); } else if (gameInfo.saveMajorVersion < 7) { arg = string.Format("v{0}.{1}", gameInfo.saveMajorVersion, gameInfo.saveMinorVersion); arg2 = string.Format("v{0}.{1}", 7, 3); } if (!flag) { GameObject parent = (!(FrontEndManager.Instance == null)) ? FrontEndManager.Instance.gameObject : GameScreenManager.Instance.ssOverlayCanvas; ConfirmDialogScreen component = Util.KInstantiateUI(ScreenPrefabs.Instance.ConfirmDialogScreen.gameObject, parent, true).GetComponent <ConfirmDialogScreen>(); component.PopupConfirmDialog(string.Format(UI.CRASHSCREEN.LOADFAILED, "Version Mismatch", arg, arg2), null, null, null, null, null, null, null); } else { if (Game.Instance != null) { ModScreen.ForceStopGame(); } SaveLoader.SetActiveSaveFilePath(this.selectedFileName); Time.timeScale = 0f; App.LoadScene("backend"); this.Deactivate(); } }
private static void DoLoad(string filename) { ReportErrorDialog.MOST_RECENT_SAVEFILE = filename; bool flag = true; SaveGame.Header header; SaveGame.GameInfo gameInfo = SaveLoader.LoadHeader(filename, out header); string arg = null; string arg2 = null; if (header.buildVersion > 365655) { arg = header.buildVersion.ToString(); arg2 = 365655.ToString(); } else if (gameInfo.saveMajorVersion < 7) { arg = $"v{gameInfo.saveMajorVersion}.{gameInfo.saveMinorVersion}"; arg2 = $"v{7}.{11}"; } if (!flag) { GameObject parent = (!((UnityEngine.Object)FrontEndManager.Instance == (UnityEngine.Object)null)) ? FrontEndManager.Instance.gameObject : GameScreenManager.Instance.ssOverlayCanvas; ConfirmDialogScreen component = Util.KInstantiateUI(ScreenPrefabs.Instance.ConfirmDialogScreen.gameObject, parent, true).GetComponent <ConfirmDialogScreen>(); component.PopupConfirmDialog(string.Format(UI.CRASHSCREEN.LOADFAILED, "Version Mismatch", arg, arg2), null, null, null, null, null, null, null, null, true); } else { if ((UnityEngine.Object)Game.Instance != (UnityEngine.Object)null) { ForceStopGame(); } SaveLoader.SetActiveSaveFilePath(filename); Time.timeScale = 0f; App.LoadScene("backend"); } }
private void RefreshResumeButton() { string latestSaveFile = SaveLoader.GetLatestSaveFile(); bool flag = !string.IsNullOrEmpty(latestSaveFile) && File.Exists(latestSaveFile); if (flag) { try { if (GenericGameSettings.instance.demoMode) { flag = false; } System.DateTime lastWriteTime = File.GetLastWriteTime(latestSaveFile); SaveFileEntry value = default(SaveFileEntry); SaveGame.Header header = default(SaveGame.Header); SaveGame.GameInfo gameInfo = default(SaveGame.GameInfo); if (!saveFileEntries.TryGetValue(latestSaveFile, out value) || value.timeStamp != lastWriteTime) { gameInfo = SaveLoader.LoadHeader(latestSaveFile, out header); SaveFileEntry saveFileEntry = default(SaveFileEntry); saveFileEntry.timeStamp = lastWriteTime; saveFileEntry.header = header; saveFileEntry.headerData = gameInfo; value = saveFileEntry; saveFileEntries[latestSaveFile] = value; } else { header = value.header; gameInfo = value.headerData; } if (header.buildVersion > 365655 || gameInfo.saveMajorVersion < 7) { flag = false; } string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(latestSaveFile); if (!string.IsNullOrEmpty(gameInfo.baseName)) { Button_ResumeGame.GetComponentsInChildren <LocText>()[1].text = string.Format(UI.FRONTEND.MAINMENU.RESUMEBUTTON_BASENAME, gameInfo.baseName, gameInfo.numberOfCycles + 1); } else { Button_ResumeGame.GetComponentsInChildren <LocText>()[1].text = fileNameWithoutExtension; } } catch (Exception obj) { Debug.LogWarning(obj); flag = false; } } if ((UnityEngine.Object)Button_ResumeGame != (UnityEngine.Object)null && (UnityEngine.Object)Button_ResumeGame.gameObject != (UnityEngine.Object)null) { Button_ResumeGame.gameObject.SetActive(flag); } else { Debug.LogWarning("Why is the resume game button null?"); } }
private void SetSelectedGame(string filename) { if (string.IsNullOrEmpty(filename) || !File.Exists(filename)) { global::Debug.LogError("The filename provided is not valid.", null); } else { KButton kButton = (this.selectedFileName == null) ? null : this.fileButtonMap[this.selectedFileName]; if (kButton != null) { kButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Inactive); } this.selectedFileName = filename; kButton = this.fileButtonMap[this.selectedFileName]; kButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Active); this.moreInfoButton.gameObject.SetActive(false); try { SaveGame.Header header; SaveGame.GameInfo gameInfo = SaveLoader.LoadHeader(filename, out header); string format = UI.FRONTEND.LOADSCREEN.SAVEDETAILS; string text = string.Format("{0:H:mm:ss}\n" + Localization.GetFileDateFormat(0), File.GetLastWriteTime(filename)); string text2 = Path.GetFileName(filename); if (gameInfo.isAutoSave) { text2 += UI.FRONTEND.LOADSCREEN.AUTOSAVEWARNING; } string text3 = string.Format(format, new object[] { text2, text, gameInfo.baseName, gameInfo.numberOfDuplicants.ToString(), gameInfo.numberOfCycles.ToString() }); this.saveDetails.text = text3; if (ModScreen.IsSaveFileFromUnsupportedFutureBuild(header)) { this.saveDetails.text = string.Format(UI.FRONTEND.LOADSCREEN.SAVE_TOO_NEW, filename, header.buildVersion, 260525u); this.loadButton.isInteractable = false; this.loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled); } else if (gameInfo.saveMajorVersion < 7) { this.saveDetails.text = string.Format(UI.FRONTEND.LOADSCREEN.UNSUPPORTED_SAVE_VERSION, new object[] { filename, gameInfo.saveMajorVersion, gameInfo.saveMinorVersion, 7, 3 }); this.loadButton.isInteractable = false; this.loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled); } else if (!this.loadButton.isInteractable) { this.loadButton.isInteractable = true; this.loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Inactive); } } catch (Exception obj) { global::Debug.LogWarning(obj, null); this.saveDetails.text = string.Format(UI.FRONTEND.LOADSCREEN.CORRUPTEDSAVE, filename); if (this.loadButton.isInteractable) { this.loadButton.isInteractable = false; this.loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled); } } } }
private void SetSelectedGame(string filename, string savename) { if (string.IsNullOrEmpty(filename) || !File.Exists(filename)) { Debug.LogError("The filename provided is not valid."); deleteButton.isInteractable = false; } else { deleteButton.isInteractable = true; KButton kButton = (selectedFileName == null) ? null : fileButtonMap[selectedFileName]; if ((UnityEngine.Object)kButton != (UnityEngine.Object)null) { kButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Inactive); } selectedFileName = filename; FileName.text = Path.GetFileName(selectedFileName); kButton = fileButtonMap[selectedFileName]; kButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Active); try { SaveGame.Header header; SaveGame.GameInfo gameInfo = SaveLoader.LoadHeader(filename, out header); string fileName = Path.GetFileName(filename); if (gameInfo.isAutoSave) { fileName = fileName + "\n" + UI.FRONTEND.LOADSCREEN.AUTOSAVEWARNING; } CyclesSurvivedValue.text = gameInfo.numberOfCycles.ToString(); DuplicantsAliveValue.text = gameInfo.numberOfDuplicants.ToString(); InfoText.text = string.Empty; if (IsSaveFileFromUnsupportedFutureBuild(header)) { InfoText.text = string.Format(UI.FRONTEND.LOADSCREEN.SAVE_TOO_NEW, filename, header.buildVersion, 365655u); loadButton.isInteractable = false; loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled); } else if (gameInfo.saveMajorVersion < 7) { InfoText.text = string.Format(UI.FRONTEND.LOADSCREEN.UNSUPPORTED_SAVE_VERSION, filename, gameInfo.saveMajorVersion, gameInfo.saveMinorVersion, 7, 11); loadButton.isInteractable = false; loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled); } else if (!loadButton.isInteractable) { loadButton.isInteractable = true; loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Inactive); } if (InfoText.text == string.Empty && gameInfo.isAutoSave) { InfoText.text = UI.FRONTEND.LOADSCREEN.AUTOSAVEWARNING; } } catch (Exception obj) { Debug.LogWarning(obj); InfoText.text = string.Format(UI.FRONTEND.LOADSCREEN.CORRUPTEDSAVE, filename); if (loadButton.isInteractable) { loadButton.isInteractable = false; loadButton.GetComponent <ImageToggleState>().SetState(ImageToggleState.State.Disabled); } deleteButton.isInteractable = false; } try { Sprite sprite = RetireColonyUtility.LoadColonyPreview(selectedFileName, savename); Image component = previewImageRoot.GetComponent <Image>(); component.sprite = sprite; component.color = ((!(bool)sprite) ? Color.black : Color.white); } catch (Exception obj2) { Debug.Log(obj2); } } }