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); }
public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package, ushort id, ushort length) { Hash = br.ReadUInt32(); //Debug.WriteLine("LabelHash={0:X8}", Hash); }
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); }
public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package, ushort id, ushort length) { uint val = br.ReadUInt32(); //Debug.WriteLine(val); }
public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package, ushort id, ushort length) { Formatting = br.ReadEnum <FEStringFormatting>(); //Debug.WriteLine(Formatting.ToString()); }
public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package, ushort id, ushort length) { Leading = br.ReadInt32(); //Debug.WriteLine(Leading); }
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); }
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; } } } }
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); }
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); //} }
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(); }
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(); }
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(); }
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); } }
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); }
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; } } }
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); }
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 { } }
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); }
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() }); } }
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); }
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); } }
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); }
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); }
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); } }
private void ProcessResponseParamTag(FrontendPackage frontendPackage, ResponseParamTag responseParamTag) { frontendPackage.MessageResponses[^ 1].Responses[^ 1].Param = responseParamTag.Param;
public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package, ushort id, ushort length) { Target = br.ReadUInt32(); //Debug.WriteLine("ResponseTarget: {0:X8}", Target); }
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)); }
public override void Read(BinaryReader br, FrontendChunkBlock chunkBlock, FrontendPackage package, ushort id, ushort length) { Hash = br.ReadUInt32(); }