Exemple #1
0
        public uint ShouldReadAByte(int length, byte[] data)
        {
            _stream = new MemoryStream(data);
            _br = new BitReader32(_stream);

            uint actual;
            _br.Peek(length, out actual);
            return actual;
        }
 public void Read(IBitReader reader, int version)
 {
     this._Health    = reader.ReadFloat32();
     this._Unknown2  = reader.ReadBoolean();
     this._Unknown3  = reader.ReadBoolean();
     this._Shields   = reader.ReadFloat32();
     this._Unknown5  = reader.ReadUInt32();
     this._Unknown6  = reader.ReadUInt32();
     this._Unknown7  = reader.ReadUInt32();
     this._Unknown8  = reader.ReadFloat32();
     this._Unknown9  = reader.ReadUInt32();
     this._Unknown10 = reader.ReadUInt32();
     this._Unknown11 = reader.ReadUInt32();
     this._Unknown12 = reader.ReadFloat32();
 }
        public static void ReadStringList(this IBitReader reader, List <string> list)
        {
            if (list == null)
            {
                throw new ArgumentNullException("list");
            }

            list.Clear();
            var count = reader.ReadUInt16();

            for (int i = 0; i < count; i++)
            {
                list.Add(reader.ReadString());
            }
        }
        public void TestThatWhenNumberOfBitsIs9AndArrayHas65536ElementsFixedSaveModeCanReadWhatItWrote()
        {
            var longArray          = SaveModesTestsCommon.GetRandom65536Array();
            var expectedBitsToRead = GetExpectedBitsToRead(longArray);

            using (bitWriter = SaveModesTestsCommon.GetBitWriter(outputFilePath))
                fixedSaveMode.WriteValues(longArray, bitWriter);

            int[] returnedArray;
            using (bitReader = SaveModesTestsCommon.GetBitReader(outputFilePath))
                returnedArray = fixedSaveMode.ReadValues(expectedBitsToRead, bitReader);


            CollectionAssert.AreEqual(longArray, returnedArray);
        }
        internal void Read(IBitReader reader)
        {
            reader.PushFrameLength(24);
            this._Unknown1 = reader.ReadUInt32();
            this._Unknown2.Clear();
            var unknown2Count = reader.ReadUInt16();

            for (int i = 0; i < unknown2Count; i++)
            {
                var unknown2 = new DestructionUnknown5();
                unknown2.Read(reader);
                this._Unknown2.Add(unknown2);
            }
            reader.PopFrameLength();
        }
Exemple #6
0
        internal void Read(IBitReader reader)
        {
            reader.PushFrameLength(24);
            reader.ReadBytes(this._Unknown1);
            this._Unknown2.Clear();
            var unknown2Count = reader.ReadUInt16();

            for (int i = 0; i < unknown2Count; i++)
            {
                var unknown2 = new WorldMapUnknown1();
                unknown2.Read(reader);
                this._Unknown2.Add(unknown2);
            }
            reader.PopFrameLength();
        }
 internal override void Read3(IBitReader reader, ushort arg1)
 {
     base.Read3(reader, arg1);
     reader.PushFrameLength(24);
     if (arg1 >= 2)
     {
         this._NextItemId = reader.ReadUInt32();
     }
     this._HasActiveSquad = arg1 < 3 || reader.ReadBoolean();
     if (this._HasActiveSquad == true)
     {
         this._ActiveSquad.Read(reader);
     }
     reader.PopFrameLength();
 }
Exemple #8
0
 internal void Read(IBitReader reader)
 {
     this._Unknown1 = reader.ReadUInt32();
     this._Unknown2.Clear();
     if (this._Unknown1 >= 1)
     {
         var unknown2Count = reader.ReadUInt16();
         for (int i = 0; i < unknown2Count; i++)
         {
             var unknown2 = new CodexListUnknown1();
             unknown2.Read(reader);
             this._Unknown2.Add(unknown2);
         }
     }
 }
Exemple #9
0
    public static ClassSkills Read(IBitReader reader, int playerClass)
    {
        var classSkills = new ClassSkills
        {
            Header = reader.ReadUInt16()
        };
        uint offset = SKILL_OFFSETS[playerClass];

        for (uint i = 0; i < SKILL_COUNT; i++)
        {
            var skill = ClassSkill.Read(offset + i, reader.ReadByte());
            classSkills.Skills.Add(skill);
        }
        return(classSkills);
    }
Exemple #10
0
 public static int ReadBitSequence(IBitReader reader, out long value, int length)
 {
     value = 0L;
     for (int index = 0; index < length; ++index)
     {
         bool bit;
         if (reader.ReadBit(out bit) != 1)
         {
             return(index);
         }
         long num = (bit ? 1L : 0L) << index;
         value |= num;
     }
     return(length);
 }
Exemple #11
0
        public Command[] Decode(IBitReader reader)
        {
            byte num1 = reader != null?reader.ReadByte() : throw new ArgumentNullException(nameof(reader));

            Command[] commandArray = new Command[1]
            {
                CommandEncoding.Instance.Decode(reader)
            };
            byte num2 = reader.ReadByte();

            if (num1 != num2)
            {
                throw new ApplicationException("Incorrect number of commands");
            }
            return(commandArray);
        }
Exemple #12
0
        internal override void Read4(IBitReader reader)
        {
            base.Read4(reader);
            var unknown1Count = reader.ReadUInt16();

            this._Unknown.Clear();
            for (int i = 0; i < unknown1Count; i++)
            {
                reader.PushFrameLength(24);
                var unknown1Key         = reader.ReadUInt32();
                var unknown1ValueLength = reader.ReadUInt32();
                var unknown1Value       = reader.ReadBytes((int)unknown1ValueLength);
                reader.PopFrameLength();
                this._Unknown.Add(new KeyValuePair <uint, byte[]>(unknown1Key, unknown1Value));
            }
        }
Exemple #13
0
    public static WaypointsSection Read(IBitReader reader)
    {
        var waypointsSection = new WaypointsSection
        {
            Header  = reader.ReadUInt16(),
            Version = reader.ReadUInt32(),
            Length  = reader.ReadUInt16()
        };

        for (int i = 0; i < waypointsSection._difficulties.Length; i++)
        {
            waypointsSection._difficulties[i] = WaypointsDifficulty.Read(reader);
        }

        return(waypointsSection);
    }
 internal void Read(IBitReader reader, ushort version)
 {
     reader.PushFrameLength(24);
     this._Unknown1 = reader.ReadUInt32();
     this._Unknown2 = reader.ReadUInt32();
     reader.PushFrameLength(24);
     this._Unknown3.Read(reader, version);
     reader.PopFrameLength();
     reader.PushFrameLength(24);
     this._Unknown4.Read(reader, version);
     reader.PopFrameLength();
     this._Unknown5 = reader.ReadUInt32();
     this._Unknown6 = reader.ReadUInt32();
     this._Unknown7 = reader.ReadUInt32();
     reader.PopFrameLength();
 }
        public const ulong Signature = 0x0A45564153004246; // 'FB\0SAVE\n'

        public virtual void Read(IBitReader reader)
        {
            var magic = reader.ReadUInt64();

            if (magic != Signature)
            {
                throw new SaveFormatException("invalid save data signature");
            }

            var hasExtraValue = reader.ReadBoolean();

            if (hasExtraValue == true)
            {
                reader.SkipUInt32(27);
            }
        }
Exemple #16
0
        public void Read(IBitReader reader, ushort version)
        {
            this._ReadVersion = version;
            var count = reader.ReadUInt16();

            for (int i = 0; i < count; i++)
            {
                reader.PushFrameLength(24);
                RawItemData itemData;
                itemData.Id         = reader.ReadUInt32();
                itemData.DataLength = (int)reader.ReadUInt32(24);
                itemData.DataBytes  = reader.ReadBits(itemData.DataLength);
                this._Items.Add(itemData);
                reader.PopFrameLength();
            }
        }
Exemple #17
0
        public GpsElementExt Decode(IBitReader reader)
        {
            int x = reader != null?reader.ReadInt32() : throw new ArgumentNullException(nameof(reader));

            int        y          = reader.ReadInt32();
            short      altitude   = (short)Math.Round(reader.ReadInt16() / 10.0);
            short      angle      = (short)Math.Round(reader.ReadUInt16() / 100.0);
            byte       satellites = reader.ReadByte();
            short      speed      = reader.ReadInt16();
            IoProperty ioProperty = IoProperty.Create(500001, reader.ReadByte());

            return(new GpsElementExt(new GpsElement(x, y, altitude, speed, angle, satellites), new IoElement(0, new List <IoProperty>(1)
            {
                ioProperty
            })));
        }
Exemple #18
0
    public static QuestsSection Read(IBitReader reader)
    {
        var questSection = new QuestsSection
        {
            Magic   = reader.ReadUInt32(),
            Header  = reader.ReadUInt32(),
            Version = reader.ReadUInt32(),
            Length  = reader.ReadUInt16()
        };

        for (int i = 0; i < questSection._difficulties.Length; i++)
        {
            questSection._difficulties[i] = QuestsDifficulty.Read(reader);
        }

        return(questSection);
    }
 internal void Read(IBitReader reader, uint version)
 {
     reader.PushFrameLength(20);
     this._Unknown1 = reader.ReadUInt32();
     this._Unknown2 = reader.ReadTransform();
     if (version >= 5)
     {
         this._Unknown3 = reader.ReadBoolean();
         if (this._Unknown3 == true)
         {
             this._Unknown4 = reader.ReadGuid();
             this._Unknown5 = reader.ReadGuid();
             this._Unknown6 = reader.ReadGuid();
         }
     }
     reader.PopFrameLength();
 }
Exemple #20
0
        internal override void Read1(IBitReader reader, ushort arg1)
        {
            base.Read1(reader, arg1);
            reader.PushFrameLength(24);
            this._Unknown.Clear();
            var unknown1Count = reader.ReadUInt16();

            for (int i = 0; i < unknown1Count; i++)
            {
                reader.PushFrameLength(24);
                var unknown1Key   = reader.ReadString();
                var unknown1Value = reader.ReadString();
                reader.PopFrameLength();
                this._Unknown.Add(new KeyValuePair <string, string>(unknown1Key, unknown1Value));
            }
            reader.PopFrameLength();
        }
        public int[] ReadValues(long bitsToRead, IBitReader bitReader)
        {
            bitsToRead -= bitsToRead % numberOfBitsForValue;

            var values = new List <int>();

            while (bitsToRead > 0)
            {
                var readValue   = bitReader.ReadNBits(numberOfBitsForValue);
                var parsedValue = ParseValueToInt(readValue);

                values.Add(parsedValue);

                bitsToRead -= numberOfBitsForValue;
            }

            return(values.ToArray());
        }
Exemple #22
0
        public Command Decode(IBitReader reader)
        {
            byte num = reader != null?reader.ReadByte() : throw new ArgumentNullException(nameof(reader));

            Command command;

            if (CommandIdToType.ContainsKey(num))
            {
                command = ((Command)Activator.CreateInstance(CommandIdToType[num])).Decode(num, reader);
            }
            else
            {
                command = new Command(num);
                int count = reader.ReadInt32();
                command.Data = reader.ReadBytes(count);
            }
            return(command);
        }
        internal override void Read4(IBitReader reader)
        {
            base.Read4(reader);
            this._Unknown1 = reader.ReadUInt16();
            reader.PushFrameLength(24);
            var unknown2Count = reader.ReadUInt16();

            this._Unknown2.Clear();
            for (int i = 0; i < unknown2Count; i++)
            {
                reader.PushFrameLength(24);
                var unknown2Key   = reader.ReadUInt32();
                var unknown2Value = reader.ReadUInt32();
                reader.PopFrameLength();
                this._Unknown2.Add(new KeyValuePair <uint, uint>(unknown2Key, unknown2Value));
            }
            reader.PopFrameLength();
        }
        internal void Read(IBitReader reader)
        {
            reader.PushFrameLength(24);
            reader.PushFramePosition(26);
            this._Unknown1.Clear();
            var unknown1Count = reader.ReadUInt16();

            for (int i = 0; i < unknown1Count; i++)
            {
                var unknown1 = new DestructionUnknown4();
                unknown1.Read(reader);
                this._Unknown1.Add(unknown1);
            }
            reader.PopFramePosition();
            reader.PushFrameLength(24);
            this._Unknown2 = reader.ReadUInt32();
            reader.PopFrameLength();
            reader.PopFrameLength();
        }
        public static void ReadStringDictionary(this IBitReader reader, Dictionary <string, string> dictionary)
        {
            if (dictionary == null)
            {
                throw new ArgumentNullException("dictionary");
            }

            dictionary.Clear();
            var count = reader.ReadUInt16();

            for (var i = 0; i < count; i++)
            {
                reader.PushFrameLength(24);
                var key   = reader.ReadString();
                var value = reader.ReadString();
                reader.PopFrameLength();
                dictionary.Add(key, value);
            }
        }
Exemple #26
0
        internal override void Read2(IBitReader reader)
        {
            base.Read2(reader);

            reader.PushFrameLength(24);

            if (this.ReadVersion >= 2)
            {
                reader.PushFrameLength(24);
                this._CurrentSystem      = reader.ReadGuid();
                this._CurrentDestination = reader.ReadGuid();
                reader.PopFrameLength();
            }

            this._Unknown3.Read(reader, this.ReadVersion);
            this._Unknown4.Read(reader, this.ReadVersion);

            reader.PopFrameLength();
        }
Exemple #27
0
        public virtual object Decode(Stream stream)
        {
            IBitReader reader = stream != null?stream.CreateSuitableBitReader() : throw new ArgumentNullException(nameof(stream));

            byte num = reader.ReadByte();

            if (Id != num)
            {
                throw new CodecException("Incorrect data codec ID " + num + "; expected " + Id);
            }
            try
            {
                return(new TEncoding().Decode(reader));
            }
            catch (Exception ex)
            {
                throw new CodecException("Unable to decode", ex);
            }
        }
Exemple #28
0
        private static void ReadList(IBitReader reader, List <KeyValuePair <Guid, uint> > list, ushort version)
        {
            if (list == null)
            {
                throw new ArgumentNullException("list");
            }

            list.Clear();
            if (version >= 1)
            {
                var count = reader.ReadUInt32();
                for (int i = 0; i < count; i++)
                {
                    var key   = reader.ReadGuid();
                    var value = reader.ReadUInt32();
                    list.Add(new KeyValuePair <Guid, uint>(key, value));
                }
            }
        }
Exemple #29
0
        public AvlData[] Decode(IBitReader reader)
        {
            byte num1 = reader != null?reader.ReadByte() : throw new ArgumentNullException(nameof(reader));

            TAvlDataEncoding avlDataEncoding = new TAvlDataEncoding();
            List <AvlData>   avlDataList     = new List <AvlData>();

            for (int index = 0; index < num1; ++index)
            {
                avlDataList.Add(avlDataEncoding.Decode(reader));
            }
            byte num2 = reader.ReadByte();

            if (num1 != avlDataList.Count)
            {
                throw new ApplicationException(string.Format("Incorrect number of data: num1={0}, num2={1}, avlDataArray.Count={2}", num1, num2, avlDataList.Count));
            }
            return(avlDataList.ToArray());
        }
Exemple #30
0
    public static NPCDialogSection Read(IBitReader reader)
    {
        var npcDialogSection = new NPCDialogSection
        {
            Header = reader.ReadUInt16(),
            Length = reader.ReadUInt16()
        };

        Span <byte> bytes = stackalloc byte[0x30];

        reader.ReadBytes(bytes);
        using var bits = new InternalBitArray(bytes);

        for (int i = 0; i < npcDialogSection._difficulties.Length; i++)
        {
            npcDialogSection._difficulties[i] = NPCDialogDifficulty.Read(bits);
        }

        return(npcDialogSection);
    }
Exemple #31
0
        public AvlData Decode(IBitReader reader)
        {
            DateTime dateTime = reader != null?DateTimeExt.FromAvl(reader.ReadInt64()) : throw new ArgumentNullException(nameof(reader));

            AvlDataPriority priority = AvlDataPriority.Low;
            byte            num      = reader.ReadByte();

            if (num > 10 && num <= 20)
            {
                priority = AvlDataPriority.High;
            }
            GpsElement gps  = DefaultGpsElementEncoding.Instance.Decode(reader);
            IoElement  data = LegacyIoElementEncoding.Instance.Decode(reader);

            if (priority == AvlDataPriority.High)
            {
                data = new IoElement(-1, data.Properties);
            }
            return(new AvlData(priority, dateTime, gps, data));
        }