various fixes
parent
c96be2b26b
commit
1713c86afe
|
@ -1,2 +1,3 @@
|
||||||
bin/
|
bin/
|
||||||
obj/
|
obj/
|
||||||
|
output/
|
||||||
|
|
|
@ -6,5 +6,10 @@ namespace Palettizer
|
||||||
public byte G { get; set; }
|
public byte G { get; set; }
|
||||||
public byte B { get; set; }
|
public byte B { get; set; }
|
||||||
public byte A { get; set; }
|
public byte A { get; set; }
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return $"{{R: {R.ToString()}, G: {G.ToString()}, B: {B.ToString()}, A: {A.ToString()}}}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,8 @@ namespace Palettizer
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
System.Console.WriteLine("That color doesn't exist in the grayscale palette!! Bailing!!!");
|
System.Console.WriteLine($"Color {color.ToString()} doesn't exist in the grayscale palette!! Bailing!!!");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ namespace Palettizer
|
||||||
var gmProject = Importer.ImportProject(project);
|
var gmProject = Importer.ImportProject(project);
|
||||||
var projectDir = project.Directory;
|
var projectDir = project.Directory;
|
||||||
|
|
||||||
console.Out.Write("Parsing: " + gmProject.Name);
|
console.Out.Write("Parsing: " + gmProject.Name + "\n");
|
||||||
|
|
||||||
if (Directory.Exists("output"))
|
if (Directory.Exists("output"))
|
||||||
{
|
{
|
||||||
|
@ -58,6 +58,7 @@ namespace Palettizer
|
||||||
foreach (var resource in gmProject.Resources)
|
foreach (var resource in gmProject.Resources)
|
||||||
{
|
{
|
||||||
var path = Path.Combine(projectDir.FullName, resource.ID.Path);
|
var path = Path.Combine(projectDir.FullName, resource.ID.Path);
|
||||||
|
var spriteDir = Path.GetDirectoryName(path);
|
||||||
var file = new FileInfo(path);
|
var file = new FileInfo(path);
|
||||||
|
|
||||||
if (file.Name.StartsWith("pal_")) { continue; }
|
if (file.Name.StartsWith("pal_")) { continue; }
|
||||||
|
@ -71,12 +72,14 @@ namespace Palettizer
|
||||||
|
|
||||||
if (sprite.TextureGroupID.Name == textureGroup)
|
if (sprite.TextureGroupID.Name == textureGroup)
|
||||||
{
|
{
|
||||||
|
console.Out.Write(sprite.Name + "\n");
|
||||||
|
|
||||||
foreach (var spriteFrame in sprite.Frames)
|
foreach (var spriteFrame in sprite.Frames)
|
||||||
{
|
{
|
||||||
ImageResult image;
|
ImageResult image;
|
||||||
byte[] grayscaleImage;
|
byte[] grayscaleImage;
|
||||||
|
|
||||||
var spriteImageFilePath = Path.Combine(path, spriteFrame.CompositeImage.FrameID.Name + ".png");
|
var spriteImageFilePath = Path.Combine(spriteDir, spriteFrame.CompositeImage.FrameID.Name + ".png");
|
||||||
|
|
||||||
// Add sprite to palette
|
// Add sprite to palette
|
||||||
using (var stream = File.OpenRead(spriteImageFilePath))
|
using (var stream = File.OpenRead(spriteImageFilePath))
|
||||||
|
@ -85,8 +88,12 @@ namespace Palettizer
|
||||||
grayscaleImage = AddSpriteToPalette(palette, image, console);
|
grayscaleImage = AddSpriteToPalette(palette, image, console);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var spriteWriteDir = Path.Combine(outputDir.FullName, Path.GetRelativePath(projectDir.FullName, spriteDir));
|
||||||
|
Directory.CreateDirectory(spriteWriteDir);
|
||||||
|
|
||||||
|
var spriteWritePath = Path.Combine(spriteWriteDir, spriteFrame.CompositeImage.FrameID.Name + ".png");
|
||||||
// Now write the image to output directory as grayscale
|
// Now write the image to output directory as grayscale
|
||||||
using (var stream = File.OpenWrite(Path.Combine(outputDir.FullName, resource.ID.Path)))
|
using (var stream = File.OpenWrite(spriteWritePath))
|
||||||
{
|
{
|
||||||
writer.WritePng(grayscaleImage, image.Width, image.Height, StbImageWriteSharp.ColorComponents.RedGreenBlueAlpha, stream);
|
writer.WritePng(grayscaleImage, image.Width, image.Height, StbImageWriteSharp.ColorComponents.RedGreenBlueAlpha, stream);
|
||||||
}
|
}
|
||||||
|
@ -115,10 +122,10 @@ namespace Palettizer
|
||||||
{
|
{
|
||||||
colorPalette[i] = new Color
|
colorPalette[i] = new Color
|
||||||
{
|
{
|
||||||
R = paletteImage.Data[j + i * paletteImage.Width],
|
R = paletteImage.Data[j * 4 + i * paletteImage.Width * 4],
|
||||||
G = paletteImage.Data[j + i * paletteImage.Width + 1],
|
G = paletteImage.Data[(j * 4 + i * paletteImage.Width * 4) + 1],
|
||||||
B = paletteImage.Data[j + i * paletteImage.Width + 2],
|
B = paletteImage.Data[(j * 4 + i * paletteImage.Width * 4) + 2],
|
||||||
A = paletteImage.Data[j + i * paletteImage.Width + 3]
|
A = paletteImage.Data[(j * 4 + i * paletteImage.Width * 4) + 3]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,7 +134,7 @@ namespace Palettizer
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write final palette sprite to PNG
|
// Write final palette sprite to PNG
|
||||||
var paletteOutputPath = Path.Combine(outputDir.FullName, textureGroup, "Palette.png");
|
var paletteOutputPath = Path.Combine(outputDir.FullName, textureGroup + "_Palette.png");
|
||||||
using (var stream = File.OpenWrite(paletteOutputPath))
|
using (var stream = File.OpenWrite(paletteOutputPath))
|
||||||
{
|
{
|
||||||
writer.WritePng(palette.CreateIndexedPaletteBitmap(), palette.Width, palette.Height, StbImageWriteSharp.ColorComponents.RedGreenBlueAlpha, stream);
|
writer.WritePng(palette.CreateIndexedPaletteBitmap(), palette.Width, palette.Height, StbImageWriteSharp.ColorComponents.RedGreenBlueAlpha, stream);
|
||||||
|
|
Loading…
Reference in New Issue