Пример #1
0
        private void button7_Click(object sender, EventArgs e)
        {
            PCCObject.ExportEntry entry  = new PCCObject.ExportEntry();
            PCCObject.ExportEntry source = pcc.Exports[ObjectIndex];
            byte[] Header = new byte[source.info.Length];                       //Header
            for (int i = 0; i < source.info.Length; i++)
            {
                Header[i] = source.info[i];
            }
            entry.pccRef = pcc;
            entry.info   = Header;
            if (radioButton2.Checked)                                           //Name from list
            {
                if (comboBox1.SelectedIndex != -1)
                {
                    entry.idxObjectName = comboBox1.SelectedIndex;
                }
            }
            if (radioButton3.Checked)                                           //Custom Name
            {
                if (textBox1.Text != "")
                {
                    pcc.Names.Add(textBox1.Text);
                    entry.idxObjectName = pcc.Names.Count - 1;
                }
            }
            if (radioButton4.Checked)                                           //Class
            {
                if (comboBox2.SelectedIndex != -1)
                {
                    entry.idxClassName = Classes[comboBox2.SelectedIndex];
                }
            }
            if (radioButton8.Checked)                                           //Link
            {
                if (treeView1.SelectedNode != null)
                {
                    string link = treeView1.SelectedNode.Name;
                    entry.idxLink = Convert.ToInt32(link);
                }
            }
            byte[] Data = new byte[0];
            if (radioButton6.Checked)                                           //Load data from file...
            {
                if (File.Exists(textBox2.Text))
                {
                    FileStream fs = new FileStream(textBox2.Text, FileMode.Open, FileAccess.Read);
                    Data = new byte[fs.Length];
                    for (int i = 0; i < fs.Length; i++)
                    {
                        Data[i] = (byte)fs.ReadByte();
                    }
                    fs.Close();
                }
            }
            if (radioButton7.Checked)                                           //...or keep old data
            {
                Data = new byte[source.Data.Length];
                for (int i = 0; i < source.Data.Length; i++)
                {
                    Data[i] = source.Data[i];
                }
            }
            entry.Data = Data;
            int lastoffset = 0;

            foreach (PCCObject.ExportEntry ent in pcc.Exports)
            {
                if (ent.DataOffset > lastoffset)
                {
                    lastoffset = ent.DataOffset + ent.Data.Length;
                }
            }
            entry.DataOffset = lastoffset;
            //entry.DataSize = -1;//force update
            pcc.addExport(entry);
            foreach (PCCObject.ExportEntry ex in pcc.Exports) //silly update trick, but it works... wv
            {
                ex.Data = ex.Data;
            }
            refForm.RefreshView();
            this.Close();
        }