public bool Align()
    {
        int bits = r.GetAlignBits();

        if (r.WouldOverflow(bits))
        {
            error = STREAM_ERROR_OVERFLOW;
            throw new SerializeException();
        }

        if (!r.Align())
        {
            error = STREAM_ERROR_ALIGNMENT;
            throw new SerializeException();
        }

        bitsRead += bits;
        return(true);
    }
Exemplo n.º 2
0
        public static Item Read(BitReader reader, UInt32 version)
        {
            Item item = new Item();

            if (version <= 0x60)
            {
                item.Header = reader.ReadUInt16();
            }
            ReadCompact(reader, item, version);
            if (!item.IsCompact)
            {
                ReadComplete(reader, item, version);
            }
            reader.Align();
            for (int i = 0; i < item.NumberOfSocketedItems; i++)
            {
                item.SocketedItems.Add(Read(reader, version));
            }
            return(item);
        }
Exemplo n.º 3
0
        public static Attributes Read(BitReader reader)
        {
            ItemStatCostTXT itemStatCost = Core.TXT.ItemStatCostTXT;
            Attributes      attributes   = new Attributes();

            attributes.Header = reader.ReadUInt16();
            UInt16 id = reader.ReadUInt16(9);

            while (id != 0x1ff)
            {
                var property  = itemStatCost[id];
                var attribute = reader.ReadInt32(property["CSvBits"].ToInt32());
                if (property["ValShift"].ToInt32() > 0)
                {
                    attribute >>= property["ValShift"].ToInt32();
                }
                attributes.Stats.Add(property["Stat"].Value, attribute);
                id = reader.ReadUInt16(9);
            }
            reader.Align();
            return(attributes);
        }
Exemplo n.º 4
0
        protected override void DeserializeStart(BitReader reader, BasicAttackBehaviorExecutionParameters parameters)
        {
            reader.Align();

            parameters.Unknown  = reader.Read <byte>();
            parameters.Unknown1 = parameters.Unknown > 0
                ? parameters.Unknown
                : reader.Read <byte>();

            // Unknown 2
            reader.Read <byte>();

            // Unused flags
            reader.ReadBit();
            reader.ReadBit();

            parameters.Flag2 = reader.ReadBit();
            if (parameters.Flag2)
            {
                reader.Read <uint>();
            }

            parameters.Damage = reader.Read <uint>();
            reader.ReadBit(); // Died?
            parameters.SuccessState = reader.Read <byte>();

            if (parameters.Unknown1 == 81)
            {
                reader.Read <byte>();
            }

            if (parameters.SuccessState == 1)
            {
                parameters.OnSuccessBehaviorExecutionParameters = OnSuccess.DeserializeStart(reader, parameters.Context,
                                                                                             parameters.BranchContext);
            }
        }