Esempio n. 1
0
        public Dictionary<string, object> GetValues(DcObject dcObject)
        {
            Dictionary<string, object> values = new Dictionary<string, object>();

            for (int i = 0; i < dcObject.ArgsCount; i++)
            {
                var val = Values[dcObject.ArgsShift + i];

                values.Add(val.Key, val.Value);
            }

            for (int i = 0; i < dcObject.SubCount; i++)
            {
                DcObject val = Objects[dcObject.SubShift + i];

                if (!values.ContainsKey(val.Name))
                    values.Add(val.Name, new List<Dictionary<string, object>>());

                List<Dictionary<string, object>> vals = (List<Dictionary<string, object>>) values[val.Name];

                vals.Add(GetValues(val));
            }

            return values;
        }
Esempio n. 2
0
        static void ReadObjects(string path)
        {
            DcObjects = new List<DcObject>();

            using (FileStream decStream = File.OpenRead(path))
            {
                long del = 0xFFFF0;

                while (decStream.Position < decStream.Length)
                {
                    byte[] data = new byte[16];

                    if (decStream.Position == del)
                    {
                        decStream.Read(data, 0, 8);
                        del += 0x100008;
                    }

                    decStream.Read(data, 0, data.Length);

                    string keyHex = BitConverter.ToString(data, 0, 2).Replace("-", " ");

                    string name = Args[keyHex];
                    int argsCount = BitConverter.ToUInt16(data, 4);
                    int subCount = BitConverter.ToUInt16(data, 6);

                    byte[] shiftData = new byte[4];
                    shiftData[0] = data[10];
                    shiftData[1] = data[11];
                    shiftData[2] = data[8];
                    shiftData[3] = data[9];

                    int argsShift = BitConverter.ToInt32(shiftData, 0);

                    shiftData[0] = data[14];
                    shiftData[1] = data[15];
                    shiftData[2] = data[12];
                    shiftData[3] = data[13];

                    int subShift = BitConverter.ToInt32(shiftData, 0) - 1;

                    DcObject dcObject = new DcObject
                                            {
                                                Name = name,

                                                ArgsCount = argsCount,
                                                ArgsShift = argsShift,

                                                SubCount = subCount,
                                                SubShift = subShift,
                                            };

                    DcObjects.Add(dcObject);
                }
            }
        }
Esempio n. 3
0
        static void ReadObjects(string path)
        {
            int counter = 1; ;
            DcObjects = new List<DcObject>();
            List<string> log = new List<string>();

            using (FileStream decStream = File.OpenRead(path))
            {
                //first Spacer
                long del = 0xFFFF0;

                while (decStream.Position < decStream.Length)
                {
                    byte[] data = new byte[16];

                    if (decStream.Position == del)
                    {
                        decStream.Read(data, 0, 8);
                        //every (65536 objects (+ 1 nullvalue object (x 16 bytes) = ) 1048576 bytes is the next spacer located
                        del += 0x100008;
                    }

                    decStream.Read(data, 0, data.Length);

                    string keyHex = BitConverter.ToString(data, 0, 2).Replace("-", " ");

                    string name = Args[keyHex];
                    int argsCount = BitConverter.ToUInt16(data, 4);
                    int subCount = BitConverter.ToUInt16(data, 6);

                    // Data Structure Example : D6 00, 00 00, 04 00, 00 00, 00 00 0C 00, FF FF FF FF
                    // Arg (D6 00),nothing (00 00),argsCount (04 00) subCount (00 00), argsShift (00 00 0C 00), subShift (FF FF FF FF)

                    //just invert the byteStreamData to get out a valid int
                    byte[] shiftData = new byte[4];
                    shiftData[0] = data[10];
                    shiftData[1] = data[11];
                    shiftData[2] = data[8];
                    shiftData[3] = data[9];

                    int argsShift = BitConverter.ToInt32(shiftData, 0);

                    shiftData[0] = data[14];
                    shiftData[1] = data[15];
                    shiftData[2] = data[12];
                    shiftData[3] = data[13];

                    int subShift = BitConverter.ToInt32(shiftData, 0) - 1;

                    DcObject dcObject = new DcObject
                                            {
                                                Name = name,

                                                ArgsCount = argsCount,
                                                ArgsShift = argsShift,

                                                SubCount = subCount,
                                                SubShift = subShift,
                                            };

                    DcObjects.Add(dcObject);
                    txt = "\rprocessing Objects   : " + DcObjects.Count;
                    Console.Write(txt + " - {0}%", (100f*decStream.Position/decStream.Length).ToString("0.00"));

                    counter++;
                }
                Console.WriteLine(txt + " - DONE              ");
            }
        }