Esempio n. 1
0
            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);
            }
Esempio n. 2
0
            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);
            }