Beispiel #1
0
        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}");
                }
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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}");
                }
            }
        }