Esempio n. 1
0
        private List <SheetmusicInfo> importToStorage(FileReader reader)
        {
            List <SheetmusicInfo> sheetmusicInfos = new List <SheetmusicInfo>();
            var sheetNames = reader.Filenames.Where(f => f.EndsWith(".sm"));

            foreach (string name in sheetNames)
            {
                using (var raw = reader.GetStream(name))
                    using (var ms = new MemoryStream()) //we need a memory stream so we can seek and shit
                        using (var sr = new StreamReader(ms)) {
                            copyTo(raw, ms);
                            ms.Position = 0;

                            var        decoder    = SheetmusicDecoder.GetDecoder(sr);
                            Sheetmusic sheetmusic = decoder.Decode(sr);
                            sheetmusic.SheetmusicInfo.Path = name;
                            RulesetInfo rulesetInfo = rulesets.Where(r => r.RulesetInfo.ID == sheetmusic.SheetmusicInfo.RulesetID)
                                                      .FirstOrDefault().RulesetInfo;
                            sheetmusic.SheetmusicInfo.RulesetInfo = rulesetInfo;

                            sheetmusicInfos.Add(sheetmusic.SheetmusicInfo);
                        }
            }
            return(sheetmusicInfos);
        }
 protected virtual Sheetmusic <T> ConvertSheetmusic(Sheetmusic original)
 {
     return(new Sheetmusic <T> {
         SheetmusicInfo = original.SheetmusicInfo,
         ControlPointInfo = original.ControlPointInfo,
         HitObjects = original.HitObjects.SelectMany(h => convert(h, original)).ToList()
     });
 }
Esempio n. 3
0
 public Sheetmusic(Sheetmusic <T> original = null)
 {
     if (original != null)
     {
         SheetmusicInfo     = original.SheetmusicInfo.DeepClone();
         ControlPointInfo   = original.ControlPointInfo;
         SheetmusicMetadata = original.SheetmusicMetadata;
         HitObjects         = original.HitObjects;
     }
 }
        private IEnumerable <T> convert(HitObject original, Sheetmusic sheetmusic)
        {
            // Check if the hitobject is already the converted type
            T tObject = original as T;

            if (tObject != null)
            {
                yield return(tObject);

                yield break;
            }

            // Convert the hit object
            foreach (var obj in ConvertHitObject(original, sheetmusic))
            {
                if (obj == null)
                {
                    continue;
                }

                yield return(obj);
            }
        }
Esempio n. 5
0
 public virtual void PostProcess(Sheetmusic <T> sheetmusic)
 {
 }
 protected abstract IEnumerable <T> ConvertHitObject(HitObject original, Sheetmusic sheetmusic);
 public Sheetmusic <T> Convert(Sheetmusic original)
 {
     // We always operate on a clone of the original beatmap, to not modify it game-wide
     return(ConvertSheetmusic(new Sheetmusic(original)));
 }