Пример #1
0
        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
        }