diff --git a/HellionChat/Themes/Builtin/HellionSpectrum.cs b/HellionChat/Themes/Builtin/HellionSpectrum.cs new file mode 100644 index 0000000..5175bcd --- /dev/null +++ b/HellionChat/Themes/Builtin/HellionSpectrum.cs @@ -0,0 +1,83 @@ +using HellionChat.Util; + +namespace HellionChat.Themes.Builtin; + +// Hellion Spectrum: Deuteran/Protan-safe channel colours. +// Palette derived from Bang Wong, "Points of view: Color blindness", +// Nature Methods 8, 441 (2011). Channel identity (Tell pink, Yell yellow, +// Shout orange, Party blue, FC green) is preserved per Channel-Identity- +// Rule in docs/THEME-AUTHORING.md; tones are chosen so every channel +// stays distinguishable under red-green colour-vision deficiency. +internal static class HellionSpectrum +{ + public const string Slug = "hellion-spectrum"; + + public static Theme Build() => new( + Slug: Slug, + Name: "Hellion Spectrum", + Author: "Hellion Online Media", + Description: "Deuteran/Protan-safe channels — Wong palette tones, channel identity preserved.", + Colors: new ThemeColors( + PrimaryDark: ColourUtil.HexToRgba("#005983"), + Primary: ColourUtil.HexToRgba("#0072B2"), + PrimaryLight: ColourUtil.HexToRgba("#3E9BD0"), + PrimaryGlow: ColourUtil.HexToRgba("#0072B299"), + + AccentDark: ColourUtil.HexToRgba("#B07F00"), + Accent: ColourUtil.HexToRgba("#E69F00"), + AccentLight: ColourUtil.HexToRgba("#F0B73A"), + + Identity: ColourUtil.HexToRgba("#005983"), + + WindowBg: ColourUtil.HexToRgba("#0A0F14"), + ChildBg: ColourUtil.HexToRgba("#101620"), + FrameBg: ColourUtil.HexToRgba("#1A222E"), + Surface: ColourUtil.HexToRgba("#22303F"), + SurfaceHover: ColourUtil.HexToRgba("#2D3E51"), + Border: ColourUtil.HexToRgba("#0072B266"), + + TextPrimary: ColourUtil.HexToRgba("#F0F4F8"), + TextMuted: ColourUtil.HexToRgba("#9AA8B5"), + TextDim: ColourUtil.HexToRgba("#5E6B78"), + + StatusSuccess: ColourUtil.HexToRgba("#009E73"), + StatusDanger: ColourUtil.HexToRgba("#D55E00"), + StatusWarning: ColourUtil.HexToRgba("#F0E442"), + StatusInfo: ColourUtil.HexToRgba("#56B4E9") + ), + Layout: new ThemeLayout( + WindowRounding: 6f, ChildRounding: 5f, PopupRounding: 5f, + FrameRounding: 4f, GrabRounding: 4f, TabRounding: 4f, + ScrollbarRounding: 4f, WindowBorderSize: 1f, FrameBorderSize: 1f + ), + Typography: new ThemeTypography(), + IsBuiltIn: true, + ChatColors: new ThemeChatColors(new Dictionary + { + // Hellion Spectrum — Wong/Okabe-Ito tones within FFXIV channel + // identity. FC pulled slightly greener than vanilla cyan-teal so + // Party-blue and FC-green stay separable under deuteran sim. + [HellionChat.Code.ChatType.Say] = ColourUtil.HexToRgba("#FFFFFF"), + [HellionChat.Code.ChatType.Yell] = ColourUtil.HexToRgba("#F0E442"), + [HellionChat.Code.ChatType.Shout] = ColourUtil.HexToRgba("#D55E00"), + [HellionChat.Code.ChatType.TellIncoming] = ColourUtil.HexToRgba("#CC79A7"), + [HellionChat.Code.ChatType.TellOutgoing] = ColourUtil.HexToRgba("#CC79A7"), + [HellionChat.Code.ChatType.Party] = ColourUtil.HexToRgba("#56B4E9"), + [HellionChat.Code.ChatType.Alliance] = ColourUtil.HexToRgba("#E69F00"), + [HellionChat.Code.ChatType.FreeCompany] = ColourUtil.HexToRgba("#009E73"), + [HellionChat.Code.ChatType.NoviceNetwork] = ColourUtil.HexToRgba("#94CC4A"), + [HellionChat.Code.ChatType.CrossParty] = ColourUtil.HexToRgba("#56B4E9"), + [HellionChat.Code.ChatType.Linkshell1] = ColourUtil.HexToRgba("#94CC4A"), + [HellionChat.Code.ChatType.Linkshell2] = ColourUtil.HexToRgba("#E69F00"), + [HellionChat.Code.ChatType.Linkshell3] = ColourUtil.HexToRgba("#F0E442"), + [HellionChat.Code.ChatType.Linkshell4] = ColourUtil.HexToRgba("#66D9A8"), + [HellionChat.Code.ChatType.Linkshell5] = ColourUtil.HexToRgba("#56B4E9"), + [HellionChat.Code.ChatType.Linkshell6] = ColourUtil.HexToRgba("#8B7DD0"), + [HellionChat.Code.ChatType.Linkshell7] = ColourUtil.HexToRgba("#E0A0C0"), + [HellionChat.Code.ChatType.Linkshell8] = ColourUtil.HexToRgba("#DAA0DA"), + [HellionChat.Code.ChatType.CustomEmote] = ColourUtil.HexToRgba("#C9A56F"), + [HellionChat.Code.ChatType.StandardEmote] = ColourUtil.HexToRgba("#C9A56F"), + [HellionChat.Code.ChatType.Echo] = ColourUtil.HexToRgba("#C0C0C0"), + }) + ); +} diff --git a/HellionChat/Themes/ThemeRegistry.cs b/HellionChat/Themes/ThemeRegistry.cs index 1bda072..62c0f8a 100644 --- a/HellionChat/Themes/ThemeRegistry.cs +++ b/HellionChat/Themes/ThemeRegistry.cs @@ -16,6 +16,7 @@ public sealed class ThemeRegistry _builtIns = new Dictionary(StringComparer.OrdinalIgnoreCase) { { HellionArctic.Slug, HellionArctic.Build() }, + { HellionSpectrum.Slug, HellionSpectrum.Build() }, { Chat2Classic.Slug, Chat2Classic.Build() }, { EventHorizon.Slug, EventHorizon.Build() }, { MoonlitBloom.Slug, MoonlitBloom.Build() },