コード例 #1
0
        private void GatherInstalledINIs()
        {
            // get skins
            string[] installedSkins = System.IO.Directory.GetDirectories(OsuSkinFolder);
            // look for ini in only skin folder

            List <string> foundINIS = new List <string>();

            foreach (string installedSkin in installedSkins)
            {
                if (System.IO.File.Exists(installedSkin + @"\skin.ini"))
                {
                    foundINIS.Add(installedSkin + @"\skin.ini");
                }
            }

            foreach (string installedIniFile in foundINIS)
            {
                List <SkINIOptionModel> iniFile     = ReadRealSkinINI(installedIniFile);
                INIFileModel            nextINIFile = new INIFileModel();
                nextINIFile.iniContent   = iniFile;
                nextINIFile.originalPath = installedIniFile;
                installedINIs.Add(nextINIFile);
            }
        }
コード例 #2
0
        public void CreateSkinINI(INIMagic option)
        {
            // collect the installed ini files
            GatherInstalledINIs();

            // read base data file
            ReadBaseData();

            SkINIOptionModel authorLine   = new SkINIOptionModel("Author", AuthorName + applicationVersion, OptionGroup.General);
            SkINIOptionModel skinNameLine = new SkINIOptionModel("Name", SkinName, OptionGroup.General);
            SkINIOptionModel versionLine  = new SkINIOptionModel("Version", "latest", OptionGroup.General);

            resultINI.Add(authorLine);
            resultINI.Add(skinNameLine);
            resultINI.Add(versionLine);


            switch (option)
            {
            case INIMagic.Random:

                for (int i = 0; i < baseDataIni.Count; i++)    // OPTION LINE IN RESULT INI!
                {
                    SkINIOptionModel indexOption = baseDataIni[i];
                    if (indexOption.OptionKey == "Author" || indexOption.OptionKey == "Name" || indexOption.OptionKey == "Version" || indexOption.OptionGroup == OptionGroup.CatchTheBeat || indexOption.OptionGroup == OptionGroup.Mania)
                    {
                        continue;
                    }

                    // get ini files that have the optionKey in use
                    List <INIFileModel> matchingFiles = new List <INIFileModel>();

                    foreach (INIFileModel installedINI in installedINIs)
                    {
                        if (installedINI.HasOptinKey(indexOption))
                        {
                            matchingFiles.Add(installedINI);
                        }
                    }

                    if (matchingFiles.Count() > 0)
                    {
                        // select random ini
                        INIFileModel luckyWinner = matchingFiles[rnd.Next(0, matchingFiles.Count)];
                        // get value
                        indexOption.OptionValue = luckyWinner.iniContent.Where(x => x.OptionKey == indexOption.OptionKey).First().OptionValue;    // + " (DEBUG: " + luckyWinner.originalPath + ")";
                        resultINI.Add(indexOption);

                        // save author if not already using
                        // example: skin name by author
                        // get used skin
                        // get author
                        string[] skinFolderSegments = luckyWinner.originalPath.Split('\\');
                        string   skinName           = skinFolderSegments[skinFolderSegments.Count() - 2];
                        string   author             = luckyWinner.iniContent.Where(x => x.OptionKey == "Author").First().OptionValue;
                        string   creditString       = "Skin: " + skinName + " by " + author;
                        if (!credits.Contains(creditString))
                        {
                            credits.Add(creditString);
                        }
                    }
                }
                break;

            case INIMagic.Corrupted:
                break;
            }

            SaveNewINI();
        }