コード例 #1
0
ファイル: Map.cs プロジェクト: exodus444/swtoremu2
        public override object ReadData(GomBinaryReader reader)
        {
            GomType keyType = GomTypeLoader.Load(reader, false);

            if ((KeyType != null) && (keyType.TypeId == KeyType.TypeId))
            {
                keyType = KeyType;
            }

            GomType valType = GomTypeLoader.Load(reader, false);

            if ((ValueType != null) && (valType.TypeId == ValueType.TypeId))
            {
                valType = ValueType;
            }

            int len  = (int)reader.ReadNumber();
            int len2 = (int)reader.ReadNumber();

            if (len != len2)
            {
                throw new InvalidOperationException("Map length values aren't the same?!");
            }

            Dictionary <object, object> result = new Dictionary <object, object>(len);

            for (var i = 0; i < len; i++)
            {
                var key = keyType.ReadItem(reader);
                var val = valType.ReadItem(reader);
                result.Add(key, val);
            }

            return(result);
        }
コード例 #2
0
ファイル: ClassLoader.cs プロジェクト: exodus444/swtoremu2
        public DomType Load(GomBinaryReader reader)
        {
            DomClass result = new DomClass();

            LoaderHelper.ParseShared(reader, result);

            reader.BaseStream.Position = 0x2A;
            short numComponents   = reader.ReadInt16();
            short componentOffset = reader.ReadInt16();
            short numFields       = reader.ReadInt16();
            short fieldsOffset    = reader.ReadInt16();

            if (numComponents > 0)
            {
                reader.BaseStream.Position = componentOffset;
                for (var i = 0; i < numComponents; i++)
                {
                    result.ComponentIds.Add(reader.ReadUInt64());
                }
            }

            if (numFields > 0)
            {
                reader.BaseStream.Position = fieldsOffset;
                for (var i = 0; i < numFields; i++)
                {
                    result.FieldIds.Add(reader.ReadUInt64());
                }
            }

            return(result);
        }
コード例 #3
0
ファイル: List.cs プロジェクト: exodus444/swtoremu2
        public override object ReadData(GomBinaryReader reader)
        {
            GomType itemType = GomTypeLoader.Load(reader, false);

            if ((ContainedType != null) && (itemType.TypeId == ContainedType.TypeId))
            {
                itemType = ContainedType;
            }

            int len  = (int)reader.ReadNumber();
            int len2 = (int)reader.ReadNumber();

            if (len != len2)
            {
                throw new InvalidOperationException("List length values aren't the same?!");
            }

            List <object> result = new List <object>(len);

            for (var i = 0; i < len; i++)
            {
                var idx = reader.ReadNumber();
                var val = itemType.ReadItem(reader);
                result.Add(val);
            }

            return(result);
        }
コード例 #4
0
        public DomType Load(GomBinaryReader reader)
        {
            DomAssociation result = new DomAssociation();

            LoaderHelper.ParseShared(reader, result);
            return(result);
        }
コード例 #5
0
        public DomType Load(GomBinaryReader reader)
        {
            DomEnum result = new DomEnum();

            LoaderHelper.ParseShared(reader, result);

            reader.BaseStream.Position = 0x12;
            var nameOffset = reader.ReadInt16();

            reader.BaseStream.Position = 0x18;
            var numVals   = reader.ReadInt16();
            var valOffset = reader.ReadInt16();

            // Read in names
            reader.BaseStream.Position = nameOffset;
            for (var i = 0; i < numVals; i++)
            {
                var name = reader.ReadNullTerminatedString();
                result.AddName(name);
            }

            // Read in values
            reader.BaseStream.Position = valOffset;
            for (var i = 0; i < numVals; i++)
            {
                var val = reader.ReadInt16();
                result.AddValue(val);
            }

            return(result);
        }
コード例 #6
0
ファイル: Enum.cs プロジェクト: exodus444/swtoremu2
        public override object ReadData(GomBinaryReader reader)
        {
            ScriptEnum result = new ScriptEnum();

            byte val = (byte)reader.ReadNumber();

            result.Value    = val;
            result.EnumType = this.DomEnum;

            return(result);
        }
コード例 #7
0
        public GomType Load(GomBinaryReader reader, bool fromGom)
        {
            var t = new GomTypes.Map();

            if (fromGom)
            {
                t.KeyType   = GomTypeLoader.Load(reader, fromGom);
                t.ValueType = GomTypeLoader.Load(reader, fromGom);
            }
            return(t);
        }
コード例 #8
0
ファイル: EnumLoader.cs プロジェクト: exodus444/swtoremu2
        public GomType Load(GomBinaryReader reader, bool fromGom)
        {
            GomTypes.Enum t = new GomTypes.Enum();
            if (fromGom)
            {
                ulong enumTypeId = reader.ReadUInt64();
                t.DomEnumId = enumTypeId;
            }

            return(t);
        }
コード例 #9
0
ファイル: ListLoader.cs プロジェクト: exodus444/swtoremu2
        public GomType Load(GomBinaryReader reader, bool fromGom)
        {
            var result = new GomTypes.List();

            if (fromGom)
            {
                result.ContainedType = GomTypeLoader.Load(reader, fromGom);
            }

            return(result);
        }
コード例 #10
0
        public GomType Load(GomBinaryReader reader, bool fromGom)
        {
            GomTypes.ClassRef t = new GomTypes.ClassRef();

            if (fromGom)
            {
                ulong classTypeId = reader.ReadUInt64();
                t.DomClassId = classTypeId;
            }

            return(t);
        }
コード例 #11
0
        public override object ReadData(GomBinaryReader reader)
        {
            ulong instanceId = reader.ReadNumber();
            var   gomObj     = DataObjectModel.Get <GomObject>(instanceId);

            //if (gomObj != null)
            //{
            //    gomObj.Load();
            //}

            return(gomObj);
        }
コード例 #12
0
        public override object ReadData(GomBinaryReader reader)
        {
            List <float> vec = new List <float>(3);
            float        x   = reader.ReadSingle();
            float        y   = reader.ReadSingle();
            float        z   = reader.ReadSingle();

            vec.Add(x);
            vec.Add(y);
            vec.Add(z);

            return(vec);
        }
コード例 #13
0
        public DomType Load(GomBinaryReader reader)
        {
            DomField result = new DomField();

            LoaderHelper.ParseShared(reader, result);

            reader.BaseStream.Position = 0x12;
            short typeOffset = reader.ReadInt16();

            reader.BaseStream.Position = typeOffset;
            result.GomType             = reader.ReadGomType();

            return(result);
        }
コード例 #14
0
        internal static void ParseShared(GomBinaryReader reader, DomType dom)
        {
            long offset = reader.BaseStream.Position;

            //reader.BaseStream.Position = 0x8;
            //dom.Id = reader.ReadUInt64();
            reader.BaseStream.Position = 0x14;
            short nameOffset = reader.ReadInt16();
            short descOffset = reader.ReadInt16();

            reader.BaseStream.Position = nameOffset;
            dom.Name = reader.ReadNullTerminatedString();

            reader.BaseStream.Position = descOffset;
            dom.Description            = reader.ReadNullTerminatedString();

            reader.BaseStream.Position = offset;
        }
コード例 #15
0
        public DomType Load(GomBinaryReader reader)
        {
            GomObject result = new GomObject();

            result.Id = reader.ReadUInt64();
            int nameLen = reader.ReadInt32();

            result.Name = reader.ReadFixedLengthString(nameLen - 1);
            reader.ReadByte();
            result.Description = String.Empty;

            reader.ReadByte();
            reader.ReadInt32();
            reader.ReadInt32();
            reader.ReadInt32();
            result.ClassId = reader.ReadUInt64();
            // reader.ReadBytes(0xC);
            reader.ReadBytes(0x8);
            result.ObjectSizeInFile = reader.ReadInt32(); // 0x24
            result.IsCompressed     = false;
            // result.NodeDataOffset = 20 + nameLen + 37; // 8 byte file header + node ID + nameLen + node name + 37 byte node header
            result.NodeDataOffset = 20 + nameLen + 33; // 8 byte file header + node ID + nameLen + node name + 33 byte node header

            if (result.ObjectSizeInFile > 0)
            {
                // Copy the data to the instance
                //var buff = reader.ReadBytes(result.ObjectSizeInFile);

                result.DataLength = result.ObjectSizeInFile;
                //result.DataBuffer = buff;
            }
            else
            {
                result.DataLength = 0;
            }

            // Gom.AddObject(result);

            return(result);
        }
コード例 #16
0
 public override object ReadData(GomBinaryReader reader)
 {
     reader.ReadBytes(0x22);
     return(null);
 }
コード例 #17
0
ファイル: VectorLoader.cs プロジェクト: exodus444/swtoremu2
 public GomType Load(GomBinaryReader reader, bool fromGom)
 {
     return new GomTypes.Vector();
 }
コード例 #18
0
        public override object ReadData(GomBinaryReader reader)
        {
            float val = reader.ReadSingle();

            return(val);
        }
コード例 #19
0
ファイル: TimeSpan.cs プロジェクト: exodus444/swtoremu2
 public override object ReadData(GomBinaryReader reader)
 {
     return(reader.ReadNumber());
 }
コード例 #20
0
ファイル: Map.cs プロジェクト: exodus444/swtoremu2
 public override bool ConfirmType(GomBinaryReader reader)
 {
     //return base.ConfirmType(reader) && KeyType.ConfirmType(reader) && ValueType.ConfirmType(reader);
     return(base.ConfirmType(reader));
 }
コード例 #21
0
        public override object ReadData(GomBinaryReader reader)
        {
            ulong val = reader.ReadNumber();

            return(val);
        }
コード例 #22
0
 public override object ReadData(GomBinaryReader reader)
 {
     return(reader.ReadLengthPrefixString(Encoding.UTF8));
 }
コード例 #23
0
ファイル: TimeSpanLoader.cs プロジェクト: exodus444/swtoremu2
 public GomType Load(GomBinaryReader reader, bool fromGom)
 {
     return(new GomTypes.TimeSpan());
 }
コード例 #24
0
ファイル: FloatLoader.cs プロジェクト: exodus444/swtoremu2
 public GomType Load(GomBinaryReader reader, bool fromGom)
 {
     return(new GomTypes.Float());
 }
コード例 #25
0
 public override object ReadData(GomBinaryReader reader)
 {
     throw new NotImplementedException();
 }
コード例 #26
0
ファイル: Boolean.cs プロジェクト: exodus444/swtoremu2
        public override object ReadData(GomBinaryReader reader)
        {
            byte val = reader.ReadByte();

            return(val != 0);
        }
コード例 #27
0
ファイル: InstanceLoader.cs プロジェクト: exodus444/swtoremu2
        public DomType Load(GomBinaryReader reader)
        {
            GomObject result = new GomObject();

            LoaderHelper.ParseShared(reader, result);

            reader.BaseStream.Position = 0x12;
            short headerEnd = reader.ReadInt16();

            reader.BaseStream.Position = 0x18;
            //result.Offset20 = reader.ReadInt32();

            result.ClassId = reader.ReadUInt64();         // Offset 0x18

            result.Offset20 = reader.ReadInt32();         // 0x20

            result.NumGlommed       = reader.ReadInt16(); // 0x24
            result.Offset26         = reader.ReadInt16(); // 0x26
            result.ObjectSizeInFile = reader.ReadInt32(); // 0x28
            result.Offset2C         = reader.ReadInt16(); // 0x2C
            result.Offset2E         = reader.ReadInt16(); // 0x2E
            result.Offset30         = reader.ReadByte();  // 0x30
            result.Offset31         = reader.ReadByte();  // 0x31

            reader.BaseStream.Position = headerEnd;

            if (headerEnd != reader.BaseStream.Length)
            {
                //InflaterInputStream istream = new InflaterInputStream(reader.BaseStream);
                //string outFileName = result.Name;
                //outFileName = outFileName.Replace('/', '_');
                //outFileName = outFileName.Replace('.', '\\');
                //outFileName = outFileName + ".node";
                //string path = System.IO.Path.Combine("c:\\code\\swtorfiles\\prototypes\\", outFileName);
                //if (path.Contains("\\con\\"))
                //{
                //    path = path.Replace("\\con\\", "\\_con\\");
                //}
                ////path = String.Format("c:\\code\\swtorfiles\\prototypes\\{1}", result.Id, result.Name);
                //string dir = System.IO.Path.GetDirectoryName(path);

                //if (!outDirs.Contains(dir))
                //{
                //    try
                //    {
                //        System.IO.Directory.CreateDirectory(dir);
                //        outDirs.Add(dir);
                //    }
                //    catch (System.IO.IOException)
                //    {
                //        Console.WriteLine("Cannot create directory {0} for {1}", dir, path);
                //        return result;
                //    }
                //}

                //using (var fs = System.IO.File.Open(path, System.IO.FileMode.Create, System.IO.FileAccess.Write))
                //{
                //    ICSharpCode.SharpZipLib.Core.StreamUtils.Copy(istream, fs, outBuff);
                //}

                // Copy the compressed data to the instance
                int compressedLength = (int)(reader.BaseStream.Length - reader.BaseStream.Position);
                var buff             = reader.ReadBytes(compressedLength);

                adlerCalc.Update(buff);
                result.Checksum = adlerCalc.Value;
                adlerCalc.Reset();

                result.IsCompressed = true;
                result.DataLength   = compressedLength;
                result.DataBuffer   = buff;
            }
            else
            {
                result.DataLength = 0;
            }

            // Gom.AddObject(result);

            return(result);
        }
コード例 #28
0
ファイル: IntegerLoader.cs プロジェクト: exodus444/swtoremu2
 public GomType Load(GomBinaryReader reader, bool fromGom)
 {
     return(new GomTypes.Integer());
 }
コード例 #29
0
ファイル: EmbeddedClass.cs プロジェクト: exodus444/swtoremu2
        public override object ReadData(GomBinaryReader reader)
        {
            var obj = ScriptObjectReader.ReadObject(this.DomClass, reader);

            return(obj);
        }