private void OpenToolStripMenuItem_Click(object sender, EventArgs exxx) { BrakeReading = false; list_id = 0; bool isParse = int.TryParse(textBox2.Text, out list_id); if (!isParse) { MessageBox.Show("Please specify the list!"); return; } LastList = list_id; bool tryparse2 = int.TryParse(textBox4.Text, out int version); if (!tryparse2) { MessageBox.Show("Please specify an element version!"); return; } bool tryparse3 = int.TryParse(textBox3.Text, out int countx); OpenFileDialog eLoad = new OpenFileDialog { Filter = "Elements File (*.data)|*.data|All Files (*.*)|*.*", RestoreDirectory = false }; if (eLoad.ShowDialog() == System.Windows.Forms.DialogResult.OK && File.Exists(eLoad.FileName)) { GC.Collect(); sameFile = eLoad.FileName; try { Blocked = true; LastAddress = textBox1.Text; eLC = new eListCollection(); eLC.progress_bar += Progress_bar; eList[] Li = new eList[0]; Li = eLC.LoadEmptyConfigs(version); eLC.Lists = Li; listBox_items.Rows.Clear(); using (FileStream fs = File.OpenRead(eLoad.FileName)) { using (BinaryReader br = new BinaryReader(fs)) { int pos = Convert.ToInt32(textBox1.Text.ToUpper().Trim().Normalize(), 16); br.BaseStream.Seek(pos, SeekOrigin.Begin); for (int l = list_id; l < list_id + 1; l++) { eLC.Lists[l].elementValues = new SortedList <int, SortedList <int, object> >(); eLC.Lists[l].elementPosition = new SortedList <int, int>(); for (int e = 0; e < (tryparse3 && countx > 0 ? countx : 999999); e++) { eLC.Lists[l].elementValues[e] = new SortedList <int, object>(); Application.DoEvents(); Progress_bar("Read :" + e + "/" + 99999, e, 99999); try { for (int f = 0; f < eLC.Lists[l].elementTypes.Length; f++) { eLC.Lists[l].elementValues[e][f] = eLC.ReadValue(br, eLC.Lists[l].elementTypes[f]); if (eLC.Lists[l].elementFields[f] == "Name") { int id = Int32.Parse(eLC.Lists[l].elementValues[e][0].ToString()); bool isNegative = (id & (1 << 31)) != 0; if (isNegative) { break; } listBox_items.Rows.Add(new object[] { id.ToString(), eLC.Lists[l].GetValue(e, f) }); if (checkBox1.Checked) { Application.DoEvents(); listBox_items.Rows[e].Selected = true; listBox_items.CurrentCell = listBox_items.Rows[e].Cells[0]; } } } eLC.Lists[l].elementPosition[e] = (Int32)br.BaseStream.Position; textBox5.Text = eLC.Lists[l].elementPosition[e].ToString("X4").ToUpper(); } catch { break; } if (BrakeReading) { break; } } } BrakeReading = false; Blocked = false; } } } catch (Exception e) { MessageBox.Show(e.ToString()); } } }
private void OpenSameFile() { list_id = 0; bool isParse = int.TryParse(textBox2.Text, out list_id); if (!isParse) { MessageBox.Show("Please specify the list!"); return; } bool tryparse2 = int.TryParse(textBox4.Text, out int version); if (!tryparse2) { MessageBox.Show("Please specify an element version!"); return; } bool tryparse3 = int.TryParse(textBox3.Text, out int countx); if (sameFile != null) { GC.Collect(); try { Blocked = true; eLC = new eListCollection(); eList[] Li = new eList[0]; Li = eLC.LoadEmptyConfigs(version); eLC.Lists = Li; listBox_items.Rows.Clear(); using (FileStream fs = File.OpenRead(sameFile)) { using (BinaryReader br = new BinaryReader(fs)) { int pos = Convert.ToInt32(textBox1.Text.ToUpper().Trim().Normalize(), 16); br.BaseStream.Seek(pos, SeekOrigin.Begin); for (int l = list_id; l < list_id + 1; l++) { eLC.Lists[l].elementValues = new SortedList <int, SortedList <int, object> >(); eLC.Lists[l].elementPosition = new SortedList <int, int>(); for (int e = 0; e < (tryparse3 && countx > 0 ? countx : 999999); e++) { eLC.Lists[l].elementValues[e] = new SortedList <int, object>(); Application.DoEvents(); Progress_bar("Read :" + e + "/" + 99999, e, 99999); try { for (int f = 0; f < eLC.Lists[l].elementTypes.Length; f++) { eLC.Lists[l].elementValues[e][f] = eLC.ReadValue(br, eLC.Lists[l].elementTypes[f]); if (eLC.Lists[l].elementFields[f] == "Name") { int id = Int32.Parse(eLC.Lists[l].elementValues[e][0].ToString()); bool isNegative = (id & (1 << 31)) != 0; if (isNegative) { break; } listBox_items.Rows.Add(new object[] { id.ToString(), eLC.Lists[l].GetValue(e, f) }); if (checkBox1.Checked) { Application.DoEvents(); listBox_items.Rows[e].Selected = true; listBox_items.CurrentCell = listBox_items.Rows[e].Cells[0]; } } } eLC.Lists[l].elementPosition[e] = (Int32)br.BaseStream.Position; textBox5.Text = eLC.Lists[l].elementPosition[e].ToString("X4").ToUpper(); } catch { break; } if (BrakeReading) { break; } } } BrakeReading = false; Blocked = false; } } } catch (Exception e) { MessageBox.Show(e.ToString()); } } }