public static void ExtractTextures(FileArchive archive, string texDir, string outDir) { FileInfo[] fileInfos = archive.GetChildFileInfos(texDir); foreach (FileInfo info in fileInfos) { try { byte[] file = archive.ReadFile(info); string filename = Path.GetFileNameWithoutExtension(info.Filename); ExportWilayTextures(file, filename, outDir); } catch (Exception ex) { Console.WriteLine($"{ex.Message} {info.Filename}"); } } }
public static void ExtractTextures(FileArchive archive, string texDir, string outDir, IProgressReport progress = null) { FileInfo[] fileInfos = archive.GetChildFileInfos(texDir); progress?.SetTotal(fileInfos.Length); foreach (FileInfo info in fileInfos) { try { byte[] file = archive.ReadFile(info); string filename = Path.GetFileNameWithoutExtension(info.Filename); ExportWilayTextures(file, filename, outDir, progress); } catch (Exception ex) { progress?.LogMessage($"{ex.Message} {info.Filename}"); } progress?.ReportAdd(1); } }
public static void ExtractTextures(FileArchive archive, string texDir, string outDir) { FileInfo[] fileInfos = archive.GetChildFileInfos(texDir); foreach (FileInfo info in fileInfos) { try { byte[] file = archive.ReadFile(info); string filename = Path.GetFileNameWithoutExtension(info.Filename); var wilay = new WilayRead(file); Directory.CreateDirectory(outDir); for (int i = 0; i < wilay.Textures.Length; i++) { byte[] png = wilay.Textures[i].ToPng(); if (png == null) { Console.WriteLine($"{wilay.Textures[i].Format} decoding not implemented"); byte[] dds = Dds.CreateDds(wilay.Textures[i]); File.WriteAllBytes(Path.Combine(outDir, filename + "_" + i + ".dds"), dds); continue; } File.WriteAllBytes(Path.Combine(outDir, filename + "_" + i + ".png"), png); } } catch (Exception ex) { Console.WriteLine($"{ex.Message} {info.Filename}"); } } }