static public HBMSData Decode(String datastr) { MidProcessHBMSData mpdata = JsonConvert.DeserializeObject <MidProcessHBMSData>(datastr); HBMSData data = new HBMSData(mpdata.title, mpdata.artist) { genre = mpdata.genre, bpm = mpdata.bpm, //todo: decode artist, map creator creator = mpdata.creator, audioDir = mpdata.audioDir, rank = mpdata.rank, rankText = mpdata.rankText, hitsounds = mpdata.hitsounds, notes = new List <Note>() }; foreach (string note in mpdata.notes) { switch ((NoteType)(note.ToList()[0] - '0')) { case NoteType.ShortNote: data.notes.Add((Note)JsonConvert.DeserializeObject <ShortNote>(note.Substring(1))); break; case NoteType.SlideLongNote: data.notes.Add((Note)JsonConvert.DeserializeObject <SlideLongNote>(note.Substring(1))); break; /*case NoteType.TrackNote: * data.notes.Add((Note)JsonConvert.DeserializeObject<TrackNote>(note)); * break; * case NoteType.DynamicNote: * data.notes.Add((Note)JsonConvert.DeserializeObject<DynamicNote>(note)); * break;*/ } } return(data); }
static public String Encode(HBMSData data) { MidProcessHBMSData mpdata = new MidProcessHBMSData(); mpdata.title = data.title; mpdata.genre = data.genre; mpdata.bpm = data.bpm; mpdata.artist = data.artist; mpdata.creator = data.creator; mpdata.audioDir = data.audioDir; mpdata.rank = data.rank; mpdata.rankText = data.rankText; mpdata.hitsounds = data.hitsounds; mpdata.notes = new List <string>(); foreach (Note note in data.notes) { switch (note.type) { case NoteType.ShortNote: mpdata.notes.Add((int)note.type + JsonConvert.SerializeObject((ShortNote)note)); break; case NoteType.SlideLongNote: mpdata.notes.Add((int)note.type + JsonConvert.SerializeObject((SlideLongNote)note)); break; /*case NoteType.TrackNote: * mpdata.notes.Add((int)note.type + JsonConvert.SerializeObject((TrackNote)note)); * break; * case NoteType.DynamicNote: * mpdata.notes.Add((int)note.type + JsonConvert.SerializeObject((DynamicNote)note)); * break;*/ } } return(JsonConvert.SerializeObject(mpdata)); }