216 lines
12 KiB
C#
Executable File
216 lines
12 KiB
C#
Executable File
using HellionChat.Code;
|
|
using HellionChat.Resources;
|
|
|
|
namespace HellionChat.Util;
|
|
|
|
public static class TabsUtil
|
|
{
|
|
public static Dictionary<ChatType, (ChatSource, ChatSource)> AllChannels()
|
|
{
|
|
var channels = new Dictionary<ChatType, (ChatSource, ChatSource)>();
|
|
foreach (var chatType in Enum.GetValues<ChatType>())
|
|
channels[chatType] = (ChatSourceExt.All, ChatSourceExt.All);
|
|
|
|
return channels;
|
|
}
|
|
|
|
// Public-chat-only: Say, Yell, Shout. Group/FC/Linkshell and gameplay
|
|
// events live in their own tabs to keep General focused on open-world chat.
|
|
public static Tab VanillaGeneral =>
|
|
new()
|
|
{
|
|
Name = Language.Tabs_Presets_General,
|
|
SelectedChannels = new Dictionary<ChatType, (ChatSource, ChatSource)>
|
|
{
|
|
[ChatType.Say] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Yell] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Shout] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
},
|
|
};
|
|
|
|
public static Tab VanillaEvent =>
|
|
new()
|
|
{
|
|
Name = Language.Tabs_Presets_Event,
|
|
SelectedChannels = new Dictionary<ChatType, (ChatSource, ChatSource)>
|
|
{
|
|
[ChatType.NpcDialogue] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
},
|
|
};
|
|
|
|
public static Tab VanillaTellExclusive =>
|
|
new()
|
|
{
|
|
Name = Language.Tabs_Presets_Tell,
|
|
SelectedChannels = new Dictionary<ChatType, (ChatSource, ChatSource)>
|
|
{
|
|
[ChatType.TellIncoming] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.TellOutgoing] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
},
|
|
Channel = InputChannel.Tell,
|
|
AllSenderMessages = true,
|
|
};
|
|
|
|
// Hellion tab presets. Names live in HellionStrings (EN+DE) so upstream
|
|
// resource files stay untouched.
|
|
public static Tab HellionFreeCompany =>
|
|
new()
|
|
{
|
|
Name = HellionStrings.Tabs_Presets_FreeCompany,
|
|
SelectedChannels = new Dictionary<ChatType, (ChatSource, ChatSource)>
|
|
{
|
|
[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, (ChatSource, ChatSource)>
|
|
{
|
|
[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),
|
|
},
|
|
// No input-channel switch: Party pulls in multiple channel types
|
|
// and auto-routing /party would surprise users wanting /alliance or /pvpteam.
|
|
};
|
|
|
|
public static Tab HellionBeginner =>
|
|
new()
|
|
{
|
|
Name = HellionStrings.Tabs_Presets_Beginner,
|
|
SelectedChannels = new Dictionary<ChatType, (ChatSource, ChatSource)>
|
|
{
|
|
[ChatType.NoviceNetwork] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.NoviceNetworkSystem] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
},
|
|
Channel = InputChannel.NoviceNetwork,
|
|
};
|
|
|
|
public static Tab HellionSystem =>
|
|
new()
|
|
{
|
|
Name = HellionStrings.Tabs_Presets_System,
|
|
SelectedChannels = new Dictionary<ChatType, (ChatSource, ChatSource)>
|
|
{
|
|
// System noise
|
|
[ChatType.Debug] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Urgent] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Notice] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.System] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Error] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Echo] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.GatheringSystem] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.NoviceNetworkSystem] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.BattleSystem] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
// Login/logout/announcement noise
|
|
[ChatType.NpcAnnouncement] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.FreeCompanyAnnouncement] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.FreeCompanyLoginLogout] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.PvpTeamAnnouncement] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.PvpTeamLoginLogout] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.RetainerSale] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.PeriodicRecruitmentNotification] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
// Gameplay event streams
|
|
[ChatType.NpcDialogue] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.LootNotice] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.LootRoll] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Crafting] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Gathering] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
// Misc
|
|
[ChatType.Progress] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.RandomNumber] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Orchestrion] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.MessageBook] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Alarm] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Sign] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.GlamourNotifications] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
},
|
|
};
|
|
|
|
public static Tab HellionLinkshell =>
|
|
new()
|
|
{
|
|
Name = HellionStrings.Tabs_Presets_Linkshell,
|
|
SelectedChannels = new Dictionary<ChatType, (ChatSource, ChatSource)>
|
|
{
|
|
[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<ChatType, (ChatSource, ChatSource)> MostlyPlayer =>
|
|
new()
|
|
{
|
|
// Special
|
|
[ChatType.Debug] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Urgent] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Notice] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
// Chat
|
|
[ChatType.Say] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Yell] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Shout] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.TellIncoming] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.TellOutgoing] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Party] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.CrossParty] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Alliance] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.FreeCompany] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.PvpTeam] = (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),
|
|
[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.NoviceNetwork] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.StandardEmote] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.CustomEmote] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
// Announcements
|
|
[ChatType.System] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Error] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.Echo] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.NoviceNetworkSystem] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.FreeCompanyAnnouncement] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.PvpTeamAnnouncement] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.FreeCompanyLoginLogout] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.PvpTeamLoginLogout] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.RandomNumber] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
[ChatType.MessageBook] = (ChatSourceExt.All, ChatSourceExt.All),
|
|
};
|
|
}
|