public MonsterNoteFile(FileReader reader)
        {
            Assert.IsNotNull(reader, nameof(reader));

            Records = new List <Record>();

            while (true)
            {
                var id     = ConvertId(reader.ReadBytes(4));
                var length = reader.ReadUInt32();

                if (length == 0xFFFFFFFF)
                {
                    break;
                }

                var filebytes = reader.ReadBytes((Int32)length);

                var monsterfile = OpenMonsterDefinitionFile(new FileReader(filebytes, reader.Encoding));

                Records.Add(new Record {
                    Id = id, MonsterDefinitionFile = monsterfile
                });
            }
        }
Exemple #2
0
        public MonsterDefinitionFile_Zero(FileReader reader)
        {
            Assert.IsNotNull(reader, nameof(reader));

            Arts          = new List <FileHeaders.MONSTER_CRAFTAIINFO>();
            Crafts        = new List <FileHeaders.MONSTER_CRAFTAIINFO>();
            SCrafts       = new List <FileHeaders.MONSTER_CRAFTAIINFO>();
            SupportCrafts = new List <FileHeaders.MONSTER_CRAFTAIINFO>();
            CraftInfoList = new List <CraftInfo>();

            var header              = Interop.ReadStructFromStream <FileHeaders.MONSTER_HEADER>(reader.Stream);
            var attack              = Interop.ReadStructFromStream <FileHeaders.MONSTER_CRAFTAIINFO>(reader.Stream);
            var count_arts          = reader.ReadByte();
            var arts                = Enumerable.Range(0, count_arts).Select(i => Interop.ReadStructFromStream <FileHeaders.MONSTER_CRAFTAIINFO>(reader.Stream)).ToList();
            var count_crafts        = reader.ReadByte();
            var crafts              = Enumerable.Range(0, count_crafts).Select(i => Interop.ReadStructFromStream <FileHeaders.MONSTER_CRAFTAIINFO>(reader.Stream)).ToList();
            var count_scrafts       = reader.ReadByte();
            var scrafts             = Enumerable.Range(0, count_scrafts).Select(i => Interop.ReadStructFromStream <FileHeaders.MONSTER_CRAFTAIINFO>(reader.Stream)).ToList();
            var count_supportcrafts = reader.ReadByte();
            var supportcrafts       = Enumerable.Range(0, count_supportcrafts).Select(i => Interop.ReadStructFromStream <FileHeaders.MONSTER_CRAFTAIINFO>(reader.Stream)).ToList();

            var count_craftinfo = reader.ReadByte();

            //reader.Position += 2;

            var craftinfo = Enumerable.Range(0, count_craftinfo).Select(i => new CraftInfo {
                Info = reader.ReadBytes(28), Name = reader.ReadString(), Description = reader.ReadString()
            }).ToList();

            var runaway     = Interop.ReadStructFromStream <FileHeaders.MONSTER_RUNAWAY>(reader.Stream);
            var reserve1    = reader.ReadByte();
            var name        = reader.ReadString();
            var description = reader.ReadString();

            Header = header;
            Attack = attack;
            Arts.AddRange(arts);
            Crafts.AddRange(crafts);
            SCrafts.AddRange(scrafts);
            SupportCrafts.AddRange(supportcrafts);
            CraftInfoList.AddRange(craftinfo);

            RunAway     = runaway;
            Reserve     = reserve1;
            Name        = name;
            Description = description;
        }