public Scene_MQJson(BinaryReader br, int id, int start, int end) { File = new File_MQJson() { Name = $"Scene {id}", Start = start.ToString("X8"), End = end.ToString("X8"), }; Id = id; SceneWord cmd = new SceneWord(); do { br.Read(cmd, 0, 8); var seekback = br.BaseStream.Position; HeaderCommands code = (HeaderCommands)cmd.Code; if (code == HeaderCommands.PathList) { SegmentAddress offset = cmd.Data2; br.BaseStream.Position = offset.Offset; InitPaths(br); } else if (code == HeaderCommands.TransitionActorList) { SegmentAddress actorOff = cmd.Data2; br.BaseStream.Position = actorOff.Offset; for (int i = 0; i < cmd.Data1; i++) { TActors.Add(Actor_MQJson.Read(br)); } } if (code == HeaderCommands.RoomList) { RoomsCount = (int)cmd.Data1; RoomsAddress = cmd.Data2; } br.BaseStream.Position = seekback; }while ((HeaderCommands)cmd.Code != HeaderCommands.End); }
public Room_MQJson(BinaryReader br, int sceneId, int roomId, int start, int end) { File = new File_MQJson() { Name = $"Scene {sceneId}, Room {roomId}", Start = start.ToString("X8"), End = end.ToString("X8"), }; Id = roomId; SceneWord cmd = new SceneWord(); do { br.Read(cmd, 0, 8); var seekback = br.BaseStream.Position; if ((HeaderCommands)cmd.Code == HeaderCommands.ObjectList) { SegmentAddress offset = cmd.Data2; br.BaseStream.Position = offset.Offset; for (int i = 0; i < cmd.Data1; i++) { Objects.Add(br.ReadBigInt16().ToString("X4")); } } else if ((HeaderCommands)cmd.Code == HeaderCommands.ActorList) { SegmentAddress actorOff = cmd.Data2; br.BaseStream.Position = actorOff.Offset; for (int i = 0; i < cmd.Data1; i++) { Actors.Add(Actor_MQJson.Read(br)); } } br.BaseStream.Position = seekback; }while ((HeaderCommands)cmd.Code != HeaderCommands.End); }