コード例 #1
0
 public SeperateSongFolder(SongFolderEntry folderEntry, SeperateSongFolder cacheFolder = null)
 {
     SongFolderEntry = folderEntry;
     CacheFolder     = cacheFolder;
     if (folderEntry.Pack == FolderLevelPack.NewPack)
     {
         LevelCollection = new SongCoreCustomLevelCollection(Levels.Values.ToArray());
         UnityEngine.Sprite image = UI.BasicUI.FolderIcon;
         if (!string.IsNullOrEmpty(folderEntry.ImagePath))
         {
             try
             {
                 var packImage = SongCore.Utilities.Utils.LoadSpriteFromFile(folderEntry.ImagePath);
                 if (packImage != null)
                 {
                     image = packImage;
                 }
             }
             catch
             {
                 SongCore.Utilities.Logging.Log($"Failed to Load Image For Seperate Folder \"{folderEntry.Name}\"");
             }
         }
         LevelPack = new SongCoreCustomBeatmapLevelPack(CustomLevelLoader.kCustomLevelPackPrefixId + folderEntry.Name, folderEntry.Name, image, LevelCollection);
     }
 }
コード例 #2
0
        public static List <SeperateSongFolder> ReadSeperateFoldersFromFile(string filePath)
        {
            List <SeperateSongFolder> result = new List <SeperateSongFolder>();

            try
            {
                XDocument file = XDocument.Load(filePath);
                foreach (var item in file.Root.Elements())
                {
                    //           Console.WriteLine("Element Name: " + item.Name);
                    string name = item.Element("Name").Value;
                    if (name == "Example")
                    {
                        continue;
                    }
                    string path      = item.Element("Path").Value;
                    int    pack      = int.Parse(item.Element("Pack").Value);
                    string imagePath = "";
                    var    image     = item.Element("ImagePath");
                    if (image != null)
                    {
                        imagePath = image.Value;
                    }

                    bool isWIP = false;
                    var  wip   = item.Element("WIP");
                    if (wip != null)
                    {
                        isWIP = bool.Parse(wip.Value);
                    }
                    bool zipCaching = false;
                    var  cachezips  = item.Element("CacheZIPs");
                    if (cachezips != null)
                    {
                        zipCaching = bool.Parse(cachezips.Value);
                    }
                    SongFolderEntry entry = new SongFolderEntry(name, path, (FolderLevelPack)pack, imagePath, isWIP, zipCaching);
                    //   Console.WriteLine("Entry");
                    //   Console.WriteLine("   " + entry.Name);
                    //   Console.WriteLine("   " + entry.Path);
                    //   Console.WriteLine("   " + entry.Pack);
                    //    Console.WriteLine("   " + entry.WIP);

                    SeperateSongFolder cachedSeperate = null;
                    if (zipCaching)
                    {
                        FolderLevelPack cachePack;
                        if ((FolderLevelPack)pack == FolderLevelPack.CustomWIPLevels)
                        {
                            cachePack = FolderLevelPack.CachedWIPLevels;
                        }
                        else
                        {
                            cachePack = FolderLevelPack.NewPack;
                        }
                        SongFolderEntry cachedSongFolderEntry = new SongFolderEntry(String.Concat("Cached ", name), Path.Combine(path, "Cache"), cachePack, imagePath, isWIP, false);
                        cachedSeperate = new SeperateSongFolder(cachedSongFolderEntry);
                    }

                    SeperateSongFolder seperate = new SeperateSongFolder(entry, cachedSeperate);
                    result.Add(seperate);
                    if (cachedSeperate != null)
                    {
                        result.Add(cachedSeperate);
                    }
                }
            }
            catch
            {
                Utilities.Logging.Log("Error Reading folders.xml! Make sure the file is properly formatted.", IPA.Logging.Logger.Level.Warning);
            }

            return(result);
        }