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