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); }
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); }
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); }
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); } }