Esempio n. 1
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                           ushort id,
                           ushort length)
 {
     ParentId = br.ReadUInt32();
     //Debug.WriteLine("FEObject {0:X8} has parent {1:X8}", FrontendObject.NameHash, ParentId);
 }
Esempio n. 2
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                           ushort id,
                           ushort length)
 {
     Hash = br.ReadUInt32();
     //Debug.WriteLine("LabelHash={0:X8}", Hash);
 }
Esempio n. 3
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                           ushort id,
                           ushort length)
 {
     Value = Encoding.Unicode.GetString(br.ReadBytes(length)).Trim('\0');
     //Debug.WriteLine(Value);
 }
Esempio n. 4
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                           ushort id,
                           ushort length)
 {
     uint val = br.ReadUInt32();
     //Debug.WriteLine(val);
 }
Esempio n. 5
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                           ushort id,
                           ushort length)
 {
     Formatting = br.ReadEnum <FEStringFormatting>();
     //Debug.WriteLine(Formatting.ToString());
 }
Esempio n. 6
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                           ushort id,
                           ushort length)
 {
     Leading = br.ReadInt32();
     //Debug.WriteLine(Leading);
 }
Esempio n. 7
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                           ushort id,
                           ushort length)
 {
     ImageFlags = br.ReadUInt32();
     //Debug.WriteLine("ImageFlags for {2}[{1:X8}]: {0}", ImageFlags, FrontendObject.NameHash, package.Name);
 }
Esempio n. 8
0
        public override void Read(FrontendPackage package, FrontendChunkBlock chunkBlock,
                                  FrontendChunkReader chunkReader, BinaryReader reader)
        {
            ResourceNamesChunk resourceNamesChunk = null;

            foreach (var chunk in chunkReader.ReadMainChunks(chunkBlock.Size))
            {
                switch (chunk)
                {
                case ResourceNamesChunk rnc:
                    resourceNamesChunk = rnc;
                    break;

                case ResourceRequestsChunk _ when resourceNamesChunk == null:
                    throw new ChunkReadingException("RsRq came before RsNm?!");

                case ResourceRequestsChunk rrc:
                {
                    foreach (var resourceRequest in rrc.ResourceRequests)
                    {
                        resourceRequest.Name = resourceNamesChunk.Names[resourceRequest.NameOffset];
                    }

                    package.ResourceRequests.AddRange(rrc.ResourceRequests);

                    break;
                }
                }
            }
        }
Esempio n. 9
0
        public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                                  ushort id,
                                  ushort length)
        {
            ParamType    = br.ReadByte();
            ParamSize    = br.ReadByte();
            InterpType   = br.ReadByte();
            InterpAction = br.ReadByte();
            uint value       = br.ReadUInt32();
            uint trackLength = value & 0xffffff;
            uint trackOffset = (value >> 24) & 0xff;
            //Debug.WriteLine("PT {0} PS {1} IT {2} IA {3} LEN {4} OFF {5}", ParamType, ParamSize, InterpType,
            //InterpAction, trackLength, trackOffset);

            FEKeyTrack keyTrack = new FEKeyTrack
            {
                ParamSize    = ParamSize,
                ParamType    = ParamType,
                InterpType   = InterpType,
                InterpAction = InterpAction,
                Length       = trackLength,
                Offset       = trackOffset
            };

            FrontendScript.Tracks.Add(keyTrack);
        }
Esempio n. 10
0
 public override void Read(FrontendPackage package, FrontendChunkBlock chunkBlock, FrontendChunkReader chunkReader, BinaryReader reader)
 {
     chunkReader.ReadObjects(chunkBlock.Size);
     //foreach (var frontendObject in chunkReader.ReadObjects(chunkBlock.Size))
     //{
     //    Objects.Add(frontendObject);
     //}
 }
Esempio n. 11
0
        public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package, ushort id,
                                  ushort length)
        {
            FrontendMultiImage multiImage = (FrontendMultiImage)FrontendObject;
            int index = (id >> 8) - 0x61;

            multiImage.TextureFlags[index] = br.ReadUInt32();
        }
Esempio n. 12
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                           ushort id,
                           ushort length)
 {
     ReferencedObjectGuid = br.ReadUInt32();
     NameHash             = br.ReadUInt32();
     Flags         = br.ReadEnum <FE_ObjectFlags>();
     ResourceIndex = br.ReadInt32();
 }
Esempio n. 13
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                           ushort id,
                           ushort length)
 {
     Id         = br.ReadUInt32();
     Length     = br.ReadUInt32();
     Flags      = br.ReadUInt32();
     TrackCount = br.ReadUInt32();
 }
Esempio n. 14
0
        public override void Read(FrontendPackage package, FrontendChunkBlock chunkBlock, FrontendChunkReader chunkReader, BinaryReader reader)
        {
            FrontendTagStream tagStream = new FrontendMessagesTagStream(reader, package, chunkBlock,
                                                                        chunkBlock.Size);

            while (tagStream.HasTag())
            {
                FrontendTag tag = tagStream.NextTag(null);
                //Debug.WriteLine("PKG RESPONSES TAG {0}", tag);
                package = ProcessTag(package, tag);
            }
        }
Esempio n. 15
0
        public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                                  ushort id,
                                  ushort length)
        {
            Data = FrontendObject.Type switch
            {
                FEObjType.FE_Image => new FEImageData(),
                FEObjType.FE_MultiImage => new FEMultiImageData(),
                FEObjType.FE_ColoredImage => new FEColoredImageData(),
                _ => new FEObjData()
            };

            Data.Read(br);
        }
Esempio n. 16
0
        public override void Read(FrontendPackage package, FrontendChunkBlock chunkBlock, FrontendChunkReader chunkReader, BinaryReader reader)
        {
            Names = new Dictionary <long, string>();

            while (reader.BaseStream.Position < chunkBlock.EndOffset)
            {
                long pos = reader.BaseStream.Position;
                var  str = NullTerminatedString.Read(reader);
                if (!string.IsNullOrEmpty(str))
                {
                    Names[pos - chunkBlock.DataOffset] = str;
                }
            }
        }
Esempio n. 17
0
        public override FrontendObject Read(FrontendPackage package, ObjectReaderState readerState, BinaryReader reader)
        {
            FrontendObject    newFrontendObject = FrontendObject;
            FrontendTagStream tagStream         = new FrontendObjectTagStream(reader, readerState.CurrentChunkBlock, readerState.CurrentChunkBlock.Size);

            while (tagStream.HasTag())
            {
                FrontendTag tag = tagStream.NextTag(newFrontendObject);
                //Debug.WriteLine("OBJECT TAG {0}", tag);
                newFrontendObject = ProcessTag(newFrontendObject, tag);
            }

            return(newFrontendObject);
        }
Esempio n. 18
0
        public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                                  ushort id,
                                  ushort length)
        {
            uint value = br.ReadUInt32();

            if (chunkBlock.ChunkType == FrontendChunkType.MessageResponses)
            {
                //Debug.WriteLine("MsgResponse {0:X8} has {1} responses", FrontendObject.MessageResponses[^1].Id, value);
            }
            else
            {
            }
        }
Esempio n. 19
0
        public override FrontendObject Read(FrontendPackage package, ObjectReaderState readerState, BinaryReader reader)
        {
            FrontendScriptTagStream tagStream = new FrontendScriptTagStream(reader, readerState.CurrentChunkBlock, readerState.CurrentChunkBlock.Size);
            FrontendScript          script    = new FrontendScript();

            while (tagStream.HasTag())
            {
                FrontendTag tag = tagStream.NextTag(FrontendObject, script);
                //Debug.WriteLine("SCRIPT TAG {0}", tag);
                ProcessTag(FrontendObject, script, tag);
            }

            //Debug.WriteLine("ADD SCRIPT: id={0:X8}", script.Id);
            FrontendObject.Scripts.Add(script);

            return(FrontendObject);
        }
Esempio n. 20
0
        public override void Read(FrontendPackage package, FrontendChunkBlock chunkBlock,
                                  FrontendChunkReader chunkReader, BinaryReader reader)
        {
            if (chunkBlock.Size % 8 != 0)
            {
                throw new ChunkReadingException("Invalid TypeList chunk");
            }

            TypeSizeList = new List <FETypeSize>(chunkBlock.Size >> 3);

            for (int i = 0; i < chunkBlock.Size >> 3; i++)
            {
                TypeSizeList.Add(new FETypeSize
                {
                    ID   = reader.ReadUInt32(),
                    Size = reader.ReadUInt32()
                });
            }
        }
Esempio n. 21
0
        public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package, ushort id,
                                  ushort length)
        {
            if (length % 4 != 0)
            {
                throw new ChunkReadingException("Length not divisible by 4");
            }

            FEMessageTargetList targetList = new FEMessageTargetList();

            targetList.MsgId = br.ReadUInt32();

            for (int i = 0; i < (length / 4) - 1; i++)
            {
                targetList.Targets.Add(br.ReadUInt32());
            }

            package.MessageTargetLists.Add(targetList);
        }
Esempio n. 22
0
        public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                                  ushort id,
                                  ushort length)
        {
            if (length % 0xC != 0)
            {
                throw new ChunkReadingException($"Tag length ({length}) should be divisible by 12.");
            }

            for (int i = 0; i < length / 0xC; i++)
            {
                FEEvent scriptEvent = new FEEvent
                {
                    EventId = br.ReadUInt32(),
                    Target  = br.ReadUInt32(),
                    Time    = br.ReadUInt32()
                };

                FrontendScript.Events.Add(scriptEvent);
            }
        }
Esempio n. 23
0
        public override void Read(FrontendPackage package, FrontendChunkBlock chunkBlock,
                                  FrontendChunkReader chunkReader, BinaryReader reader)
        {
            if (reader.ReadUInt32() != 0x20000)
            {
                throw new InvalidDataException("Invalid header constant");
            }

            if (reader.ReadUInt32() != 0)
            {
                throw new InvalidDataException("Expected null after constant");
            }

            NumResourceNames = reader.ReadInt32();

            reader.ReadUInt32();
            //if (reader.ReadUInt32() != 3)
            //{
            //    throw new InvalidDataException("Invalid header version");
            //}

            int nameLength = reader.ReadInt32();

            if (nameLength < 1)
            {
                throw new InvalidDataException("Invalid name length");
            }

            int filenameLength = reader.ReadInt32();

            if (filenameLength < 1)
            {
                throw new InvalidDataException("Invalid filename length");
            }

            Name     = new string(reader.ReadChars(nameLength)).Trim('\0');
            Filename = new string(reader.ReadChars(filenameLength)).Trim('\0');

            reader.AlignReader(4);
        }
Esempio n. 24
0
        private FrontendPackage ProcessTag(FrontendPackage frontendPackage, FrontendTag tag)
        {
            switch (tag)
            {
            case MessageResponseInfoTag messageResponseInfoTag:
                ProcessMessageResponseInfoTag(frontendPackage, messageResponseInfoTag);
                break;

            case ResponseIdTag responseIdTag:
                ProcessResponseIdTag(frontendPackage, responseIdTag);
                break;

            case ResponseParamTag responseParamTag:
                ProcessResponseParamTag(frontendPackage, responseParamTag);
                break;

            case ResponseTargetTag responseTargetTag:
                ProcessResponseTargetTag(frontendPackage, responseTargetTag);
                break;
            }

            return(frontendPackage);
        }
Esempio n. 25
0
        public override void Read(FrontendPackage package, FrontendChunkBlock chunkBlock, FrontendChunkReader chunkReader, BinaryReader reader)
        {
            if ((chunkBlock.Size - 4) % 0x18 != 0)
            {
                throw new ChunkReadingException("Malformed RsRq chunk");
            }

            int numRequests = reader.ReadInt32();

            ResourceRequests = new List <FEResourceRequest>(numRequests);

            for (int i = 0; i < numRequests; i++)
            {
                FEResourceRequest resourceRequest = new FEResourceRequest();
                resourceRequest.ID         = reader.ReadUInt32();
                resourceRequest.NameOffset = reader.ReadUInt32();
                resourceRequest.Type       = reader.ReadEnum <FEResourceType>();
                resourceRequest.Flags      = reader.ReadUInt32();
                resourceRequest.Handle     = reader.ReadUInt32();
                resourceRequest.UserParam  = reader.ReadUInt32();

                ResourceRequests.Add(resourceRequest);
            }
        }
Esempio n. 26
0
 private void ProcessResponseParamTag(FrontendPackage frontendPackage,
                                      ResponseParamTag responseParamTag)
 {
     frontendPackage.MessageResponses[^ 1].Responses[^ 1].Param = responseParamTag.Param;
Esempio n. 27
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package, ushort id,
                           ushort length)
 {
     Target = br.ReadUInt32();
     //Debug.WriteLine("ResponseTarget: {0:X8}", Target);
 }
Esempio n. 28
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                           ushort id,
                           ushort length)
 {
     Type = br.ReadEnum <FEObjType>();
 }
 public override FrontendObject Read(FrontendPackage package, ObjectReaderState readerState, BinaryReader reader)
 {
     return(readerState.ChunkReader.ReadFrontendObjectChunks(FrontendObject, readerState.CurrentChunkBlock.Size));
 }
Esempio n. 30
0
 public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package,
                           ushort id,
                           ushort length)
 {
     Hash = br.ReadUInt32();
 }