public new PackedDragNote Pack() { PackedDragNote packed = new PackedDragNote(); packed.packedNote = base.Pack(); foreach (DragNode node in nodes) { packed.packedNodes.Add(node.Pack()); } return(packed); }
public static DragNote Unpack(PackedDragNote packed) { Note unpackedNote = Note.Unpack(packed.packedNote); DragNote dragNote = new DragNote() { type = unpackedNote.type, pulse = unpackedNote.pulse, lane = unpackedNote.lane, sound = unpackedNote.sound, nodes = new List <DragNode>() }; foreach (string packedNode in packed.packedNodes) { dragNote.nodes.Add(DragNode.Unpack(packedNode)); } return(dragNote); }
public new PackedDragNote Pack() { PackedDragNote packed = new PackedDragNote(); if (IsExtended()) { // Enums will be formatted as strings. packed.packedNote = $"E|{type}|{pulse}|{lane}|{volumePercent}|{panPercent}|{(int)curveType}|{sound}"; } else { packed.packedNote = $"{type}|{pulse}|{lane}|{sound}"; } foreach (DragNode node in nodes) { packed.packedNodes.Add(node.Pack()); } return(packed); }
public static DragNote Unpack(PackedDragNote packed) { char[] delim = new char[] { '|' }; // Beware that the "sound" portion may contain |. string[] splits = packed.packedNote.Split(delim, 2); DragNote dragNote; // Extended? if (splits[0] == "E") { splits = packed.packedNote.Split(delim, 8); dragNote = new DragNote() { pulse = int.Parse(splits[2]), lane = int.Parse(splits[3]), volumePercent = int.Parse(splits[4]), panPercent = int.Parse(splits[5]), curveType = (CurveType)int.Parse(splits[6]), sound = splits[7] }; } else { splits = packed.packedNote.Split(delim, 4); dragNote = new DragNote() { pulse = int.Parse(splits[1]), lane = int.Parse(splits[2]), sound = splits[3] }; } dragNote.type = NoteType.Drag; dragNote.endOfScan = false; dragNote.nodes = new List <DragNode>(); foreach (string packedNode in packed.packedNodes) { dragNote.nodes.Add(DragNode.Unpack(packedNode)); } return(dragNote); }