Exemple #1
0
        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);
    }
Exemple #3
0
    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);
        }
    }
Exemple #4
0
        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;
        }
Exemple #5
0
        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);
        }
    }
Exemple #7
0
 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;
 }
Exemple #8
0
 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;
 }
Exemple #9
0
        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();
            }
        }
Exemple #10
0
 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?");
        }
    }