public void ImportME1Package(int n, string path) { if (!(n == 0 || n == 2)) { return; } FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); byte[] buff = new byte[(int)fs.Length]; fs.Read(buff, 0, (int)fs.Length); fs.Close(); MemoryStream m = new MemoryStream(buff); MemoryStream m2 = new MemoryStream(); m2.Write(m.ToArray(), 0, 0x89); m.Seek(0x1D, SeekOrigin.Begin); int off = ReadInt(m); m2.Write(m.ToArray(), off, (int)m.Length - off); m = new MemoryStream(); Files[n].memory.Seek(8, SeekOrigin.Begin); int off2 = ReadInt(Files[n].memory); m.Write(Files[n].memory.ToArray(), 0, off2); m.Write(m2.ToArray(), 0, (int)m2.Length); SaveFileEntry ent = Files[n]; ent.memory = m; Files[n] = ent; }
/// <summary> /// Sets up the save file information for the save files. /// </summary> private void SetupSaveFiles() { saveFiles = new EntryList <SaveFileEntry>(visibleSize); for (int i = 0; i < SaveController.SAVE_FILES_COUNT; i++) { Transform t = Instantiate(entryPrefab, listParent); SaveFileEntry entry = saveFiles.CreateEntry(t); if (chapterIDs[i].value == CLEAR_GAME_ID) { entry.FillData("All maps cleared!", totalDays[i].value, playTimes[i].value); } else if (string.IsNullOrEmpty(chapterIDs[i].value)) { entry.FillData("BASE", totalDays[i].value, playTimes[i].value); } else { MapEntry map = (MapEntry)chapterLibrary.GetEntry(chapterIDs[i].value); if (map != null) { entry.FillData(map.entryName, totalDays[i].value, playTimes[i].value); } else { chapterIDs[i].value = ""; totalDays[i].value = 0; playTimes[i].value = 0; entry.FillData("", 0, 0); } } } entryPrefab.gameObject.SetActive(false); }
public static List <string> GetSaveFiles(string save_dir) { List <string> list = new List <string>(); try { if (!System.IO.Directory.Exists(save_dir)) { System.IO.Directory.CreateDirectory(save_dir); } string[] files = System.IO.Directory.GetFiles(save_dir, "*.sav", SearchOption.AllDirectories); List <SaveFileEntry> list2 = new List <SaveFileEntry>(); string[] array = files; foreach (string text in array) { try { System.DateTime lastWriteTime = File.GetLastWriteTime(text); SaveFileEntry saveFileEntry = default(SaveFileEntry); saveFileEntry.path = text; saveFileEntry.timeStamp = lastWriteTime; SaveFileEntry item = saveFileEntry; list2.Add(item); } catch (Exception ex) { Debug.LogWarning("Problem reading file: " + text + "\n" + ex.ToString()); } } list2.Sort((SaveFileEntry x, SaveFileEntry y) => y.timeStamp.CompareTo(x.timeStamp)); foreach (SaveFileEntry item2 in list2) { SaveFileEntry current = item2; list.Add(current.path); } return(list); } catch (Exception ex2) { string text2 = null; if (ex2 is UnauthorizedAccessException) { text2 = string.Format(UI.FRONTEND.SUPPORTWARNINGS.SAVE_DIRECTORY_READ_ONLY, save_dir); } else if (ex2 is IOException) { text2 = string.Format(UI.FRONTEND.SUPPORTWARNINGS.SAVE_DIRECTORY_INSUFFICIENT_SPACE, save_dir); } if (text2 == null) { throw ex2; } 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(text2, null, null, null, null, null, null, null, null, true); return(list); } }
private void toolStripButton1_Click(object sender, EventArgs e) { int n = listBox1.SelectedIndex; if (n == -1 || Save.Files == null) { return; } int len = (int)hb1.ByteProvider.Length; SaveFileEntry en = Save.Files[n]; en.memory = new MemoryStream(); for (int i = 0; i < len; i++) { en.memory.WriteByte(hb1.ByteProvider.ReadByte(i)); } Save.Files[n] = en; }
private void importFromME1PackageToolStripMenuItem_Click(object sender, EventArgs e) { int n = listBox1.SelectedIndex; if (n == -1 || Save.Files == null) { return; } OpenFileDialog d = new OpenFileDialog(); string filename = Save.Files[n].FileName; if (filename == "state.sav") { MessageBox.Show("This file is not a ME1 Package, please select one of the others"); return; } filename = Path.GetFileNameWithoutExtension(filename); filename += ".upk"; d.Filter = filename + "|" + filename; d.FileName = filename; if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK) { FileStream fs = new FileStream(d.FileName, FileMode.Open, FileAccess.Read); byte[] buff = new byte[(int)fs.Length]; fs.Read(buff, 0, (int)fs.Length); fs.Close(); MemoryStream m = new MemoryStream(buff); MemoryStream m2 = new MemoryStream(); m2.Write(m.ToArray(), 0, 0x89); m.Seek(0x1D, SeekOrigin.Begin); int off = ReadInt(m); m2.Write(m.ToArray(), off, (int)m.Length - off); m = new MemoryStream(); Save.Files[n].memory.Seek(8, SeekOrigin.Begin); int off2 = ReadInt(Save.Files[n].memory); m.Write(Save.Files[n].memory.ToArray(), 0, off2); m.Write(m2.ToArray(), 0, (int)m2.Length); SaveFileEntry ent = Save.Files[n]; ent.memory = m; Save.Files[n] = ent; MessageBox.Show("Done."); } }
public void UpdateFile() { int i = saveFiles.GetPosition(); SaveFileEntry entry = saveFiles.GetEntry(); if (chapterIDs[i].value == CLEAR_GAME_ID) { entry.FillData("All maps cleared!", totalDays[i].value, playTimes[i].value); } else if (chapterIDs[i].value == "") { entry.FillData("BASE", totalDays[i].value, playTimes[i].value); } else { MapEntry map = (MapEntry)chapterLibrary.GetEntry(chapterIDs[i].value); entry.FillData(map.entryName, totalDays[i].value, playTimes[i].value); } }
public SaveGame(string path) { try { MyFilename = path; MemoryStream m = new MemoryStream(); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); int len = (int)fs.Length; byte[] buff = new byte[len]; fs.Read(buff, 0, len); m.Write(buff, 0, len); fs.Close(); complete = m; BitConverter.IsLittleEndian = true; m.Seek(8, SeekOrigin.Begin); int off = ReadInt(m); int len2 = len - off; m.Seek(off, SeekOrigin.Begin); buff = new byte[len2]; m.Read(buff, 0, len2); zipfile = new MemoryStream(buff); zipfile.Seek(0, SeekOrigin.Begin); ZipFile zipin = ZipFile.Read(zipfile); Files = new List <SaveFileEntry>(); foreach (ZipEntry file in zipin) { SaveFileEntry ent = new SaveFileEntry(); ent.FileName = file.FileName; ent.memory = new MemoryStream(); file.Extract(ent.memory); Files.Add(ent); } zip = zipin; } catch (Exception) { return; } Loaded = true; }
public SaveGame(string path) { try { MyFilename = path; MemoryStream m = new MemoryStream(); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); int len = (int)fs.Length; byte[] buff = new byte[len]; fs.Read(buff, 0, len); m.Write(buff, 0, len); fs.Close(); complete = m; BitConverter.IsLittleEndian = true; m.Seek(8, SeekOrigin.Begin); int off = ReadInt(m); int len2 = len - off; m.Seek(off, SeekOrigin.Begin); buff = new byte[len2]; m.Read(buff, 0, len2); zipfile = new MemoryStream(buff); zipfile.Seek(0, SeekOrigin.Begin); ZipFile zipin = ZipFile.Read(zipfile); Files = new List<SaveFileEntry>(); foreach (ZipEntry file in zipin) { SaveFileEntry ent = new SaveFileEntry(); ent.FileName = file.FileName; ent.memory = new MemoryStream(); file.Extract(ent.memory); Files.Add(ent); } zip = zipin; } catch (Exception) { return; } Loaded = true; }
private void openSaveGameToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog d = new OpenFileDialog(); d.Filter = "*.MassEffectSave|*.MassEffectSave"; if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK) { MemoryStream m = new MemoryStream(); FileStream fs = new FileStream(d.FileName, FileMode.Open, FileAccess.Read); int len = (int)fs.Length; byte[] buff = new byte[len]; fs.Read(buff, 0, len); m.Write(buff, 0, len); fs.Close(); Save = new SaveGame(); Save.complete = m; BitConverter.IsLittleEndian = true; m.Seek(8, SeekOrigin.Begin); int off = ReadInt(m); int len2 = len - off; m.Seek(off, SeekOrigin.Begin); buff = new byte[len2]; m.Read(buff, 0, len2); Save.zipfile = new MemoryStream(buff); Save.zipfile.Seek(0, SeekOrigin.Begin); ZipFile zip = ZipFile.Read(Save.zipfile); Save.Files = new List <SaveFileEntry>(); foreach (ZipEntry file in zip) { SaveFileEntry ent = new SaveFileEntry(); ent.FileName = file.FileName; ent.memory = new MemoryStream(); file.Extract(ent.memory); Save.Files.Add(ent); } Save.zip = zip; RefreshList(); } }
private void openSaveGameToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog d = new OpenFileDialog(); d.Filter = "*.MassEffectSave|*.MassEffectSave"; if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK) { MemoryStream m = new MemoryStream(); FileStream fs = new FileStream(d.FileName, FileMode.Open, FileAccess.Read); int len = (int)fs.Length; byte[] buff = new byte[len]; fs.Read(buff, 0, len); m.Write(buff, 0, len); fs.Close(); Save = new SaveGame(); Save.complete = m; BitConverter.IsLittleEndian = true; m.Seek(8, SeekOrigin.Begin); int off = ReadInt(m); int len2 = len - off; m.Seek(off, SeekOrigin.Begin); buff = new byte[len2]; m.Read(buff, 0, len2); Save.zipfile = new MemoryStream(buff); Save.zipfile.Seek(0, SeekOrigin.Begin); ZipFile zip = ZipFile.Read(Save.zipfile); Save.Files = new List<SaveFileEntry>(); foreach (ZipEntry file in zip) { SaveFileEntry ent = new SaveFileEntry(); ent.FileName = file.FileName; ent.memory = new MemoryStream(); file.Extract(ent.memory); Save.Files.Add(ent); } Save.zip = zip; RefreshList(); } }
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?"); } }