Exemplo n.º 1
0
        public override void Initialize(System.IO.BinaryReader reader, RecordHeader header)
        {
            while (reader.BaseStream.Position < header.DataEndPos)
            {
                var type = (SubRecordType)reader.ReadInt32();
                var size = reader.ReadInt32();

                switch (type)
                {
                case SubRecordType.Id:
                    name = reader.ReadString(size);
                    break;

                case SubRecordType.Data:
                    calculateFromAllLevelsLessThanPCsLevel = reader.ReadInt32();
                    break;

                case SubRecordType.NextName:
                    chanceNone = reader.ReadByte();
                    break;

                case SubRecordType.Index:
                    index = reader.ReadInt32();
                    break;

                case SubRecordType.CreatureName:
                    creatureNames.Add(reader.ReadString(size));
                    break;

                case SubRecordType.IntValue:
                    pcLevel.Add(reader.ReadInt16());
                    break;
                }
            }
        }
		/// <summary>
		/// see <see cref="SwfOp.Data.Tags.BaseTag">base class</see>
		/// </summary>
		public override void UpdateData(byte version) {			
			
			// update inner tags
			int len = 0;
			for (int i=0; i<tagList.Length; i++) {
				BaseTag tag = (BaseTag) tagList[i];
				tag.UpdateData(version);
				len += tag.Data.Length;				
			}				
			
			MemoryStream m = new MemoryStream();
			BinaryWriter w = new BinaryWriter(m);
						
			RecordHeader rh = new RecordHeader(TagCode, len + header.Length ,true);
			
			rh.WriteTo(w);
			w.Write(header);
			for (int i=0; i<tagList.Length; i++) {
				BaseTag tag = (BaseTag) tagList[i];
				w.Write(tag.Data);
			}
			
			// update data
			_data = m.ToArray();
		}			
Exemplo n.º 3
0
 public RecordHeader(RecordHeader copy)
 {
     Type           = copy.Type;
     AreaCode       = copy.AreaCode;
     SectionCode    = copy.SectionCode;
     SubsectionCode = copy.SubsectionCode;
 }
Exemplo n.º 4
0
 public StreamData(RecordHeader header)
 {
     foreach (var tag in header.Tags)
     {
         if (tag.Name == "PPS")
         {
             pps = tag.Data;
         }
         else if (tag.Name == "SPS")
         {
             sps = tag.Data;
         }
         if ((pps != null) && (sps != null))
         {
             break;
         }
     }
     if (pps == null)
     {
         pps = new byte[0];
     }
     if (sps == null)
     {
         sps = new byte[0];
     }
 }
        public override void Initialize(System.IO.BinaryReader reader, RecordHeader header)
        {
            while (reader.BaseStream.Position < header.DataEndPos)
            {
                var type = (SubRecordType)reader.ReadInt32();
                var size = reader.ReadInt32();

                switch (type)
                {
                case SubRecordType.Id:
                    id = reader.ReadString(size);
                    break;

                case SubRecordType.IntValue:
                    index = reader.ReadInt32();
                    break;

                case SubRecordType.Data:
                    texture = reader.ReadString(size);
                    break;
                }
            }

            records.Add(index, this);
        }
Exemplo n.º 6
0
        internal Tag ReadTag()
        {
            long         posBefore = SWFBinary.BaseStream.Position;
            RecordHeader rh        = new RecordHeader();

            rh.ReadData(SWFBinary);

            int offset = (int)(SWFBinary.BaseStream.Position - posBefore);

            SWFBinary.BaseStream.Position = posBefore;

            Tag resTag = null;

            switch (rh.TagCode)
            {
            case (int)TagCodes.DoABC: resTag = new DoABC(); break;

            case (int)TagCodes.End: resTag = new End(); break;

            default: resTag = new Tag(SWFBinary.ReadBytes(System.Convert.ToInt32(rh.TagLength + offset))); break;
            }

            resTag.ReadData(SWFVersion, SWFBinary);

            return(resTag);
        }
Exemplo n.º 7
0
        public override void Initialize(System.IO.BinaryReader reader, RecordHeader header)
        {
            while (reader.BaseStream.Position < header.DataEndPos)
            {
                var type = (SubRecordType)reader.ReadInt32();
                var size = reader.ReadInt32();

                switch (type)
                {
                case SubRecordType.Id:
                    name = reader.ReadString(size);
                    break;

                case SubRecordType.Model:
                    model = reader.ReadString(size);
                    break;

                case SubRecordType.Name:
                    fullName = reader.ReadString(size);
                    break;

                case SubRecordType.Script:
                    script = Script.Get(reader.ReadString(size));
                    break;

                case SubRecordType.ItemTexture:
                    CreateSprite(reader.ReadString(size));
                    break;

                case SubRecordType.ApparatusData:
                    data = new ApparatusRecordData(reader);
                    break;
                }
            }
        }
Exemplo n.º 8
0
        public override void Initialize(BinaryReader reader, RecordHeader header)
        {
            while (reader.BaseStream.Position < header.DataEndPos)
            {
                var type = (SubRecordType)reader.ReadInt32();
                var size = reader.ReadInt32();

                switch (type)
                {
                case SubRecordType.Id:
                    name = reader.ReadString(size);
                    break;

                case SubRecordType.Model:
                    Model = reader.ReadString(size);
                    break;

                case SubRecordType.Name:
                    race = Record.GetRecord <Race>(reader.ReadString(size));
                    break;

                case SubRecordType.BodyData:
                    data = new BodyPartData(reader);
                    break;
                }
            }

            data.SetBodyPart(race, this);
        }
Exemplo n.º 9
0
            private void ReadRecords(string filePath)
            {
                var reader     = new UnityBinaryReader(File.Open(filePath, FileMode.Open, FileAccess.Read));
                var recordList = new List <Record>();

                while (reader.BaseStream.Position < reader.BaseStream.Length)
                {
                    var recordHeader = new RecordHeader();
                    recordHeader.Deserialize(reader);

                    var    recordName = recordHeader.name;
                    Record record     = CreateUninitializedRecord(recordName);

                    // Read or skip the record.
                    if (record != null)
                    {
                        record.header = recordHeader;
                        record.DeserializeData(reader);

                        recordList.Add(record);
                    }
                    else
                    {
                        // Skip the record.
                        reader.BaseStream.Position += recordHeader.dataSize;

                        recordList.Add(null);
                    }
                }

                records = recordList.ToArray();
            }
Exemplo n.º 10
0
    public override void Initialize(BinaryReader reader, RecordHeader header)
    {
        while (reader.BaseStream.Position < header.DataEndPos)
        {
            var type = (SubRecordType)reader.ReadInt32();
            var size = reader.ReadInt32();

            switch (type)
            {
            case SubRecordType.Description:
                description = reader.ReadString(size);
                break;

            case SubRecordType.Id:
                name = reader.ReadString(size);
                break;

            case SubRecordType.Name:
                fullName = reader.ReadString(size);
                break;

            case SubRecordType.NpcSpell:
                spells.Add(reader.ReadString(size));
                break;

            case SubRecordType.Texture:
                texture = reader.ReadString(size);
                break;
            }
        }
    }
Exemplo n.º 11
0
        /*
         * /// <summary>
         * /// Read and parse JpegTableTag
         * /// </summary>
         * protected JpegTableTag ReadJpegTableTag() {
         *
         *      RecordHeader rh = ReadRecordHeader();
         *      int tl = rh.TagLength;
         *      byte[] data = br.ReadBytes(tl);
         *
         *      return new JpegTableTag(data);
         * }
         *
         * /// <summary>
         * /// Read and parse DefineBitsTag
         * /// </summary>
         * protected DefineBitsTag ReadDefineBitsTag() {
         *
         *      RecordHeader rh = ReadRecordHeader();
         *      int tl = rh.TagLength;
         *      ushort id = br.ReadUInt16();
         *      byte[] data = br.ReadBytes(tl-2);
         *      return new DefineBitsTag(id,data);
         * }
         *
         * /// <summary>
         * /// Read and parse DefineBitsJpeg2Tag
         * /// </summary>
         * protected DefineBitsJpeg2Tag ReadDefineBitsJpeg2Tag() {
         *
         *      RecordHeader rh = ReadRecordHeader();
         *      int tl = rh.TagLength;
         *      ushort id = br.ReadUInt16();
         *      byte[] data = br.ReadBytes(tl-2);
         *      return new DefineBitsJpeg2Tag(id,data);
         * }
         *
         * /// <summary>
         * /// Read and parse DefineBitsJpeg3Tag
         * /// </summary>
         * protected DefineBitsJpeg3Tag ReadDefineBitsJpeg3Tag() {
         *
         *      RecordHeader rh = ReadRecordHeader();
         *      int tl = rh.TagLength;
         *      ushort id = br.ReadUInt16();
         *      int imgLen = Convert.ToInt32(br.ReadUInt32());
         *      byte[] img = br.ReadBytes(imgLen);
         *      byte[] alpha = br.ReadBytes(tl-6-imgLen);
         *
         *      return new DefineBitsJpeg3Tag(id,img,alpha);
         * }
         */
        /// <summary>
        /// Read tag from swf input stream, non-bytecode tags are reads into base tags and wont get parsed
        /// </summary>
        virtual protected BaseTag ReadTag()
        {
            long         posBefore = br.BaseStream.Position;
            RecordHeader rh        = ReadRecordHeader();
            int          offset    = (int)(br.BaseStream.Position - posBefore);

            br.BaseStream.Position = posBefore;
            switch (rh.TagCode)
            {
            case (int)TagCodeEnum.DefineSprite: return(this.ReadDefineSpriteTag());

            case (int)TagCodeEnum.DoAction: return(this.ReadDoActionTag());

            case (int)TagCodeEnum.InitAction: return(this.ReadInitActionTag());

            case (int)TagCodeEnum.ScriptLimit: return(this.ReadScriptLimitTag());

            case (int)TagCodeEnum.PlaceObject2:

                PlaceObject2Tag p = this.ReadPlaceObject2Tag();
                if (p == null)
                {
                    br.BaseStream.Position = posBefore;
                    return(new BaseTag(br.ReadBytes(rh.TagLength + offset)));
                }
                else
                {
                    return(p);
                }

            default: return(new BaseTag(br.ReadBytes(rh.TagLength + offset)));
            }
        }
Exemplo n.º 12
0
        public override void Initialize(System.IO.BinaryReader reader, RecordHeader header)
        {
            while (reader.BaseStream.Position < header.DataEndPos)
            {
                var type = (SubRecordType)reader.ReadInt32();
                var size = reader.ReadInt32();

                switch (type)
                {
                case SubRecordType.Id:
                    name = reader.ReadString(size);
                    break;

                case SubRecordType.Name:
                    fullName = reader.ReadString(size);
                    break;

                case SubRecordType.ClassData:
                    classData = new ClassData(reader);
                    break;

                case SubRecordType.Description:
                    description = reader.ReadString(size);
                    break;
                }
            }
        }
Exemplo n.º 13
0
        public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
        {
            var buffer = new byte[16];
            var ipAddress = new IPAddress(ms.Read(buffer, 0, 16));
;
            return new AaaaRecord(ipAddress, "IPv6 Address: " + ipAddress);
        }
Exemplo n.º 14
0
    public static CellRecord GetInteriorCell(string name)
    {
        CellRecord record;

        if (interiorCells.TryGetValue(name, out record))
        {
            return(record);
        }

        RecordHeader header = interiorCellHeaders[name];

        // Save the current reader position so it can be reset later
        var prevoiusPosition = EsmFileReader.reader.BaseStream.Position;

        // Read the record
        EsmFileReader.reader.BaseStream.Position = header.DataOffset;
        var dataEndPos = header.DataOffset + header.DataSize;

        var cellRecord = CreateInstance <CellRecord>();

        cellRecord.Deserialize(EsmFileReader.reader, header);

        interiorCells.Add(name, cellRecord);

        // Reset the reader position
        EsmFileReader.reader.BaseStream.Position = prevoiusPosition;

        return(cellRecord);
    }
Exemplo n.º 15
0
    public override void Initialize(System.IO.BinaryReader reader, RecordHeader header)
    {
        while (reader.BaseStream.Position < header.DataEndPos)
        {
            var type = (SubRecordType)reader.ReadInt32();
            var size = reader.ReadInt32();

            switch (type)
            {
            case SubRecordType.Id:
                name = reader.ReadString(size);
                break;

            case SubRecordType.Name:
                fullName = reader.ReadString(size);
                break;

            case SubRecordType.WeatherData:
                weatherData = new WeatherData(reader, size);
                break;

            case SubRecordType.BodyName:
                sleepCreature = Record.GetRecord <LeveledCreatureRecord>(reader.ReadString(size));
                break;

            case SubRecordType.CreatureName:
                mapColor = reader.ReadColor32();
                break;

            case SubRecordType.SoundName:
                sounds.Add(new SoundName(reader, size));
                break;
            }
        }
    }
Exemplo n.º 16
0
    public static CellRecord GetExteriorCell(Vector2Int coordinates)
    {
        CellRecord record;

        if (exteriorCells.TryGetValue(coordinates, out record))
        {
            return(record);
        }

        RecordHeader header = exteriorCellHeaders[coordinates];

        // Save the current reader position so it can be reset later
        var prevoiusPosition = EsmFileReader.reader.BaseStream.Position;

        // Read the record
        EsmFileReader.reader.BaseStream.Position = header.DataOffset;
        var dataEndPos = header.DataOffset + header.DataSize;

        var cellRecord = CreateInstance <CellRecord>();

        cellRecord.Deserialize(EsmFileReader.reader, header);

        exteriorCells.Add(coordinates, cellRecord);

        // Reset the reader position
        EsmFileReader.reader.BaseStream.Position = prevoiusPosition;

        return(cellRecord);
    }
Exemplo n.º 17
0
        public override void Initialize(BinaryReader reader, RecordHeader header)
        {
            while (reader.BaseStream.Position < header.DataEndPos)
            {
                var type = (SubRecordType)reader.ReadInt32();
                var size = reader.ReadInt32();

                switch (type)
                {
                case SubRecordType.Id:
                    name = reader.ReadString(size);
                    break;

                case SubRecordType.Name:
                    fullName = reader.ReadString(size);
                    break;

                case SubRecordType.SpellData:
                    spellData = new SpellData(reader);
                    break;

                case SubRecordType.Enchantment:
                    effects.Add(new EnchantmentEffect(reader));
                    break;
                }
            }
        }
Exemplo n.º 18
0
        public override void Initialize(BinaryReader reader, RecordHeader header)
        {
            while (reader.BaseStream.Position < header.DataEndPos)
            {
                var type = (SubRecordType)reader.ReadInt32();
                var size = reader.ReadInt32();

                switch (type)
                {
                case SubRecordType.Id:
                    name = reader.ReadString(size);
                    break;

                case SubRecordType.Name:
                    fullName = reader.ReadString(size);
                    break;

                case SubRecordType.RaceData:
                    raceData = new RaceData(reader);
                    break;

                case SubRecordType.NpcSpell:
                    powers.Add(Record.GetRecord <SpellRecord>(reader.ReadString(size)));
                    break;

                case SubRecordType.Description:
                    description = reader.ReadString(size);
                    break;
                }
            }
        }
Exemplo n.º 19
0
        public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
        {
            var x25Address = _parser.ParseText(ref ms);
            var answer     = "X.25  X.121 Address: " + x25Address;

            return(new X25Record(x25Address, answer));
        }
Exemplo n.º 20
0
        public static InfoRecord Create(BinaryReader reader, RecordHeader header)
        {
            var instance = CreateInstance <InfoRecord>();

            instance.Initialize(reader, header);
            return(instance);
        }
Exemplo n.º 21
0
        /// <summary>
        /// Записать заголовок записи
        /// </summary>
        protected static void WriteRecordHeader(FileStream stream, RecordHeader header)
        {
            Contract.Requires(stream != null);

            byte[] array = header.Serialize();
            stream.Write(array, 0, array.Length);
        }
Exemplo n.º 22
0
        private RecordHeader[] LoadIndexfile(string path)
        {
            //read record headers from the index file
            RecordHeader[]         recordHeaders = null;
            System.IO.BinaryReader bReader       = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read));
            try
            {
                mainHeader = new ShapeFileMainHeader(bReader.ReadBytes(100));
                int totalRecords = (mainHeader.FileLength - 100) >> 3;
                recordHeaders = new RecordHeader[totalRecords];
                int numRecs = 0;
                //now read the record headers
                byte[] data = new byte[mainHeader.FileLength - 100];
                bReader.Read(data, 0, data.Length);
                while (numRecs < totalRecords)
                {
                    RecordHeader recHead = new RecordHeader(numRecs + 1);
                    recHead.readFromIndexFile(data, numRecs << 3);
                    recordHeaders[numRecs++] = recHead;
                }
                data = null;
            }
            finally
            {
                bReader.Close();
                bReader = null;
            }

            return(recordHeaders);
        }
Exemplo n.º 23
0
        private GgpkDirectory GetRootDirectory()
        {
            RecordHeader ggpkHeader;

            do
            {
                ggpkHeader = Stream.ReadRecordHeader();
            } while (ggpkHeader.Type != RecordType.Ggpk);

            var             ggpk      = new GgpkRecord(Stream, ggpkHeader.Length);
            DirectoryRecord?dirRecord = default;

            foreach (var offset in ggpk.RecordOffsets)
            {
                Stream.Position = offset;
                RecordHeader header = Stream.ReadRecordHeader();
                if (header.Type == RecordType.Directory)
                {
                    dirRecord = new DirectoryRecord(Stream, header.Length);
                    break;
                }
            }

            return(dirRecord switch
            {
                not null => GgpkDirectory.CreateRootDirectory(dirRecord, this),
                _ => throw ParseException.GgpkParseFailure,
            });
Exemplo n.º 24
0
    public override void Initialize(BinaryReader reader, RecordHeader header)
    {
        while (reader.BaseStream.Position < header.DataEndPos)
        {
            var type = (SubRecordType)reader.ReadInt32();
            var size = reader.ReadInt32();

            switch (type)
            {
            case SubRecordType.Id:
                name = reader.ReadString(size);
                break;

            case SubRecordType.StringValue:
                stringValue = reader.ReadString(size);
                break;

            case SubRecordType.IntValue:
                intValue = reader.ReadInt32();
                break;

            case SubRecordType.FloatValue:
                floatValue = reader.ReadSingle();
                break;
            }
        }
    }
Exemplo n.º 25
0
        public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
        {
            var x25Address = _parser.ParseText(ref ms);
            var answer = "X.25  X.121 Address: " + x25Address;

            return new X25Record(x25Address, answer);
        }
Exemplo n.º 26
0
    public override void Initialize(BinaryReader reader, RecordHeader header)
    {
        string   name     = null;
        CellData cellData = null;

        while (reader.BaseStream.Position < header.DataEndPos)
        {
            var type = (SubRecordType)reader.ReadInt32();
            var size = reader.ReadInt32();

            if (type == SubRecordType.Id)
            {
                name = reader.ReadString(size);
            }
            else if (type == SubRecordType.Data)
            {
                cellData = new CellData(reader);
                break;
            }
        }

        if (cellData.IsInterior)
        {
            interiorCellHeaders.Add(name, header);
        }
        else
        {
            exteriorCellHeaders.Add(cellData.Coordinates, header);
        }

        reader.BaseStream.Position = header.DataEndPos + 4;
    }
Exemplo n.º 27
0
        public override void Initialize(BinaryReader reader, RecordHeader header)
        {
            while (reader.BaseStream.Position < header.DataEndPos)
            {
                var type = (SubRecordType)reader.ReadInt32();
                var size = reader.ReadInt32();

                switch (type)
                {
                case SubRecordType.ScriptHeader:
                    scriptHeader = new ScriptHeader(reader);
                    name         = scriptHeader.Name;
                    break;

                case SubRecordType.ScriptVariable:
                    CreateScriptVariables(reader.ReadBytes(size));
                    break;

                case SubRecordType.ScriptData:
                    CreateScriptData(reader.ReadBytes(size));
                    break;

                case SubRecordType.ScriptText:
                    scriptText = reader.ReadString(size);
                    break;
                }
            }
        }
Exemplo n.º 28
0
        /// <summary>
        /// see <see cref="SwfOp.Data.Tags.BaseTag">base class</see>
        /// </summary>
        public override void UpdateData(byte version)
        {
            MemoryStream m = new MemoryStream();
            BinaryWriter w = new BinaryWriter(m);

            int size = _ids.Count * 2;

            foreach (string name in _names)
            {
                size += name.Length + 1;
            }

            RecordHeader rh = new RecordHeader(TagCode, 2 + size, true);

            rh.WriteTo(w);
            w.Write((ushort)_names.Count);

            for (int i = 0; i < _names.Count; i++)
            {
                w.Write((ushort)_ids[i]);
                w.Write((string)_names[i]);
                w.Write((byte)0);
            }

            // write to data array
            _data = m.ToArray();
        }
Exemplo n.º 29
0
    public override void Initialize(System.IO.BinaryReader reader, RecordHeader header)
    {
        while (reader.BaseStream.Position < header.DataEndPos)
        {
            var subRecordType = (SubRecordType)reader.ReadInt32();
            var size          = reader.ReadInt32();

            switch (subRecordType)
            {
            case SubRecordType.Id:
                name = reader.ReadString(size);
                break;

            case SubRecordType.Data:
                type = (SoundGeneratorType)reader.ReadInt32();
                break;

            case SubRecordType.SoundName:
                sound = Record.GetRecord <SoundRecord>(reader.ReadString(size));
                break;

            case SubRecordType.CreatureName:
                creature = Record.GetRecord <CreatureRecord>(reader.ReadString(size));
                break;

            default:
                throw new NotImplementedException(subRecordType.ToString());
            }
        }
    }
Exemplo n.º 30
0
        public GISLayer ReadShapefile(string shpfilename)
        {
            FileStream      fsr       = new FileStream(shpfilename, FileMode.Open); //打开shp文件
            BinaryReader    br        = new BinaryReader(fsr);                      //获取文件流后用二进制读取工具
            ShapefileHeader sfh       = ReadFileHeader(br);                         //调用之前的函数 获取头文件
            SHAPETYPE       ShapeType = (SHAPETYPE)Enum.Parse(                      //类型整数变对应的枚举值
                typeof(SHAPETYPE), sfh.ShapeType.ToString());
            GISExtent extent = new GISExtent(sfh.Xmax, sfh.Xmin, sfh.Ymax, sfh.Ymin);
            GISLayer  layer  = new GISLayer(shpfilename, ShapeType, extent); //gislayer的构造参数分别是名字 图层类型 范围

            while (br.PeekChar() != -1)
            {
                RecordHeader rh            = ReadRecordHeader(br);
                int          RecordLength  = FromBigToLittle(rh.RecordLength) * 2 - 4;
                byte[]       RecordContent = br.ReadBytes(RecordLength);//将记录内容读入字节数组
                if (ShapeType == SHAPETYPE.point)
                {
                    GISPoint   onepoint   = ReadPoint(RecordContent);
                    GISFeature onefeature = new GISFeature(onepoint, new GISAttribute());
                    layer.AddFeature(onefeature);
                }
            }

            br.Close();
            fsr.Close();   //归还文件权限于操作系统
            return(layer); //最后返回一个图层文件
        }
Exemplo n.º 31
0
        public void SaveFile(string FileName)
        {
            var bw = new BinaryWriter(File.Create(FileName));

            bw.Write(btsnoop_magic, 0, btsnoop_magic.Length);
            var fh = new FileHeader()
            {
                datalink = (UInt32)datalink, Version = Version
            };

            bw.WriteStruct <FileHeader>(fh, new List <int>()
            {
                4, 4
            });

            foreach (var item in Records)
            {
                var record = new RecordHeader()
                {
                    cum_drops = item.cum_drops,
                    flags     = item.flags,
                    incl_len  = (UInt32)item.Data.Length,
                    orig_len  = item.orig_len,
                    ts_usec   = (Int64)((item.Timestamp - new DateTime(1970, 1, 1)).TotalMilliseconds * 1000 + SymbianTimeBaseDiffToUnixTimeBase)
                };
                bw.WriteStruct <RecordHeader>(record, new List <int>()
                {
                    4, 4, 4, 4, 8
                });
                bw.Write(item.Data, 0, item.Data.Length);
            }
        }
Exemplo n.º 32
0
    public override void Initialize(System.IO.BinaryReader reader, RecordHeader header)
    {
        while (reader.BaseStream.Position < header.DataEndPos)
        {
            var type = (SubRecordType)reader.ReadInt32();
            var size = reader.ReadInt32();

            switch (type)
            {
            case SubRecordType.Id:
                name = reader.ReadString(size);
                break;

            case SubRecordType.Model:
                model = reader.ReadString(size);
                break;

            case SubRecordType.Name:
                fullName = reader.ReadString(size);
                break;

            case SubRecordType.Script:
                script = Script.Get(reader.ReadString(size));
                break;

            case SubRecordType.SoundName:
                openSound = Record.GetRecord <SoundRecord>(reader.ReadString(size));
                break;

            case SubRecordType.Anam:
                closeSound = Record.GetRecord <SoundRecord>(reader.ReadString(size));
                break;
            }
        }
    }
Exemplo n.º 33
0
 public Record ParseRecord(RecordHeader headerParser, ref MemoryStream ms)
 {
     var format = (AtmFormat)ms.ReadByte();
     var addressBuffer = new byte[headerParser.DataLength - 1];
     ms.Read(addressBuffer, 0, headerParser.DataLength - 1);
     var address = Encoding.ASCII.GetString(addressBuffer);
     return new AtmaRecord(address, format, "Address: " + address + ", Format: " + format);
 }
Exemplo n.º 34
0
        public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
        {
            var address = _parser.ParseText(ref ms);
            var subAddress = _parser.ParseText(ref ms);
            var answer = "ISDN Address: " + address + ", SubAddress: " + subAddress;

            return new IsdnRecord(address, subAddress, answer);
        }
Exemplo n.º 35
0
        public Record ParseRecord(RecordHeader header, ref MemoryStream ms) 
		{
            var name = _parser.ParseName(ref ms);
            var textLocation = _parser.ParseName(ref ms);
            var answer = name + ", " + textLocation;
            
            return new RpRecord(name, textLocation, answer);
		}
Exemplo n.º 36
0
        public Record ParseRecord(RecordHeader headerParser, ref MemoryStream ms)
        {
            var cpuType = _recordNameParser.ParseText(ref ms);
            var operatingSys = _recordNameParser.ParseText(ref ms);
            var answer = "CPU: " + cpuType + ", OS: " + operatingSys;

            return new HInfoRecord(cpuType, operatingSys, answer);
        }
Exemplo n.º 37
0
        public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
        {
            var responsibleMb = _parser.ParseName(ref ms);
            var errorMb = _parser.ParseName(ref ms);
            var answer = "Responsible MailBox: " + responsibleMb + ", Error MailBox: " + errorMb;

            return new MInfoRecord(responsibleMb, errorMb, answer);
        }
Exemplo n.º 38
0
        public Record ParseRecord(RecordHeader header,ref MemoryStream ms)
        {
            var preferenceBuffer = new byte[2];
            ms.Read(preferenceBuffer, 0, 2);
            //_preference = (ushort)Tools.ByteToUInt(preference);
            var preference = (ushort)IPAddress.NetworkToHostOrder((short)BitConverter.ToUInt16(preferenceBuffer, 0));
            var intermediateHost = _parser.ParseName(ref ms);
            var answer = "Preference: " + preference + ", Intermediate Host: " + intermediateHost;

            return new RtRecord(preference, intermediateHost, answer);
        }
Exemplo n.º 39
0
        public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
        {
            var typeBytes = new byte[2];
            ms.Read(typeBytes, 0, 2);
            // _port = (ushort)Tools.ByteToUInt(type);
            var port = (ushort)IPAddress.NetworkToHostOrder((short)BitConverter.ToUInt16(typeBytes, 0));
            var name = _parser.ParseName(ref ms);
            //_type = (short)Tools.ByteToUInt(type);
            var type = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(typeBytes, 0));
            var answer = "Name: " + name + ", Port: " + port + ", Type: " + type;

            return new AfsdbRecord(port, name, type, answer);
        }
Exemplo n.º 40
0
 /// <summary>
 /// see <see cref="SwfOp.Data.Tags.BaseTag">base class</see>
 /// </summary>
 public override void UpdateData(byte version) {
         
     MemoryStream m = new MemoryStream();
     BinaryWriter w = new BinaryWriter(m);
     
     RecordHeader rh = new RecordHeader(TagCode, jpegData.Length ,true);
     
     rh.WriteTo(w);
     w.Write(jpegData);
     
     // write to data array
     _data = m.ToArray();            
 }
Exemplo n.º 41
0
 protected override void LoadChildrenBase()
 {
     Module module = Module;
     lock (module) {
         BinaryReader reader = module.Reader;
         reader.BaseStream.Position = ContentOffset;
         while (reader.BaseStream.Position < ContentEnd) {
             var recordHeader = new RecordHeader(reader);
             var recordReader = new RecordReader(recordHeader, reader);
             var record = Record.Read(module, recordReader);
             AddChild(record);
         }
     }
 }
Exemplo n.º 42
0
        /// <summary>
        /// see <see cref="SwfOp.Data.Tags.BaseTag">base class</see>
        /// </summary>
        public override void UpdateData(byte version)
        {
            MemoryStream m = new MemoryStream();
            BinaryWriter w = new BinaryWriter(m);

            RecordHeader rh = new RecordHeader(TagCode, 6 + mediaData.Length + alphaData.Length, true);

            rh.WriteTo(w);
            w.Write(characterId);
            w.Write(Convert.ToUInt32(mediaData.Length));
            w.Write(mediaData);
            w.Write(alphaData);

            // write to data array
            _data = m.ToArray();
        }
Exemplo n.º 43
0
        public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
        {
            // Bit map is the data length minus the IpAddress (4 bytes) and the Protocol (1 byte), 5 bytes total.
            var bitMapLen = header.DataLength - 4 - 1;
            var ipAddressBuffer = new byte[4];
            var bitMapBuffer = new byte[bitMapLen];

            ms.Read(ipAddressBuffer, 0, 4);
            // _ipAddress = new IPAddress(Tools.ToUInt32(ipAddr, 0));
            var ipAddress = new IPAddress((uint)IPAddress.NetworkToHostOrder(BitConverter.ToUInt32(ipAddressBuffer, 0)));
            var protocolType = (ProtocolType)ms.ReadByte();
            ms.Read(bitMapBuffer, 0, bitMapBuffer.Length);
            var ports = GetKnownServices(bitMapBuffer);
            var answer = protocolType + ": " + GetServByPort(ports, protocolType);

            return new WksRecord(protocolType, ipAddress, ports, answer);
        }
Exemplo n.º 44
0
Arquivo: Tag.cs Projeto: wl3780/as3c
        public void ReadExternal(BinaryReader input)
        {
            _header = new RecordHeader();
            _header.ReadExternal(input);

            switch ( _header.Type )
            {
                case 0x52:
                    _body = new DoABC(this);
                    _parent.AddAbc((DoABC)_body);
                    break;

                case 0x45://FileAttributes
                default:
                    _body = new DefaultBody(this);
                    break;
            }

            _body.ReadExternal(input);
        }
Exemplo n.º 45
0
        public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
        {
            var priorityBuffer = new byte[2];
            ms.Read(priorityBuffer, 0, 2);
            var priority = (ushort)IPAddress.NetworkToHostOrder((short)BitConverter.ToUInt16(priorityBuffer, 0));

            var weightBuffer = new byte[2];
            ms.Read(weightBuffer, 0, 2);
            var weight = (ushort)IPAddress.NetworkToHostOrder((short)BitConverter.ToUInt16(weightBuffer, 0));

            var portBuffer = new byte[2];
            ms.Read(portBuffer, 0, 2);
            var port = (ushort)IPAddress.NetworkToHostOrder((short)BitConverter.ToUInt16(portBuffer, 0));

            var hostName = _parser.ParseName(ref ms);

            var answer = "Service Location: \r\nPriority: " + priority + "\r\nWeight: " +
                weight + "\r\nPort: " + port + "\r\nHostName: " + hostName + "\r\n";

            return new SrvRecord(priority, weight, port, hostName, answer);
        }
Exemplo n.º 46
0
        public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
        {
            // Type not implemented so we read it into a buffer and print out the data.
            var sb = new StringBuilder(header.DataLength);
            var b = new byte[1];
            // Loop over data, if char is easily converted to ASCII, convert it.
            // Otherwise print a '.'
            for (var i = 0; i < header.DataLength; i++)
            {
                ms.Read(b, 0, 1);
                if ((b[0] > 0x20) && (b[0] < 0x7e))
                {
                    sb.Append(Encoding.ASCII.GetString(b));
                }
                else
                {
                    sb.Append('.');
                }
            }

            return new UnknownRecord(sb.ToString());
        }
Exemplo n.º 47
0
        public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
        {
            var sb = new StringBuilder();
            // Parse Name
            var primaryNameServer = _parser.ParseName(ref ms);
            sb.Append("Primary NameServer: ");
            sb.Append(primaryNameServer);
            sb.Append("\r\n");

            // Parse Responsible Persons Mailbox (Parse Name)
            var responsiblePerson = _parser.ParseName(ref ms);
            sb.Append("Responsible Person: ");
            sb.Append(responsiblePerson);
            sb.Append("\r\n");

            var serialBuffer = new byte[4];
            var refreshIntervalBuffer = new byte[4];
            var retryIntervalBuffer = new byte[4];
            var expirationLimitBuffer = new byte[4];
// ReSharper disable once InconsistentNaming
            var minTTLBuffer = new byte[4];

            // Parse Serial (4 bytes)
            ms.Read(serialBuffer, 0, 4);
            //_serial = Tools.ByteToUInt(serial);
            var serial = (uint)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(serialBuffer, 0));
            sb.Append("Serial: ");
            sb.Append(serial);
            sb.Append("\r\n");

            // Parse Refresh Interval (4 bytes)
            ms.Read(refreshIntervalBuffer, 0, 4);
            // _refreshInterval = Tools.ByteToUInt(refreshInterval);
            var refreshInterval = (uint)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(refreshIntervalBuffer, 0));
            sb.Append("Refresh Interval: ");
            sb.Append(refreshInterval);
            sb.Append("\r\n");

            // Parse Retry Interval (4 bytes)
            ms.Read(retryIntervalBuffer, 0, 4);
            //_retryInterval = Tools.ByteToUInt(retryInterval);
            var retryInterval = (uint)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(retryIntervalBuffer, 0));
            sb.Append("Retry Interval: ");
            sb.Append(retryInterval);
            sb.Append("\r\n");

            // Parse Expiration limit (4 bytes)
            ms.Read(expirationLimitBuffer, 0, 4);
            // _expirationLimit = Tools.ByteToUInt(expirationLimit);
            var expirationLimit = (uint)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(expirationLimitBuffer, 0));
            sb.Append("Expire: ");
            sb.Append(expirationLimit);
            sb.Append("\r\n");

            // Parse Min TTL (4 bytes)
            ms.Read(minTTLBuffer, 0, 4);
            // _minTTL = Tools.ByteToUInt(minTTL);
            var minimumTimeToLive = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(minTTLBuffer, 0));
            sb.Append("TTL: ");
            sb.Append(minimumTimeToLive);
            sb.Append("\r\n");

            return new SoaRecord(
                primaryNameServer, 
                responsiblePerson, 
                serial, 
                refreshInterval, 
                retryInterval, 
                expirationLimit, 
                minimumTimeToLive, 
                sb.ToString());
        }
Exemplo n.º 48
0
		public Record ParseRecord(RecordHeader header, ref MemoryStream ms) 
		{
			var latitudeBuffer = new byte[4];
            var longitudeBuffer = new byte[4];
            var altitudeBuffer = new byte[4];

			var version = (byte)ms.ReadByte();
			var size = (byte)ms.ReadByte();
			var horPrecision = (byte)ms.ReadByte();
			var vertPrecision = (byte)ms.ReadByte();

            ms.Read(latitudeBuffer, 0, latitudeBuffer.Length);
			// _latitude = Tools.ByteToUInt(latitude);
            var latitude = (uint)IPAddress.NetworkToHostOrder((int)BitConverter.ToUInt32(latitudeBuffer, 0));

            ms.Read(longitudeBuffer, 0, longitudeBuffer.Length);
			var longitude = (uint)IPAddress.NetworkToHostOrder((int)BitConverter.ToUInt32(longitudeBuffer, 0));


            ms.Read(altitudeBuffer, 0, altitudeBuffer.Length);
			// _altitude = Tools.ByteToUInt(altitude);
            var altitude = (uint)IPAddress.NetworkToHostOrder((int)BitConverter.ToUInt32(altitudeBuffer, 0));
			
			var sb = new StringBuilder();
            sb.Append("Version: ");
            sb.Append(version);
            sb.Append("\r\n");

			sb.Append("Size: ");
            sb.Append(CalcSize(size));
            sb.Append(" m\r\n");

			sb.Append("Horizontal Precision: ");
            sb.Append(CalcSize(horPrecision));
            sb.Append(" m\r\n");

			sb.Append("Vertical Precision: ");
            sb.Append(CalcSize(vertPrecision));
            sb.Append(" m\r\n");
			
            sb.Append("Latitude: ");
            sb.Append(CalcLoc(latitude, _latDirection));
            sb.Append("\r\n");
			
            sb.Append("Longitude: ");
            sb.Append(CalcLoc(longitude, _longDirection));
            sb.Append("\r\n");
			
            sb.Append("Altitude: ");
            sb.Append((altitude - 10000000) / 100.0);
            sb.Append(" m\r\n");

            return new LocRecord(
                version,
                size,
                horPrecision,
                vertPrecision,
                latitude,
                longitude,
                altitude,
                sb.ToString());
		}
 /// <summary>
 /// see <see cref="SwfOp.Data.Tags.BaseTag">base class</see>
 /// </summary>
 public override void UpdateData(byte version) {
     
     MemoryStream m = new MemoryStream();
     BinaryWriter w = new BinaryWriter(m);
     
     RecordHeader rh = new RecordHeader(TagCode,4,false);
     
     rh.WriteTo(w);
     w.Write(_recursion);
     w.Write(_timeout);
     
     // write to data array
     _data = m.ToArray();
 }
Exemplo n.º 50
0
 public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
 {
     return new CNameRecord("Host: " + _parser.ParseName(ref ms));
 }
Exemplo n.º 51
0
 public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
 {
     var text = _parser.ParseText(ref ms);
     return new TxtRecord(text, "text: " + text);
 }
Exemplo n.º 52
0
            public Data(BinaryReader reader, UInt32 dataSize)
            {
                Waypoints = new List<FITWaypoint>();
                Laps = new List<FITLap>();
                var bytes = reader.ReadBytes((int)dataSize);
                using (var stream = new MemoryStream(bytes))
                {
                  using (var dataReader = new BinaryReader(stream))
                  {
                var recordHeader = new RecordHeader(dataReader);

                if (!recordHeader.IsDefinitionMessage)
                {
                  throw new Exception("First record is not a definition message.");
                }
                var def = new DefinitionMessage(dataReader);
                if (def.GlobalMessageNumber != (ushort) MesgNum.file_id)
                  throw new Exception("First record's global message number is not file_id.");
                recordHeader = new RecordHeader(dataReader);
                if (recordHeader.IsDefinitionMessage)
                  throw new Exception("Encountered a definition message, but expected a data message.");
                var d = new DataMessage(dataReader, def);
                var fileType = d.GetByte(0);
                if (fileType != 4) throw new Exception("Not a FIT activity file.");

                var messageTypeTranslator = new Dictionary<byte, DefinitionMessage>();
                UInt32 lastTimestamp = 0;

                while (dataReader.BaseStream.Position < dataReader.BaseStream.Length)
                {
                  recordHeader = new RecordHeader(dataReader);
                  if (recordHeader.IsDefinitionMessage)
                  {
                def = new DefinitionMessage(dataReader);
                FITUtil.AddOrReplace(messageTypeTranslator, recordHeader.LocalMessageType, def);
                  }
                  else
                  {
                var currentDef = messageTypeTranslator[recordHeader.LocalMessageType];
                d = new DataMessage(dataReader, currentDef);

                var timestamp = d.GetUInt32(253);
                if (timestamp == null) timestamp = FITUtil.AddCompressedTimestamp(lastTimestamp, recordHeader.TimeOffset);
                var time = FITUtil.ToDateTime(timestamp.Value);

                var gmn = currentDef.GlobalMessageNumber;
                if (gmn == (byte) MesgNum.record)
                {
                  var lat = d.GetInt32(0);
                  var lng = d.GetInt32(1);
                  var alt = d.GetUInt16(2);
                  var hr = d.GetByte(3);
                  var cadence = d.GetByte(4);
                  var power = d.GetUInt16(7);
                  if (lng != null && lng != invalidInt32 && lat != null && lat != invalidInt32)
                  {
                    Waypoints.Add(new FITWaypoint()
                                    {
                                      Time = time,
                                      Latitude = positionFactor * lat.Value,
                                      Longitude = positionFactor * lng.Value,
                                      Altitude = alt == null || alt == invalidUInt16 ? (double?)null : (double)alt.Value / 5 - 500,
                                      HeartRate = hr == null || hr == invalidByte ? null : hr,
                                      Cadence = cadence == null || cadence == invalidByte ? null : cadence,
                                      Power = power == null || power == invalidUInt16 ? null : power
                                    });
                  }
                }
                else if (gmn == (byte)MesgNum.lap)
                {
                  Laps.Add(new FITLap() { Time = time });
                }
                else if (gmn == 22)
                {

                }
                lastTimestamp = timestamp.Value;
                  }
                }
                  }
                }
            }
Exemplo n.º 53
0
        /// <summary>
        /// see <see cref="SwfOp.Data.Tags.BaseTag">base class</see>
        /// </summary>
        public override void UpdateData(byte version)
        {
            MemoryStream m = new MemoryStream();
                BinaryWriter w = new BinaryWriter(m);

                w.Write(header);

                // ClipActionRecords
                foreach (ClipActionRec clpA in clipActions) {
                    w.Write(clpA.GetData(version));
                }
                // ClipActionRecords end
                if (version>=6) {
                    w.Write((int)0);
                } else {
                    w.Write((short)0);
                }

                // data to byte array
                byte[] d = m.ToArray();

                // writer
                m = new MemoryStream();
                w = new BinaryWriter(m);

                // add header
                RecordHeader rh = new RecordHeader(TagCode,d.Length,true);
                rh.WriteTo( w );
                w.Write (d );

                // write to data array
                _data = m.ToArray();
        }
Exemplo n.º 54
0
 public Record ParseRecord(RecordHeader header, ref MemoryStream ms)
 {
     return new PtrRecord(String.Empty);
 }