private void SaveFile() { if (File.Exists(m_FileName)) { File.Delete(m_FileName); } else { dlgSave.Filter = "Text File (*.txt)|*.txt"; if (dlgSave.ShowDialog() == DialogResult.OK) { m_FileName = dlgSave.FileName; CalcCenter(dlgSave.FileName.Substring(dlgSave.FileName.LastIndexOf('\\') + 1, m_FileName.Length - (m_FileName.LastIndexOf('\\') + 1))); } else { return; } } byte[] convertBuffer = m_enc.GetBytes(textBox1.Text); for (int a = 0; a < convertBuffer.Length; a++) { if ((convertBuffer[a] == 0x95 || convertBuffer[a] == 0x45) && convertBuffer[a + 1] == 0xFF) { convertBuffer[a] = 0xFF; } } /*int j = 0; * for (int a = 0; a < convertBuffer.Length; a++) * { * if (convertBuffer[a] == 0x00) * j++; * } * byte[] newBuffer = new byte[convertBuffer.Length - j]; * int c = 0; * for (int b = 0; b < convertBuffer.Length; b++) * { * if(convertBuffer[b] != 0x00) * { * newBuffer[c] = convertBuffer[b]; * c++; * } * }*/ for (int i = 0; i < convertBuffer.Length; i++) { if (convertBuffer[i] == 0x40 && convertBuffer[i - 1] != 0x81) // 0x00 is read as a string termination { convertBuffer[i] = 0x00; // 0x40 is unlikely (impossible) to occur in a script file } } FileInfo info = new FileInfo(m_FileName); FileStream stream = info.OpenWrite(); binWrite = new BinaryWriter(stream); binWrite.Write(convertBuffer); binWrite.Close(); string FileName = ""; if (m_isSplit) { ItemsSplitter splitter = new ItemsSplitter(); splitter.Initialize(m_FileName, m_FileName.Substring(0, m_FileName.Length - 9) + "joined.txt"); splitter.Join(m_FileName.Substring(0, m_FileName.Length - 9) + ".txt"); ItemsParser iParsed = new ItemsParser(); iParsed.Initialize(m_FileName.Substring(0, m_FileName.Length - 9) + "joined.txt", m_FileName.Substring(0, m_FileName.Length - 9) + ".txt"); m_FileName = m_FileName.Substring(0, m_FileName.Length - 9) + ".txt"; if (m_is_SY) { VICompress vCompress = new VICompress(); vCompress.Initialize(m_FileName, m_FileName.Substring(0, m_FileName.Length - 3) + "_sy"); vCompress.Compress(); } } if (m_isParsed) { Parser parse = new Parser(); parse.Initialize(m_FileName, m_FileName.Substring(0, m_FileName.Length - 10) + ".txt"); if (!parse.RePack()) { MessageBox.Show("There was a problem saving this file. Make sure you're working only on files that are proven to be ready.", "Oopsy"); m_isSaved = false; return; } else { FileName = m_FileName.Substring(0, m_FileName.Length - 10) + ".txt"; if (m_is_SY) { VICompress vCompress = new VICompress(); vCompress.Initialize(FileName, FileName.Substring(0, FileName.Length - 3) + "_sy"); vCompress.Compress(); } } } m_isSaved = true; CalcCenter(m_FileName.Substring(m_FileName.LastIndexOf('\\') + 1, m_FileName.Length - (m_FileName.LastIndexOf('\\') + 1))); }
private void OpenDecompression() { switch (STRFormatClip(m_FileName)) { case "LIB": Package pckge = new Package(); string hdrFile = dlg.FileName.Substring(0, dlg.FileName.Length - dlg.SafeFileName.Length) + dlg.SafeFileName.Substring(0, dlg.SafeFileName.Length - 4) + ".HDR"; pckge.InitializeDump(dlg.FileName, hdrFile); pckge.VIDump(); m_TemporaryFolderPath = pckge.TempFolderPath; m_LibFileName = dlg.FileName; m_isLib = true; // flag to indicate lib unpacking dlg1.InitialDirectory = m_TemporaryFolderPath; dlg1.RestoreDirectory = true; dlg1.Title = "Select the library file to work on"; dlg1.Filter = "Unpacked Library Text Files (*._sy)|*._sy"; while (true) { if (dlg1.ShowDialog() == DialogResult.OK) { m_FileName = dlg1.FileName; CalcCenter(dlg1.SafeFileName); break; } } goto case "_sy"; case "_sy": VIDecrypt vDecrypt = new VIDecrypt(); vDecrypt.Initialize(m_FileName, m_FileName.Substring(0, m_FileName.LastIndexOf('\\')) + m_FileName.Substring(m_FileName.LastIndexOf('\\'), m_FileName.Length - m_FileName.LastIndexOf('\\') - 3) + "txt"); // = path + name + .txt if (vDecrypt.Decrypt()) { m_FileName = m_FileName.Substring(0, m_FileName.LastIndexOf('\\')) + m_FileName.Substring(m_FileName.LastIndexOf('\\'), m_FileName.Length - m_FileName.LastIndexOf('\\') - 3) + "txt"; vDecrypt.WriteFile(); m_is_SY = true; } else { MessageBox.Show("There was an error decompressing this system file. Try again", "oopsy"); try { if (m_TemporaryFolderPath != "" && m_TemporaryFolderPath != null) { System.IO.Directory.Delete(m_TemporaryFolderPath, true); } } catch (Exception delexe) { MessageBox.Show("Couldn't delete all of the temporary files: " + delexe.Message, "Oops"); } m_FileName = ""; m_TemporaryFolderPath = ""; m_is_SY = false; m_isLib = false; return; } goto case "txt"; case "txt": if (m_FileName.Contains("itemlist")) { ItemsSplitter splitter = new ItemsSplitter(); splitter.Initialize(m_FileName, m_FileName.Substring(0, m_FileName.Length - 4) + "split.txt"); splitter.Split(); m_FileName = m_FileName.Substring(0, m_FileName.Length - 4) + "split.txt"; m_isSplit = true; goto default; } Parser parse = new Parser(); parse.Initialize(m_FileName, m_FileName.Substring(0, m_FileName.Length - 4) + "parsed.txt"); if (!parse.TryParse()) { parse.Parse(); m_FileName = m_FileName.Substring(0, m_FileName.Length - 4) + "parsed.txt"; m_isParsed = true; } else { parse.CloseOut(); System.IO.File.Delete(m_FileName.Substring(0, m_FileName.Length - 4) + "parsed.txt"); } goto default; default: CalcCenter(m_FileName.Substring(m_FileName.LastIndexOf('\\') + 1, m_FileName.Length - (m_FileName.LastIndexOf('\\') + 1))); FileInfo info = new FileInfo(m_FileName); FileStream stream = info.OpenRead(); binRead = new BinaryReader(stream); m_ReadBuffer = binRead.ReadBytes((int)stream.Length); Encoding enc = Encoding.GetEncoding(932); //stream.Close(); info = new FileInfo(m_FileName); TextReader streamr = info.OpenText(); stream.Close(); for (int i = 0; i < m_ReadBuffer.Length; i++) { if (m_ReadBuffer[i] == 0x00) // 0x00 is read as a string termination { m_ReadBuffer[i] = 0x40; // 0x40 is unlikely (impossible) to occur in a script file } } textBox1.Text = enc.GetString(m_ReadBuffer); IntelliText(); if (m_isHexTable) { return; } hexForm = new HexForm(this); hexForm.Show(); m_isHexTable = true; m_enc = enc; stream.Close(); streamr.Close(); binRead = null; break; } }