fix: sort chat colours

This commit is contained in:
Anna
2022-02-08 18:49:55 -05:00
parent bc07e1e8ba
commit 5215948a13
+32 -15
View File
@@ -15,28 +15,45 @@ internal sealed class ChatColours : ISettingsTab {
internal ChatColours(Configuration mutable, Plugin plugin) { internal ChatColours(Configuration mutable, Plugin plugin) {
this.Mutable = mutable; this.Mutable = mutable;
this.Plugin = plugin; this.Plugin = plugin;
#if DEBUG
var sortable = ChatTypeExt.SortOrder
.SelectMany(entry => entry.Item2)
.Where(type => !type.IsGm())
.ToHashSet();
var total = Enum.GetValues<ChatType>().Where(type => !type.IsGm()).ToHashSet();
if (sortable.Count != total.Count) {
Dalamud.Logging.PluginLog.Warning($"There are {sortable.Count} sortable channels, but there are {total.Count} total channels.");
total.ExceptWith(sortable);
foreach (var missing in total) {
Dalamud.Logging.PluginLog.Log($"Missing {missing}");
}
}
#endif
} }
public void Draw() { public void Draw() {
foreach (var type in Enum.GetValues<ChatType>()) { foreach (var (_, types) in ChatTypeExt.SortOrder) {
if (ImGuiUtil.IconButton(FontAwesomeIcon.UndoAlt, $"{type}", Language.Options_ChatColours_Reset)) { foreach (var type in types) {
this.Mutable.ChatColours.Remove(type); if (ImGuiUtil.IconButton(FontAwesomeIcon.UndoAlt, $"{type}", Language.Options_ChatColours_Reset)) {
} this.Mutable.ChatColours.Remove(type);
}
ImGui.SameLine(); ImGui.SameLine();
if (ImGuiUtil.IconButton(FontAwesomeIcon.LongArrowAltDown, $"{type}", Language.Options_ChatColours_Import)) { if (ImGuiUtil.IconButton(FontAwesomeIcon.LongArrowAltDown, $"{type}", Language.Options_ChatColours_Import)) {
var gameColour = this.Plugin.Functions.Chat.GetChannelColour(type); var gameColour = this.Plugin.Functions.Chat.GetChannelColour(type);
this.Mutable.ChatColours[type] = gameColour ?? type.DefaultColour() ?? 0; this.Mutable.ChatColours[type] = gameColour ?? type.DefaultColour() ?? 0;
} }
ImGui.SameLine(); ImGui.SameLine();
var vec = this.Mutable.ChatColours.TryGetValue(type, out var colour) var vec = this.Mutable.ChatColours.TryGetValue(type, out var colour)
? ColourUtil.RgbaToVector3(colour) ? ColourUtil.RgbaToVector3(colour)
: ColourUtil.RgbaToVector3(type.DefaultColour() ?? 0); : ColourUtil.RgbaToVector3(type.DefaultColour() ?? 0);
if (ImGui.ColorEdit3(type.Name(), ref vec, ImGuiColorEditFlags.NoInputs)) { if (ImGui.ColorEdit3(type.Name(), ref vec, ImGuiColorEditFlags.NoInputs)) {
this.Mutable.ChatColours[type] = ColourUtil.Vector3ToRgba(vec); this.Mutable.ChatColours[type] = ColourUtil.Vector3ToRgba(vec);
}
} }
} }