diff --git a/PCK-Studio/Extensions/ColorExtensions.cs b/PCK-Studio/Extensions/ColorExtensions.cs index 3ff94a3d..958c6611 100644 --- a/PCK-Studio/Extensions/ColorExtensions.cs +++ b/PCK-Studio/Extensions/ColorExtensions.cs @@ -15,6 +15,11 @@ namespace PckStudio.Extensions return new Vector4(color.R / 255f, color.G / 255f, color.B / 255f, color.A / 255f); } + internal static int ToBGR(this Color color) + { + return color.B << 16 | color.G << 8 | color.R; + } + internal static byte BlendValues(byte source, byte overlay, BlendMode blendType) { return (byte)MathExtensions.Clamp(BlendValues(source / 255f, overlay / 255f, blendType) * 255, 0, 255); diff --git a/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs b/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs index 9443ced3..ea531c45 100644 --- a/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs +++ b/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs @@ -590,27 +590,24 @@ namespace PckStudio.Forms.Editor colorPick.AnyColor = true; colorPick.SolidColorOnly = true; - // custom colors are read as BGR for some reason, so hex values are "backwards" - // values below are the default Minecraft dyed leather armor values for convenience + //Debug.Assert(Color.FromArgb(0xf9fffe).ToBGR() == 0xfefff9); // White + //Debug.Assert(Color.FromArgb(0xf9801d).ToBGR() == 0x1d80f9); // Orange + //Debug.Assert(Color.FromArgb(0xc74ebd).ToBGR() == 0xbd4ec7); // Magenta + //Debug.Assert(Color.FromArgb(0x3ab3da).ToBGR() == 0xdab33a); // Light Blue + //Debug.Assert(Color.FromArgb(0xfed83d).ToBGR() == 0x3dd8fe); // Yellow + //Debug.Assert(Color.FromArgb(0x80c71f).ToBGR() == 0x1fc780); // Lime + //Debug.Assert(Color.FromArgb(0xf38baa).ToBGR() == 0xaa8bf3); // Pink + //Debug.Assert(Color.FromArgb(0x474f52).ToBGR() == 0x524f47); // Gray + //Debug.Assert(Color.FromArgb(0x9d9d97).ToBGR() == 0x979d9d); // Light Gray + //Debug.Assert(Color.FromArgb(0x169c9c).ToBGR() == 0x9c9c16); // Cyan + //Debug.Assert(Color.FromArgb(0x8932b8).ToBGR() == 0xb83289); // Purple + //Debug.Assert(Color.FromArgb(0x3c44aa).ToBGR() == 0xaa443c); // Blue + //Debug.Assert(Color.FromArgb(0x835432).ToBGR() == 0x325483); // Brown + //Debug.Assert(Color.FromArgb(0x5e7c16).ToBGR() == 0x167c5e); // Green + //Debug.Assert(Color.FromArgb(0xb02e26).ToBGR() == 0x262eb0); // Red + //Debug.Assert(Color.FromArgb(0x1d1d21).ToBGR() == 0x211d1d); // Black - colorPick.CustomColors = new int[] { - 0xfefff9, // White - 0x1d80f9, // Orange - 0xbd4ec7, // Magenta - 0xdab33a, // Light Blue - 0x3dd8fe, // Yellow - 0x1fc780, // Lime - 0xaa8bf3, // Pink - 0x524f47, // Gray - 0x979d9d, // Light Gray - 0x9c9c16, // Cyan - 0xb83289, // Purple - 0xaa443c, // Blue - 0x325483, // Brown - 0x167c5e, // Green - 0x262eb0, // Red - 0x211d1d // Black - }; + colorPick.CustomColors = GameConstants.DyeColors.Select(c => c.ToBGR()).ToArray(); if (colorPick.ShowDialog(this) != DialogResult.OK) return; diff --git a/PCK-Studio/Internal/GameConstants.cs b/PCK-Studio/Internal/GameConstants.cs new file mode 100644 index 00000000..08576417 --- /dev/null +++ b/PCK-Studio/Internal/GameConstants.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PckStudio.Internal +{ + internal static class GameConstants + { + public static readonly Color[] DyeColors = [ + Color.FromArgb(0xf9fffe), // White + Color.FromArgb(0xf9801d), // Orange + Color.FromArgb(0xc74ebd), // Magenta + Color.FromArgb(0x3ab3da), // Light Blue + Color.FromArgb(0xfed83d), // Yellow + Color.FromArgb(0x80c71f), // Lime + Color.FromArgb(0xf38baa), // Pink + Color.FromArgb(0x474f52), // Gray + Color.FromArgb(0x9d9d97), // Light Gray + Color.FromArgb(0x169c9c), // Cyan + Color.FromArgb(0x8932b8), // Purple + Color.FromArgb(0x3c44aa), // Blue + Color.FromArgb(0x835432), // Brown + Color.FromArgb(0x5e7c16), // Green + Color.FromArgb(0xb02e26), // Red + Color.FromArgb(0x1d1d21), // Black + ]; + } +} diff --git a/PCK-Studio/PckStudio.csproj b/PCK-Studio/PckStudio.csproj index 4fc86490..e92f8580 100644 --- a/PCK-Studio/PckStudio.csproj +++ b/PCK-Studio/PckStudio.csproj @@ -148,6 +148,7 @@ ContributorsForm.cs +