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); } }
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(); }