2019-01-06 23:44:51 +01:00

73 lines
3.1 KiB
C#

using System;
using System.Drawing.Imaging;
using System.IO;
using Syroot.Worms.OnlineWorms;
namespace Syroot.Worms.Scratchpad
{
internal class Program
{
// ---- METHODS (PRIVATE) --------------------------------------------------------------------------------------
private static void Main(string[] args)
{
ConvertIgdImages();
Console.ReadLine();
}
private static void ConvertIgdImages()
{
string igdFolder = @"C:\Games\WWP Aqua\Images";
string pngFolder = @"D:\Pictures\IGD";
Directory.CreateDirectory(pngFolder);
foreach (string igdFilePath in Directory.GetFiles(igdFolder, "*.igd", SearchOption.AllDirectories))
{
// Load the IGD and let it convert the images.
Igd igd = new Igd(igdFilePath);
// Save the images in the output folder under a relative path.
string igdFileFolder = Path.GetDirectoryName(igdFilePath);
string relativePath = igdFileFolder.Substring(igdFolder.Length).TrimStart(Path.DirectorySeparatorChar);
string pngIgdFolder = Path.Combine(pngFolder, relativePath, Path.GetFileName(igdFilePath));
Directory.CreateDirectory(pngIgdFolder);
for (int i = 0; i < igd.Images.Count; i++)
{
string pngFileName = Path.ChangeExtension(i.ToString(), "png");
IgdImage image = igd.Images[i];
image.Bitmap.Save(Path.Combine(pngIgdFolder, pngFileName), ImageFormat.Png);
}
}
}
private static void ConvertKsfImages()
{
string ksfFolder = @"C:\Games\Online Worms\Ksf";
string palFolder = @"C:\Games\Online Worms\Palette";
string pngFolder = @"D:\Pictures\KSF";
Directory.CreateDirectory(pngFolder);
Palette fallbackPalette = new Palette(Path.Combine(palFolder, "StaticImage.pal"));
foreach (string ksfFilePath in Directory.GetFiles(ksfFolder, "*.ksf"))
{
// Try to find a palette for every KSF, otherwise use fallback palette.
string ksfFileName = Path.GetFileName(ksfFilePath);
string palFilePath = Path.Combine(palFolder, Path.ChangeExtension(ksfFileName, "pal"));
Palette palette = File.Exists(palFilePath) ? new Palette(palFilePath) : fallbackPalette;
// Load the KSF and let it convert the images.
Ksf ksf = new Ksf(ksfFilePath, palette);
// Save the images in the output folder.
string pngKsfFolder = Path.Combine(pngFolder, ksfFileName);
Directory.CreateDirectory(pngKsfFolder);
for (int i = 0; i < ksf.Images.Count; i++)
{
string pngFileName = Path.ChangeExtension(i.ToString(), "png");
ksf.Images[i].Bitmap?.Save(Path.Combine(pngKsfFolder, pngFileName), ImageFormat.Png);
}
}
}
}
}