Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/NesTiler.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'NesTiler/Program.cs')
-rw-r--r--NesTiler/Program.cs23
1 files changed, 8 insertions, 15 deletions
diff --git a/NesTiler/Program.cs b/NesTiler/Program.cs
index 9d210e0..92f50fd 100644
--- a/NesTiler/Program.cs
+++ b/NesTiler/Program.cs
@@ -141,6 +141,7 @@ namespace com.clusterrr.Famicom.NesTiler
var color = image.GetPixelColor(x, y);
if (color.Alpha >= 0x80 || c.Mode == Config.TilesMode.Backgrounds)
{
+ // TODO: more lossy levels?
var similarColor = nesColors.FindSimilarColor(color);
image.SetPixelColor(x, y, similarColor);
}
@@ -241,15 +242,8 @@ namespace com.clusterrr.Famicom.NesTiler
}
else if (calculatedPalettes.Any())
{
- if (calculatedPalettes.Any())
- {
- palettes[i] = calculatedPalettes.First();
- calculatedPalettes.RemoveAt(0);
- }
- else
- {
- palettes[i] = new Palette();
- }
+ palettes[i] = calculatedPalettes.First();
+ calculatedPalettes.RemoveAt(0);
}
if (palettes[i] != null)
@@ -544,8 +538,7 @@ namespace com.clusterrr.Famicom.NesTiler
foreach (var imageNum in images.Keys)
{
var image = images[imageNum];
- int attributeTableOffset;
- attributeTableOffsets.TryGetValue(imageNum, out attributeTableOffset);
+ attributeTableOffsets.TryGetValue(imageNum, out int attributeTableOffset);
// For each tile/sprite
for (int tileY = 0; tileY < (image.Height + attributeTableOffset) / tilePalHeight; tileY++)
{
@@ -604,19 +597,19 @@ namespace com.clusterrr.Famicom.NesTiler
bool grouped = false;
foreach (var t in top)
{
- if (t.Count < 3)
+ if (paletteCounter[t] > 0 && t.Count < 3)
{
foreach (var p in result)
{
var newColors = p.Where(c => !t.Contains(c));
- if (p != t && (newColors.Count() + t.Count <= 3))
+ if ((p != t) && (paletteCounter[p] > 0) && (newColors.Count() + t.Count <= 3))
{
var count1 = paletteCounter[t];
var count2 = paletteCounter[p];
paletteCounter[t] = 0;
paletteCounter[p] = 0;
- foreach (var c in newColors) t.Add(c);
- paletteCounter[t] = count1 + count2;
+ var newPalette = new Palette(Enumerable.Concat(t, p).Distinct());
+ paletteCounter[newPalette] = count1 + count2;
grouped = true;
}
}