internal static void Initialize() { if (BeatmapInfo != null) { return; } BeatmapInfo = new pList <BeatmapInfo>(); if (File.Exists(databasePath)) { try { using (FileStream fs = File.OpenRead(databasePath)) using (SerializationReader reader = new SerializationReader(fs)) { Version = reader.ReadInt32(); if (Version > 3) { BeatmapInfo = reader.ReadBList <BeatmapInfo>(); } } } catch (Exception e) { #if DEBUG Console.WriteLine("Error while reading database! " + e); #endif } } #if iOS && DIST //move beatmaps from Documents to Library/Cache/ as per new storage guidelines (see https://www.marco.org/2011/10/13/ios5-caches-cleaning) if (Version < 8) { string newLocation = SongSelectMode.BeatmapPath; foreach (string file in Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "*.os*")) { string newFile = newLocation + "/" + Path.GetFileName(file); File.Delete(newFile); File.Move(file, newFile); } } else if (Version < 9) { if (HardwareDetection.RunningiOS5OrHigher) { foreach (string file in Directory.GetFiles(SongSelectMode.BeatmapPath, "*.os*")) { Foundation.NSFileManager.SetSkipBackupAttribute(file, true); } } } #endif #if DEBUG Console.WriteLine("Read beatmap database: " + BeatmapInfo.Count); #endif }