using Vellum;
namespace Annulus.Vellum
{
///
/// Saves a HexIndex as its two axial coordinates.
///
public sealed class HexIndexConverter : SaveConverter
{
public const string QKey = "q";
public const string RKey = "r";
public override SaveNode Write(HexIndex value, SaveSession session)
{
SaveNode returnMe = SaveNode.NewTable();
returnMe.Entries[QKey] = session.ToNode(value.Q);
returnMe.Entries[RKey] = session.ToNode(value.R);
return returnMe;
}
public override HexIndex Read(SaveNode node, SaveSession session)
{
var reader = new SaveReader(node, session);
int q = reader.Require(QKey);
int r = reader.Require(RKey);
return new HexIndex(q, r);
}
public override bool TryListChildren(SaveNode node, ChildList children)
{
// Everything it reads is built-in, and so left out.
SaveNode ignored;
return node.TryGetEntry(QKey, out ignored) && node.TryGetEntry(RKey, out ignored);
}
}
}