/// <summary> /// Saves the given attack/armor entry list member into the given buffer. /// The modification flag is written also. /// </summary> /// <param name="buffer">The buffer for the member to written to.</param> /// <param name="member">The member to be written.</param> protected static void SaveMember(IORAMHelper.RAMBuffer buffer, AttackArmorEntryListDiffElement member) { // Member must be defined if (member == null) { return; } // Write modification flag buffer.WriteByte((byte)(member.Modified ? 1 : 0)); // Write member if (member.Modified) { // Write count buffer.WriteInteger(member.Value.Count); // Write members foreach (AttackArmorEntry aae in member.Value) { // Write member fields buffer.WriteUShort(aae.ArmorClass); buffer.WriteUShort(aae.Amount); } } }
/// <summary> /// Reads a attack/armor entry list member from the given buffer. /// The modification flag is read also. /// </summary> /// <param name="buffer">The buffer where the member shall be read from.</param> /// <param name="member">The member where the read data shall be stored.</param> protected static void ReadMember(IORAMHelper.RAMBuffer buffer, AttackArmorEntryListDiffElement member) { // Member must be defined if (member == null) { return; } // Read member if modified if (buffer.ReadByte() == 1) { // Read entries int count = buffer.ReadInteger(); List <AttackArmorEntry> entries = new List <AttackArmorEntry>(count); for (int i = 0; i < count; ++i) { entries.Add(new AttackArmorEntry ( buffer.ReadUShort(), buffer.ReadUShort() )); } member.Value = new EquatableObservableCollection <AttackArmorEntry>(entries); } }