Пример #1
0
        public static List <Property> getPropList(PCCObject pcc, PCCObject.ExportEntry export)
        {
            Application.DoEvents();
            int start = detectStart(pcc, export.Data, export.ObjectFlags);

            return(ReadProp(pcc, export.Data, start));
        }
Пример #2
0
 public PCCObject.ExportEntry CopyExport(PCCObject.ExportEntry exp)
 {
     PCCObject.ExportEntry ret = new PCCObject.ExportEntry(pcc, exp.Data, exp.offset);
     //ret.childs = exp.childs;
     //ret.ClassName = exp.ClassName;
     //ret.Data = CopyArray(exp.Data);
     //ret.DataSize = exp.DataSize;
     //ret.Link = exp.Link;
     //ret.ObjectName = exp.ObjectName;
     //ret.off = exp.off;
     //ret.raw = CopyArray(exp.raw);
     return ret;
 }
Пример #3
0
        public void addExport(PCCObject.ExportEntry exportEntry)
        {
            if (exportEntry.pccRef != this)
            {
                throw new Exception("you cannot add a new export entry from another pcc file, it has invalid references!");
            }

            exportEntry.hasChanged = true;

            //changing data offset in order to append it at the end of the file
            ExportEntry lastExport = Exports.Find(export => export.DataOffset == Exports.Max(entry => entry.DataOffset));
            int         lastOffset = lastExport.DataOffset + lastExport.Data.Length;

            exportEntry.DataOffset = lastOffset;

            Exports.Add(exportEntry);
        }
Пример #4
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();
 }