static int Main(string[] args) { try { Console.SetWindowSize(85, 40); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.Green; } catch { /* DO NOTHING */ } #if (DEBUG) // give the progie some dumby file to work on args = new string[] { "D:\\Temp\\PeppaPig_p.psarc" }; Console.WriteLine("Running in Debug Mode ... help is not available"); #endif // catch if there are no cmd line arguments if (args.GetLength(0) == 0) { args = new string[] { "?" } } ; if (args[0].Contains("?") || args[0].ToLower().Contains("help")) { Console.WriteLine(@"Tone Liberator DropletApp for Rocksmith 2014 CDLC"); Console.WriteLine(); Console.WriteLine(@" - Version: " + ProjectVersion()); Console.WriteLine(@" Copyright (C) 2016 CST Developers, Cozy1"); Console.WriteLine(); Console.WriteLine(@" - Purpose: Extracts Reusable Tones from CDLC Archive Files"); Console.WriteLine(@" Creates 'SongName_Arrangement_ToneKey.tone2014.xml' files"); Console.WriteLine(@" and copies them to the 'dlc/toneliberator' output folder"); Console.WriteLine(); Console.WriteLine(@" - Usage: Drag/Drop CDLC archive file(s)"); Console.WriteLine(@" or folder(s) onto the console executable icon"); Console.Read(); return(0); } var errorMsg = String.Empty; var srcDir = args[0]; var rootDir = Path.GetDirectoryName(srcDir); var destFolder = Path.Combine("dlc", "toneliberator"); var destDir = Path.Combine(rootDir, destFolder); // create destination 'dlc/tones' directory if (!Directory.Exists(destDir)) { Directory.CreateDirectory(destDir); } Console.WriteLine(@"Initializing Tone Liberator CLI ..."); Console.WriteLine(); // iterate through folders and/or files foreach (var arg in args) { string[] filePaths; if (IsDirectory(arg)) { filePaths = Directory.GetFiles(arg, "*.psarc", SearchOption.AllDirectories).ToArray(); if (!filePaths.Any()) { Console.WriteLine(@"<ERROR> No valid PSARC archives found: " + arg); Console.WriteLine(); continue; } } else if (arg.IsValidPSARC()) { filePaths = new string[1]; filePaths[0] = arg; } else { Console.WriteLine(@"<ERROR> Invalid PSARC archive: " + arg); Console.WriteLine(); continue; } foreach (var filePath in filePaths) { Console.WriteLine(); Console.WriteLine(@"Liberating tones from: " + filePath); using (var browser = new PsarcLoader(filePath, true)) { var jsonEntries = browser.ExtractJsonManifests(); foreach (var manifest2014 in jsonEntries) { var preToneKey = String.Empty; var attr = manifest2014.Entries.ToArray()[0].Value.ToArray()[0].Value; for (int i = 0; i < attr.Tones.Count; i++) { var toneKey = attr.Tones[i].Key; if (toneKey == preToneKey) { continue; } else { preToneKey = toneKey; } var toneFileName = String.Format("{0}_{1}.tone2014.xml", attr.FullName, toneKey); var toneFilePath = Path.Combine(destDir, toneFileName); Console.WriteLine(@" - Writing tone: " + toneFilePath); var tone = new Tone2014(); tone = attr.Tones[i]; tone.Serialize(toneFilePath); } } } } } Console.WriteLine(); Console.WriteLine(@"Done creating tone2014.xml files ..."); Console.WriteLine(@" - Saved to directory: " + Path.Combine(rootDir, destDir) + @"\"); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(@"Press any key to continue ..."); Console.Read(); return(0); }
public void TestPackageGenerate() { var archivePaths = new List <string>(); foreach (var srcPath in TestSettings.Instance.ResourcePaths) { Debug.WriteLine("Processing: " + srcPath); // load info from srcPath DLCPackageData info = new DLCPackageData(); var platform = srcPath.GetPlatform(); if (platform.version == GameVersion.RS2012) { packageCreator.CurrentGameVersion = GameVersion.RS2012; } else { packageCreator.CurrentGameVersion = GameVersion.RS2014; } info = packageCreator.PackageImport(srcPath, TestSettings.Instance.TmpDestDir); // set package version, old srcPackage may not have it packageCreator.PackageVersion = "8"; // make easy to identify packageCreator.AppId = "492988"; // free Bob Marley - Three Little Birds // stress test package generation for all platforms packageCreator.PlatformPC = true; packageCreator.PlatformXBox360 = true; packageCreator.PlatformPS3 = true; packageCreator.PlatformMAC = true; // skip testing ddc generation // ConfigRepository.Instance()["ddc_autogen"] = "false"; if (packageCreator.CurrentGameVersion == GameVersion.RS2012) { packageCreator.AppId = "206102"; // free Holiday Song Pack packageCreator.PlatformPS3 = false; packageCreator.PlatformMAC = false; } // set destPath and test getting the package data var archivePath = Path.Combine(TestSettings.Instance.TmpDestDir, Path.GetFileName(srcPath)); packageCreator.DestPath = archivePath; var packageData = packageCreator.PackageGenerate(); Assert.NotNull(packageData); // call background worker method from unit test to avoid threading issues packageCreator.GeneratePackage(null, new DoWorkEventArgs(packageData)); var shortPath = archivePath.Replace("_p.psarc", "").Replace("_m.psarc", "").Replace("_ps3.psarc.edat", "").Replace("_xbox", "").Replace(".dat", ""); if (packageCreator.CurrentGameVersion == GameVersion.RS2012) { if (!File.Exists(shortPath + ".dat")) { Assert.Fail("RS1 PC Package Generation Failed ..."); } if (!File.Exists(shortPath + "_xbox")) { Assert.Fail("RS1 Xbox Package Generation Failed ..."); } } else { if (!File.Exists(shortPath + "_p.psarc")) { Assert.Fail("PC Package Generation Failed ..."); } if (!File.Exists(shortPath + "_m.psarc")) { Assert.Fail("Mac Package Generation Failed ..."); } if (!File.Exists(shortPath + "_xbox")) { Assert.Fail("Xbox Package Generation Failed ..."); } if (!File.Exists(shortPath + "_ps3.psarc.edat")) { Assert.Fail("PS3 Package Generation Failed ..."); } // console files do not contain an AppId if (!info.PS3 && !info.XBox360) { // check if GeneratePackage wrote the new AppId using (var psarcLoader = new PsarcLoader(archivePath, true)) { var entryAppId = psarcLoader.ExtractAppId(); Assert.AreEqual(packageCreator.AppId, entryAppId); } } } archivePaths.Add(archivePath); } Assert.AreEqual(TestSettings.Instance.ResourcePaths.Count, archivePaths.Count); }