static void PatchCanvas(string srcCanvas, string srcFolder, string dstCanvas) { Console.WriteLine("Patching {0}...", Path.GetFileName(srcCanvas)); double scale = NEW_WIDTH / (double)OLD_WIDTH; var canvas = new LwgCanvas(srcCanvas); canvas.Width = (int)(canvas.Width * scale); canvas.Height = (int)(canvas.Height * scale); foreach (var file in Directory.GetFiles(srcFolder)) { string path = Path.GetFileNameWithoutExtension(file); if (!file.EndsWith(".png")) { continue; } canvas.ReplaceImage( path, WcgImage.FromImage(file) ); var item = canvas.GetEntry(path); if (item.Flag == 0) { item.Flag = byte.MaxValue; } item.X = (int)(item.X * scale); item.Y = (int)(item.Y * scale); } canvas.Save(dstCanvas); }
static void DealWithFile(string path) { string parentDir = Path.GetDirectoryName(path); string target = Path.Combine(parentDir, Path.GetFileNameWithoutExtension(path)); if (File.Exists(path)) { if (path.EndsWith(".wcg")) { // -> Convert to PNG WCG2PNG(path, target + ".png"); } else if (path.EndsWith(".lwg")) { var canvas = LwgCanvas.FromFile(path); canvas.ExportToDirectory(target); Console.WriteLine("Extracted {0} to {1}", Path.GetFileName(path), target); } else if (path.EndsWith(".xfl")) { var archive = XflArchive.FromFile(path); archive.ExtractToDirectory(target); Console.WriteLine("Extracted {0} to {1}", Path.GetFileNameWithoutExtension(path), target); } else if (path.EndsWith(".gsc")) { target += ".txt"; var scenario = TransFile.FromGSC(path); scenario.Save(target); Console.WriteLine("Extracted {0} to {1}", Path.GetFileNameWithoutExtension(path), target); } else if (path.EndsWith(".txt")) { target += ".gsc"; var scenario = TransFile.FromFile(path); var gsc = scenario.ToGSC(target); gsc.Save(target); } else if (path.EndsWith(".png") || path.EndsWith(".jpg") || path.EndsWith(".bmp")) { PNG2WCG(path, target + ".wcg"); } else if (path.EndsWith(".wav")) { WAV2OGG(path); } else { Console.Error.WriteLine("Unsupported file format."); } } else if (Directory.Exists(path)) { if (File.Exists(Path.Combine(path, ".meta.xml"))) { // -> Pack LWG target += ".lwg"; var canvas = LwgCanvas.FromDirectory(path, true); canvas.Save(target); } else { // -> Pack XFL target += ".xfl"; var archive = new XflArchive(); archive.AddDirectory(path); archive.Save(target); } Console.WriteLine("Packed {0} to {1}", Path.GetFileName(path), target); } else { Console.Error.WriteLine("\"{0}\" is not a valid file resource!", path); } }