コード例 #1
0
        public void Write(PkgOffsetType offsetType)
        {
            UInt32 temp = (UInt32)offsetType.Type << 24;

            temp += (UInt32)offsetType.Offset & 0x00FFFFFF;
            Write(temp);
        }
コード例 #2
0
        public void Write(PkgOffsetType offsetType)
        {
            var temp = (uint)offsetType.Type << 24;

            temp += (uint)offsetType.Offset & 0x00FFFFFF;
            Write(temp);
        }
コード例 #3
0
        public void SetData(string data, PkgOffsetType offsetType)
        {
            string type = data.Remove(4);

            offsetType.Type = (byte)AddData(type);

            offsetType.Offset = ((PkgData)Elements[offsetType.Type].ComplexValueData).SetData(data.Substring(5));
        }
コード例 #4
0
        public PkgOffsetType ReadOffsetType()
        {
            PkgOffsetType offsetType = new PkgOffsetType();
            UInt32        temp       = ReadUInt32();

            offsetType.Type   = (Byte)(temp >> 24);
            offsetType.Offset = (Int32)(temp & 0x00FFFFFF);
            return(offsetType);
        }
コード例 #5
0
        public override void Read(PkgBinaryReader reader)
        {
            valueOffsetType = reader.ReadOffsetType();


            if (valueOffsetType.Type == 128)
            {
                long pos = reader.BaseStream.Position;
                reader.Seek(valueOffsetType.Offset, SeekOrigin.Begin);

                string chunkType = reader.ReadString(4);
                switch (chunkType)
                {
                case "!idi":
                    complexValueData = new PkgObject(ParentFile);
                    complexValueData.Read(reader);
                    break;

                case "!ili":
                    complexValueData = new PkgArray(ParentFile);
                    complexValueData.Read(reader);
                    break;

                case "!iar":
                    complexValueData = new PkgDataArrayReference(ParentFile);
                    complexValueData.Read(reader);
                    break;

                case "!vca":
                    complexValueData = new PkgDataArray(ParentFile);
                    complexValueData.Read(reader);
                    break;

                case "!sbi":
                    complexValueData = PkgData.Create(ParentFile, "stri");
                    complexValueData.Read(reader);
                    break;

                case "!vbi":
                    complexValueData = PkgData.Create(reader, ParentFile);
                    complexValueData.Read(reader);
                    break;

                default:
                    throw new Exception("Chunk type not supported! " + chunkType);
                }

                reader.Seek((int)pos, SeekOrigin.Begin);
            }
        }
コード例 #6
0
        public override void Write(PkgBinaryWriter writer)
        {
            writer.Write(ChunkType, 4);
            var elemVerData = new PkgOffsetType()
            {
                Offset = Elements.Count,
                Type   = Version
            };

            writer.Write(elemVerData);

            foreach (var val in Elements)
            {
                val.Write(writer);
            }

            foreach (var val in Elements)
            {
                val.WriteComplexValue(writer);
            }
        }
コード例 #7
0
 public string GetData(PkgOffsetType offsetType)
 {
     return(((PkgData)Elements[offsetType.Type].ComplexValueData).GetData(offsetType.Offset));
 }
コード例 #8
0
 public PkgPairBase(PkgFile parentFile)
     : base(parentFile)
 {
     NameOffsetType = new PkgOffsetType();
 }
コード例 #9
0
 public PkgValue(PkgFile parentFile)
     : base(parentFile)
 {
     valueOffsetType = new PkgOffsetType();
 }
コード例 #10
0
 public PkgValue(PkgFile parentFile)
     : base(parentFile)
 {
     ValueOffsetType  = new PkgOffsetType();
     ComplexValueData = new PkgObject(parentFile);
 }
コード例 #11
0
 public override void Read(PkgBinaryReader reader)
 {
     nameOffsetType = reader.ReadOffsetType();
     base.Read(reader);
 }