using System.Collections.Generic; using Vellum; namespace Clave.Vellum { /// /// Saves a ChordSetBuilder the way a ChordSet is saved, so a set can be loaded as either. /// public sealed class ChordSetBuilderConverter : SaveConverter { public override SaveNode Write(ChordSetBuilder value, SaveSession session) { var chords = new List(value.Count); foreach (Chord chord in value) { chords.Add(new SavedChord(chord, value.PriorityOf(chord), value.IsEnabled(chord))); } return SavedChords.Write(chords, session); } public override ChordSetBuilder Read(SaveNode node, SaveSession session) { var returnMe = new ChordSetBuilder(); foreach (SavedChord saved in SavedChords.Read(node, session)) { returnMe.Add(saved.Chord, saved.Priority); if (!saved.Enabled) { returnMe.SetEnabled(saved.Chord, false); } } return returnMe; } public override bool TryListChildren(SaveNode node, ChildList children) { return SavedChords.TryListChildren(node, children); } } }