private void btnSave_Click(object sender, EventArgs e) { if (tbxFile.Text == "") { MessageBox.Show("Whoops, browse for a file first!"); } else { int nodeCount = PACK.GetFileNodeCount(tbxFile.Text); uint[] currentPaddings = PACK.GetFileNodePaddings(tbxFile.Text); int[] gridPaddings = new int[nodeCount]; bool dataChanged = false; for (int i = 0; i < nodeCount; i++) { gridPaddings[i] = Convert.ToInt32(dgvTable.Rows[i].Cells[1].Value); if (gridPaddings[i] != currentPaddings[i]) //check if paddings need to be changed { PACK.UpdateFilePadding(tbxFile.Text, i, (gridPaddings[i] - (int)(currentPaddings[i]))); dataChanged = true; } } if (dataChanged) { PACK.UpdateFileSize(tbxFile.Text); MessageBox.Show("Save Complete!" + "\n\n" + tbxFile.Text); } else //if no change occured in the data upon saving { MessageBox.Show("No changes were made!" + "\n" + "Data matches current file"); } for (int i = 0; i < dgvTable.Rows.Count; i++) //reset color { dgvTable.Rows[i].Cells[1].Style.BackColor = Color.White; } } }
private void btnCusBrowse_Click(object sender, EventArgs e) { if (rbnCustomFile.Checked) { OpenFileDialog cusFile = new OpenFileDialog(); cusFile.Filter = "PACK File (*.pack *.sarc *.ssarc *.rarc *.sgenvb *.sbfarc *.sblarc *.sbactorpack)|*.pack; *.sarc; *.ssarc; *.rarc; *.sgenvb; *.sbfarc; *.sblarc; *.sbactorpack|All Files|*.*"; if (Properties.Settings.Default.RootFolder != "") { cusFile.InitialDirectory = Properties.Settings.Default.RootFolder; } if (cusFile.ShowDialog() == DialogResult.Cancel) { goto toss; } tbxCustom.Text = cusFile.FileName; dgvCusTable.Rows.Clear(); dgvCusTable.Refresh(); verify: byte[] fileCheck = System.IO.File.ReadAllBytes(tbxCustom.Text); if (fileCheck[0] == 'Y' && fileCheck[1] == 'a' && fileCheck[2] == 'z' && fileCheck[3] == '0') // if Yaz0 encoded, ask if they want to decode it { DialogResult diagResult = MessageBox.Show("This file is encoded!" + "\n\n" + "Do you want to decode?\nIt will create a seperate file automatically", "Yaz0 Encoded file...", MessageBoxButtons.YesNo); if (diagResult == DialogResult.No) { tbxCustom.Text = ""; goto toss; } string outFile = Path.GetDirectoryName(cusFile.FileName) + "\\" + Path.GetFileNameWithoutExtension(cusFile.FileName) + "Decoded" + Path.GetExtension(cusFile.FileName); if (!Yaz0.Decode(cusFile.FileName, outFile)) { MessageBox.Show("Decode error:" + "\n\n" + Yaz0.lerror); tbxCustom.Text = ""; goto toss; } tbxCustom.Text = outFile; goto verify; } if (("" + ((char)fileCheck[0]) + ((char)fileCheck[1]) + ((char)fileCheck[2]) + ((char)fileCheck[3])) != "SARC") { MessageBox.Show("Not a SARC archive! Missing SARC header at 0x00" + "\n" + "( Your file header is: " + ((char)fileCheck[0]) + ((char)fileCheck[1]) + ((char)fileCheck[2]) + ((char)fileCheck[3]) + " )"); tbxCustom.Text = ""; goto toss; } int nodeCount = PACK.GetFileNodeCount(tbxCustom.Text); string[] nodeTypes = PACK.GetFileNodeType(tbxCustom.Text); uint[] nodeSizes = PACK.GetFileNodeSizes(tbxCustom.Text); string[] nodePaths = PACK.GetFileNodePaths(tbxCustom.Text); uint[] nodePaddings = PACK.GetFileNodePaddings(tbxCustom.Text); for (int i = 0; i < nodeCount; i++) { dgvCusTable.Rows.Add(); dgvCusTable.Rows[i].Cells[0].Value = i + 1; dgvCusTable.Rows[i].Cells[1].Value = nodeTypes[i]; dgvCusTable.Rows[i].Cells[2].Value = nodeSizes[i]; dgvCusTable.Rows[i].Cells[3].Value = nodeSizes[i].ToString("X"); dgvCusTable.Rows[i].Cells[4].Value = nodePaths[i]; dgvCusTable.Rows[i].Cells[5].Value = nodePaddings[i]; } toss: cusFile.Dispose(); GC.Collect(); } else if (rbnCustomFolder.Checked) { FolderBrowserDialog cusFolder = new FolderBrowserDialog(); if (Properties.Settings.Default.RootFolder != "") { cusFolder.SelectedPath = Properties.Settings.Default.RootFolder; } cusFolder.Description = "Select Custom Folder"; if (cusFolder.ShowDialog() == DialogResult.Cancel) { goto toss; } tbxCustom.Text = cusFolder.SelectedPath; dgvCusTable.Rows.Clear(); dgvCusTable.Refresh(); string[] cusFolderFiles = System.IO.Directory.GetFiles(cusFolder.SelectedPath == "" ? System.Environment.CurrentDirectory : cusFolder.SelectedPath, "*.*", System.IO.SearchOption.AllDirectories); int nodeCount = cusFolderFiles.Length; if (nodeCount > 1000) { MessageBox.Show("Too many files (1000+)!\n\nI doubt you ment to select this folder...\n" + tbxCustom.Text + "\n\nTry again"); tbxCustom.Text = ""; goto toss; } uint[] nodeSizes = PACK.GetFolderFileSizes(cusFolder.SelectedPath); string[] nodeTypes = PACK.GetFolderFileTypes(cusFolder.SelectedPath); string[] nodePaths = PACK.GetFolderFilePaths(cusFolder.SelectedPath); for (int i = 0; i < nodeCount; i++) { dgvCusTable.Rows.Add(); dgvCusTable.Rows[i].Cells[0].Value = i + 1; dgvCusTable.Rows[i].Cells[1].Value = nodeTypes[i]; dgvCusTable.Rows[i].Cells[2].Value = nodeSizes[i]; dgvCusTable.Rows[i].Cells[3].Value = nodeSizes[i].ToString("X"); dgvCusTable.Rows[i].Cells[4].Value = nodePaths[i]; } toss: cusFolder.Dispose(); GC.Collect(); } }
private void btnOriBrowse_Click(object sender, EventArgs e) { OpenFileDialog oriFile = new OpenFileDialog(); oriFile.Filter = "PACK File (*.pack *.sarc *.ssarc *.rarc *.sgenvb *.sbfarc *.sblarc *.sbactorpack)|*.pack; *.sarc; *.ssarc; *.rarc; *.sgenvb; *.sbfarc; *.sblarc; *.sbactorpack|All Files|*.*"; if (Properties.Settings.Default.RootFolder != "") { oriFile.InitialDirectory = Properties.Settings.Default.RootFolder; } if (oriFile.ShowDialog() == DialogResult.Cancel) { goto toss; } tbxOriFile.Text = oriFile.FileName; dgvOriTable.Rows.Clear(); dgvOriTable.Refresh(); verify: byte[] fileCheck = System.IO.File.ReadAllBytes(tbxOriFile.Text); if (fileCheck[0] == 'Y' && fileCheck[1] == 'a' && fileCheck[2] == 'z' && fileCheck[3] == '0') // if Yaz0 encoded, ask if they want to decode it { DialogResult diagResult = MessageBox.Show("This file is encoded!" + "\n\n" + "Do you want to decode?\nIt will create a seperate file automatically", "Yaz0 Encoded file...", MessageBoxButtons.YesNo); if (diagResult == DialogResult.No) { tbxOriFile.Text = ""; goto toss; } string outFile = Path.GetDirectoryName(oriFile.FileName) + "\\" + Path.GetFileNameWithoutExtension(oriFile.FileName) + "Decoded" + Path.GetExtension(oriFile.FileName); if (!Yaz0.Decode(oriFile.FileName, outFile)) { MessageBox.Show("Decode error:" + "\n\n" + Yaz0.lerror); tbxOriFile.Text = ""; goto toss; } tbxOriFile.Text = outFile; goto verify; } if (("" + ((char)fileCheck[0]) + ((char)fileCheck[1]) + ((char)fileCheck[2]) + ((char)fileCheck[3])) != "SARC") { MessageBox.Show("Not a SARC archive! Missing SARC header at 0x00" + "\n" + "( Your file header is: " + ((char)fileCheck[0]) + ((char)fileCheck[1]) + ((char)fileCheck[2]) + ((char)fileCheck[3]) + " )"); tbxOriFile.Text = ""; goto toss; } int nodeCount = PACK.GetFileNodeCount(tbxOriFile.Text); string[] nodeTypes = PACK.GetFileNodeType(tbxOriFile.Text); uint[] nodeSizes = PACK.GetFileNodeSizes(tbxOriFile.Text); string[] nodePaths = PACK.GetFileNodePaths(tbxOriFile.Text); uint[] nodePaddings = PACK.GetFileNodePaddings(tbxOriFile.Text); for (int i = 0; i < nodeCount; i++) { dgvOriTable.Rows.Add(); dgvOriTable.Rows[i].Cells[0].Value = i + 1; dgvOriTable.Rows[i].Cells[1].Value = nodeTypes[i]; dgvOriTable.Rows[i].Cells[2].Value = nodeSizes[i]; dgvOriTable.Rows[i].Cells[3].Value = nodeSizes[i].ToString("X"); dgvOriTable.Rows[i].Cells[4].Value = nodePaths[i]; dgvOriTable.Rows[i].Cells[5].Value = nodePaddings[i]; } toss: oriFile.Dispose(); GC.Collect(); }
private void btnBrowse_Click(object sender, EventArgs e) { OpenFileDialog inFile = new OpenFileDialog(); inFile.Filter = "All Files|*.*"; if (inFile.ShowDialog() == DialogResult.Cancel) { goto toss; } tbxFile.Text = inFile.FileName; btnSave.Enabled = true; dgvTable.Rows.Clear(); dgvTable.Refresh(); verify: byte[] fileCheck = System.IO.File.ReadAllBytes(tbxFile.Text); if (fileCheck[0] == 'Y' && fileCheck[1] == 'a' && fileCheck[2] == 'z' && fileCheck[3] == '0') // if Yaz0 encoded, ask if they want to decode it { DialogResult diagResult = MessageBox.Show("This file is encoded!" + "\n\n" + "Do you want to decode?\nIt will create a seperate file automatically", "Yaz0 Encoded file...", MessageBoxButtons.YesNo); if (diagResult == DialogResult.No) { tbxFile.Text = ""; btnSave.Enabled = false; goto toss; } string outFile = Path.GetDirectoryName(inFile.FileName) + "\\" + Path.GetFileNameWithoutExtension(inFile.FileName) + "Decoded" + Path.GetExtension(inFile.FileName); if (!Yaz0.Decode(inFile.FileName, outFile)) { MessageBox.Show("Decode error:" + "\n\n" + Yaz0.lerror); tbxFile.Text = ""; btnSave.Enabled = false; goto toss; } tbxFile.Text = outFile; goto verify; } if (("" + ((char)fileCheck[0]) + ((char)fileCheck[1]) + ((char)fileCheck[2]) + ((char)fileCheck[3])) != "SARC") { MessageBox.Show("Not a SARC archive! Missing SARC header at 0x00" + "\n" + "( Your file header is: " + ((char)fileCheck[0]) + ((char)fileCheck[1]) + ((char)fileCheck[2]) + ((char)fileCheck[3]) + " )"); tbxFile.Text = ""; btnSave.Enabled = false; goto toss; } int nodeCount = PACK.GetFileNodeCount(tbxFile.Text); string[] nodeTypes = PACK.GetFileNodeType(tbxFile.Text); uint[] nodeSizes = PACK.GetFileNodeSizes(tbxFile.Text); string[] nodePaths = PACK.GetFileNodePaths(tbxFile.Text); uint[] nodePaddings = PACK.GetFileNodePaddings(tbxFile.Text); for (int i = 0; i < nodeCount; i++) { dgvTable.Rows.Add(); dgvTable.Rows[i].Cells[0].Value = i + 1; dgvTable.Rows[i].Cells[1].Value = nodePaddings[i]; dgvTable.Rows[i].Cells[2].Value = nodeTypes[i]; dgvTable.Rows[i].Cells[3].Value = nodeSizes[i]; dgvTable.Rows[i].Cells[4].Value = nodeSizes[i].ToString("X"); dgvTable.Rows[i].Cells[5].Value = nodePaths[i]; } fileSize = fileCheck.Length; tbxFileSize.Text = fileSize.ToString(); dataOffset = PACK.GetFileDataOffset(tbxFile.Text); tbxDataOffset.Text = "0x" + dataOffset.ToString("X"); toss: inFile.Dispose(); GC.Collect(); }