diff --git a/ChatTwo/Plugin.cs b/ChatTwo/Plugin.cs index 2711217..b5adad9 100755 --- a/ChatTwo/Plugin.cs +++ b/ChatTwo/Plugin.cs @@ -152,9 +152,20 @@ public sealed class Plugin : IDalamudPlugin }); } + // Hellion default tab layout for first-run and v10-wipe. + // General-catch-all + FC + Party + Linkshell + Tells matches the + // channel set the average raider uses; the Beginner tab only + // appears when the user has the Novice Network enabled in Audio + // & Notifications, otherwise it would just sit empty. if (Config.Tabs.Count == 0) { Config.Tabs.Add(TabsUtil.VanillaGeneral); + Config.Tabs.Add(TabsUtil.HellionFreeCompany); + Config.Tabs.Add(TabsUtil.HellionParty); + if (Config.ShowNoviceNetwork) + Config.Tabs.Add(TabsUtil.HellionBeginner); + Config.Tabs.Add(TabsUtil.HellionLinkshell); + Config.Tabs.Add(TabsUtil.VanillaTellExclusive); } LanguageChanged(Interface.UiLanguage); diff --git a/ChatTwo/Resources/HellionStrings.Designer.cs b/ChatTwo/Resources/HellionStrings.Designer.cs index 6035db8..538883a 100644 --- a/ChatTwo/Resources/HellionStrings.Designer.cs +++ b/ChatTwo/Resources/HellionStrings.Designer.cs @@ -231,4 +231,11 @@ internal class HellionStrings internal static string Settings_Information_VersionInfo_Heading => Get(nameof(Settings_Information_VersionInfo_Heading)); internal static string Settings_Information_About_Heading => Get(nameof(Settings_Information_About_Heading)); internal static string Settings_Information_Changelog_Heading => Get(nameof(Settings_Information_Changelog_Heading)); + + // Hellion Chat — Default tab presets (channel-themed) + internal static string Tabs_Presets_FreeCompany => Get(nameof(Tabs_Presets_FreeCompany)); + internal static string Tabs_Presets_Party => Get(nameof(Tabs_Presets_Party)); + internal static string Tabs_Presets_Beginner => Get(nameof(Tabs_Presets_Beginner)); + internal static string Tabs_Presets_Linkshell => Get(nameof(Tabs_Presets_Linkshell)); + internal static string Tabs_Presets_Linkshell_Hint => Get(nameof(Tabs_Presets_Linkshell_Hint)); } diff --git a/ChatTwo/Resources/HellionStrings.de.resx b/ChatTwo/Resources/HellionStrings.de.resx index 0ca1dbf..2aa6ac9 100644 --- a/ChatTwo/Resources/HellionStrings.de.resx +++ b/ChatTwo/Resources/HellionStrings.de.resx @@ -526,4 +526,21 @@ Changelog + + + + Free Company + + + Gruppe + + + Neulinge + + + Linkshell + + + Wenn du mehrere Linkshells benutzt, empfiehlt der Maintainer einen Tab pro Shell für eine sauberere Übersicht. Tab duplizieren und je Kopie die Kanalauswahl einschränken. + diff --git a/ChatTwo/Resources/HellionStrings.resx b/ChatTwo/Resources/HellionStrings.resx index 4fc908a..8fa8abd 100644 --- a/ChatTwo/Resources/HellionStrings.resx +++ b/ChatTwo/Resources/HellionStrings.resx @@ -526,4 +526,21 @@ Changelog + + + + Free Company + + + Party + + + Beginner + + + Linkshell + + + If you use multiple linkshells, the maintainer recommends one tab per shell for cleaner readability. Duplicate this tab and narrow the channel selection per copy. + diff --git a/ChatTwo/Ui/SettingsTabs/Tabs.cs b/ChatTwo/Ui/SettingsTabs/Tabs.cs index 5c84c8e..518644f 100755 --- a/ChatTwo/Ui/SettingsTabs/Tabs.cs +++ b/ChatTwo/Ui/SettingsTabs/Tabs.cs @@ -27,6 +27,9 @@ internal sealed class Tabs : ISettingsTab { const string addTabPopup = "add-tab-popup"; + ImGuiUtil.HelpText(HellionStrings.Tabs_Presets_Linkshell_Hint); + ImGui.Spacing(); + if (ImGuiUtil.IconButton(FontAwesomeIcon.Plus, tooltip: Language.Options_Tabs_Add)) ImGui.OpenPopup(addTabPopup); diff --git a/ChatTwo/Util/TabsUtil.cs b/ChatTwo/Util/TabsUtil.cs index 984d168..47d10ed 100755 --- a/ChatTwo/Util/TabsUtil.cs +++ b/ChatTwo/Util/TabsUtil.cs @@ -98,6 +98,75 @@ public static class TabsUtil AllSenderMessages = true, }; + // Hellion default-tab presets used by the v10 wipe migration. Names are + // kept in HellionStrings (EN+DE) instead of Language.* so the upstream + // resource files stay untouched. Channel selections cover the channels + // a typical Eorzea raider uses without forcing the user to hand-tick + // each box on first start. + public static Tab HellionFreeCompany => new() + { + Name = HellionStrings.Tabs_Presets_FreeCompany, + SelectedChannels = new Dictionary + { + [ChatType.FreeCompany] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.FreeCompanyAnnouncement] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.FreeCompanyLoginLogout] = (ChatSourceExt.All, ChatSourceExt.All), + }, + Channel = InputChannel.FreeCompany, + }; + + public static Tab HellionParty => new() + { + Name = HellionStrings.Tabs_Presets_Party, + SelectedChannels = new Dictionary + { + [ChatType.Party] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.CrossParty] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.Alliance] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.PvpTeam] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.PvpTeamAnnouncement] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.PvpTeamLoginLogout] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.LootNotice] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.LootRoll] = (ChatSourceExt.All, ChatSourceExt.All), + }, + Channel = InputChannel.Party, + }; + + public static Tab HellionBeginner => new() + { + Name = HellionStrings.Tabs_Presets_Beginner, + SelectedChannels = new Dictionary + { + [ChatType.NoviceNetwork] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.NoviceNetworkSystem] = (ChatSourceExt.All, ChatSourceExt.All), + }, + Channel = InputChannel.NoviceNetwork, + }; + + public static Tab HellionLinkshell => new() + { + Name = HellionStrings.Tabs_Presets_Linkshell, + SelectedChannels = new Dictionary + { + [ChatType.Linkshell1] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.Linkshell2] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.Linkshell3] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.Linkshell4] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.Linkshell5] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.Linkshell6] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.Linkshell7] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.Linkshell8] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.CrossLinkshell1] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.CrossLinkshell2] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.CrossLinkshell3] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.CrossLinkshell4] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.CrossLinkshell5] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.CrossLinkshell6] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.CrossLinkshell7] = (ChatSourceExt.All, ChatSourceExt.All), + [ChatType.CrossLinkshell8] = (ChatSourceExt.All, ChatSourceExt.All), + }, + }; + public static Dictionary MostlyPlayer => new() { // Special