style(format): apply csharpier and markdownlint reflow
This commit is contained in:
@@ -196,6 +196,7 @@ public class Configuration : IPluginConfiguration
|
||||
public bool CollapseKeepUniqueLinks;
|
||||
public bool SymbolPickerEnabled = true;
|
||||
public bool PlaySounds = true;
|
||||
|
||||
// AUDIO-1: playback volume (0-1) for the three bundled custom sounds.
|
||||
public float CustomSoundVolume = 0.5f;
|
||||
|
||||
|
||||
@@ -22,7 +22,8 @@ public enum NameFormMode
|
||||
|
||||
public static class NameDisplayModeExt
|
||||
{
|
||||
public static string Name(this WorldSuffixMode mode) => mode switch
|
||||
public static string Name(this WorldSuffixMode mode) =>
|
||||
mode switch
|
||||
{
|
||||
WorldSuffixMode.Never => HellionStrings.NameDisplay_WorldSuffix_Never,
|
||||
WorldSuffixMode.OtherWorldOnly => HellionStrings.NameDisplay_WorldSuffix_OtherWorldOnly,
|
||||
@@ -30,7 +31,8 @@ public static class NameDisplayModeExt
|
||||
_ => mode.ToString(),
|
||||
};
|
||||
|
||||
public static string Name(this NameFormMode mode) => mode switch
|
||||
public static string Name(this NameFormMode mode) =>
|
||||
mode switch
|
||||
{
|
||||
NameFormMode.Full => HellionStrings.NameDisplay_NameForm_Full,
|
||||
NameFormMode.FirstNameOnly => HellionStrings.NameDisplay_NameForm_FirstNameOnly,
|
||||
|
||||
@@ -90,20 +90,27 @@ public sealed class ChatInputBar
|
||||
|
||||
// UI-11: disclosure warning, visible only while an armed buffer is held
|
||||
// unchanged. Editing the buffer clears the condition automatically.
|
||||
if (Plugin.Config.NotifyPluginDisclosure
|
||||
if (
|
||||
Plugin.Config.NotifyPluginDisclosure
|
||||
&& _disclosureArmedBuffer is not null
|
||||
&& _state.Buffer == _disclosureArmedBuffer)
|
||||
&& _state.Buffer == _disclosureArmedBuffer
|
||||
)
|
||||
{
|
||||
ImGui.TextColored(ImGuiColors.DalamudYellow, HellionStrings.ChatInput_PluginDisclosure_Warning);
|
||||
ImGui.TextColored(
|
||||
ImGuiColors.DalamudYellow,
|
||||
HellionStrings.ChatInput_PluginDisclosure_Warning
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// TEST-MIRROR: ../_Helpers/CompactInputSubmitter.cs
|
||||
private void SubmitCompact(Tab tab)
|
||||
{
|
||||
if (Plugin.Config.NotifyPluginDisclosure
|
||||
if (
|
||||
Plugin.Config.NotifyPluginDisclosure
|
||||
&& _state.Buffer != _disclosureArmedBuffer
|
||||
&& PluginDisclosureScanner.ContainsPrivateUseGlyph(_state.Buffer))
|
||||
&& PluginDisclosureScanner.ContainsPrivateUseGlyph(_state.Buffer)
|
||||
)
|
||||
{
|
||||
// First send attempt on this exact buffer: arm and hold. The buffer
|
||||
// is kept, the warning renders, the user can press Enter again.
|
||||
|
||||
@@ -5,10 +5,10 @@ using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using Dalamud.Bindings.ImGui;
|
||||
using Dalamud.Game.Addon.Lifecycle;
|
||||
using Dalamud.Interface.Colors;
|
||||
using Dalamud.Game.Text.SeStringHandling;
|
||||
using Dalamud.Game.Text.SeStringHandling.Payloads;
|
||||
using Dalamud.Interface;
|
||||
using Dalamud.Interface.Colors;
|
||||
using Dalamud.Interface.Style;
|
||||
using Dalamud.Interface.Utility;
|
||||
using Dalamud.Interface.Utility.Raii;
|
||||
@@ -721,9 +721,7 @@ public sealed class ChatLogWindow : Window
|
||||
// Window.IsFocused holds last frame's RootAndChildWindows focus, set
|
||||
// by Dalamud's WindowHost after Begin(). One-frame latency is
|
||||
// accepted.
|
||||
BgAlpha = IsFocused
|
||||
? Plugin.Config.WindowOpacity
|
||||
: Plugin.Config.WindowOpacityInactive;
|
||||
BgAlpha = IsFocused ? Plugin.Config.WindowOpacity : Plugin.Config.WindowOpacityInactive;
|
||||
}
|
||||
|
||||
LastViewport = ImGui.GetWindowViewport().Handle;
|
||||
@@ -1101,9 +1099,11 @@ public sealed class ChatLogWindow : Window
|
||||
|
||||
if (ImGui.IsKeyDown(ImGuiKey.Enter) || ImGui.IsKeyDown(ImGuiKey.KeypadEnter))
|
||||
{
|
||||
if (Plugin.Config.NotifyPluginDisclosure
|
||||
if (
|
||||
Plugin.Config.NotifyPluginDisclosure
|
||||
&& Chat != _disclosureArmedBufferMain
|
||||
&& PluginDisclosureScanner.ContainsPrivateUseGlyph(Chat))
|
||||
&& PluginDisclosureScanner.ContainsPrivateUseGlyph(Chat)
|
||||
)
|
||||
{
|
||||
// First send attempt on this exact buffer: arm and hold.
|
||||
// The warning renders below the input.
|
||||
@@ -1127,11 +1127,16 @@ public sealed class ChatLogWindow : Window
|
||||
// UI-11: disclosure warning for the main-window input, mirrors the
|
||||
// ChatInputBar path. Visible only while the armed buffer is held
|
||||
// unchanged; editing the buffer clears the condition.
|
||||
if (Plugin.Config.NotifyPluginDisclosure
|
||||
if (
|
||||
Plugin.Config.NotifyPluginDisclosure
|
||||
&& _disclosureArmedBufferMain is not null
|
||||
&& Chat == _disclosureArmedBufferMain)
|
||||
&& Chat == _disclosureArmedBufferMain
|
||||
)
|
||||
{
|
||||
ImGui.TextColored(ImGuiColors.DalamudYellow, HellionStrings.ChatInput_PluginDisclosure_Warning);
|
||||
ImGui.TextColored(
|
||||
ImGuiColors.DalamudYellow,
|
||||
HellionStrings.ChatInput_PluginDisclosure_Warning
|
||||
);
|
||||
}
|
||||
|
||||
// Process keybinds that have modifiers while the chat is focused.
|
||||
|
||||
@@ -21,8 +21,7 @@ internal sealed class Appearance : ISettingsTab
|
||||
|
||||
private string? _applyDismissedFor;
|
||||
|
||||
public string Name =>
|
||||
HellionStrings.Settings_Tab_Appearance + "###tabs-appearance";
|
||||
public string Name => HellionStrings.Settings_Tab_Appearance + "###tabs-appearance";
|
||||
|
||||
internal Appearance(Plugin plugin, Configuration mutable, ILogger<Appearance> logger)
|
||||
{
|
||||
@@ -50,7 +49,8 @@ internal sealed class Appearance : ISettingsTab
|
||||
|
||||
private void DrawThemeSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Theme);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -248,7 +248,8 @@ internal sealed class Appearance : ISettingsTab
|
||||
|
||||
private void DrawFontsSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Fonts);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -407,7 +408,8 @@ internal sealed class Appearance : ISettingsTab
|
||||
|
||||
private void DrawColoursSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Colours);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -535,7 +537,8 @@ internal sealed class Appearance : ISettingsTab
|
||||
|
||||
private void DrawWindowStyleSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_WindowStyle);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -616,7 +619,9 @@ internal sealed class Appearance : ISettingsTab
|
||||
{
|
||||
Mutable.WindowOpacityInactive = inactiveOpacityPercent / 100f;
|
||||
}
|
||||
ImGuiUtil.HelpMarker(HellionStrings.Settings_ThemeAndLayout_WindowOpacityInactive_Description);
|
||||
ImGuiUtil.HelpMarker(
|
||||
HellionStrings.Settings_ThemeAndLayout_WindowOpacityInactive_Description
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -624,7 +629,8 @@ internal sealed class Appearance : ISettingsTab
|
||||
|
||||
private void DrawTimestampSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Timestamps);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -667,7 +673,8 @@ internal sealed class Appearance : ISettingsTab
|
||||
|
||||
private void DrawAnimationsSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Animations);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
|
||||
@@ -57,7 +57,8 @@ internal sealed class Chat : ISettingsTab
|
||||
|
||||
private void DrawMessagesSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Messages);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -135,7 +136,8 @@ internal sealed class Chat : ISettingsTab
|
||||
|
||||
private void DrawInputPreviewSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_InputPreview);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -185,7 +187,8 @@ internal sealed class Chat : ISettingsTab
|
||||
|
||||
private void DrawAutoTellTabsSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_AutoTellTabs);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -254,7 +257,8 @@ internal sealed class Chat : ISettingsTab
|
||||
|
||||
private void DrawEmotesSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Emotes);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -369,7 +373,8 @@ internal sealed class Chat : ISettingsTab
|
||||
|
||||
private void DrawLinksTooltipsSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_LinksTooltips);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -403,7 +408,8 @@ internal sealed class Chat : ISettingsTab
|
||||
|
||||
private void DrawNoviceNetworkSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_NoviceNetwork);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
|
||||
@@ -152,22 +152,28 @@ internal sealed class DataAndPrivacy : ISettingsTab
|
||||
if (sectionJustEntered)
|
||||
ShowAdvanced = ImGui.GetIO().KeyShift;
|
||||
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
DrawPrivacyFilterSection();
|
||||
ImGui.Spacing();
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
DrawStorageSection();
|
||||
ImGui.Spacing();
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
DrawRetentionSection();
|
||||
ImGui.Spacing();
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
DrawCleanupSection();
|
||||
ImGui.Spacing();
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
DrawExportSection();
|
||||
ImGui.Spacing();
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
DrawDatabaseSection();
|
||||
}
|
||||
|
||||
@@ -960,7 +966,9 @@ internal sealed class DataAndPrivacy : ISettingsTab
|
||||
return;
|
||||
|
||||
ImGui.Spacing();
|
||||
using var advTree = ImRaii.TreeNode(HellionStrings.Settings_DataManagement_Advanced_Heading);
|
||||
using var advTree = ImRaii.TreeNode(
|
||||
HellionStrings.Settings_DataManagement_Advanced_Heading
|
||||
);
|
||||
if (!advTree.Success)
|
||||
return;
|
||||
|
||||
|
||||
@@ -33,7 +33,8 @@ internal sealed class General : ISettingsTab
|
||||
private void DrawInputSection(bool sectionJustEntered)
|
||||
{
|
||||
// Collapse every time the tab is freshly entered so state doesn't bleed across sessions.
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Input);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -86,7 +87,8 @@ internal sealed class General : ISettingsTab
|
||||
private void DrawSoundSection(bool sectionJustEntered)
|
||||
{
|
||||
// Collapse every time the tab is freshly entered so state doesn't bleed across sessions.
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Sound);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -113,14 +115,19 @@ internal sealed class General : ISettingsTab
|
||||
Mutable.CustomSoundVolume = customSoundVolumePercent / 100f;
|
||||
}
|
||||
// Show the functional description and the per-tab navigation hint together.
|
||||
ImGuiUtil.HelpMarker(HellionStrings.Settings_General_CustomSoundVolume_Description + "\n\n" + HellionStrings.Settings_Section_Sound_TabsHint);
|
||||
ImGuiUtil.HelpMarker(
|
||||
HellionStrings.Settings_General_CustomSoundVolume_Description
|
||||
+ "\n\n"
|
||||
+ HellionStrings.Settings_Section_Sound_TabsHint
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawLanguageSection(bool sectionJustEntered)
|
||||
{
|
||||
// Collapse every time the tab is freshly entered so state doesn't bleed across sessions.
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Language);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
@@ -191,7 +198,8 @@ internal sealed class General : ISettingsTab
|
||||
private void DrawPerformanceSection(bool sectionJustEntered)
|
||||
{
|
||||
// Collapse every time the tab is freshly entered so state doesn't bleed across sessions.
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Performance);
|
||||
if (!tree.Success)
|
||||
return;
|
||||
|
||||
@@ -177,8 +177,13 @@ internal sealed class Tabs : ISettingsTab
|
||||
|
||||
// ── Sub-section: Channels ─────────────────────────────────────────
|
||||
// First because it answers "what does this tab collect?" — most important.
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
using (var secChannels = ImRaii.TreeNode(HellionStrings.Settings_Section_Tab_Channels + $"##sec-channels-{i}"))
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using (
|
||||
var secChannels = ImRaii.TreeNode(
|
||||
HellionStrings.Settings_Section_Tab_Channels + $"##sec-channels-{i}"
|
||||
)
|
||||
)
|
||||
{
|
||||
if (secChannels.Success)
|
||||
{
|
||||
@@ -195,8 +200,13 @@ internal sealed class Tabs : ISettingsTab
|
||||
ImGui.Spacing();
|
||||
|
||||
// ── Sub-section: Display ──────────────────────────────────────────
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
using (var secDisplay = ImRaii.TreeNode(HellionStrings.Settings_Section_Tab_Display + $"##sec-display-{i}"))
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using (
|
||||
var secDisplay = ImRaii.TreeNode(
|
||||
HellionStrings.Settings_Section_Tab_Display + $"##sec-display-{i}"
|
||||
)
|
||||
)
|
||||
{
|
||||
if (secDisplay.Success)
|
||||
{
|
||||
@@ -226,15 +236,23 @@ internal sealed class Tabs : ISettingsTab
|
||||
|
||||
// Only relevant when the global hide-when-inactive is on.
|
||||
if (Mutable.HideWhenInactive)
|
||||
ImGui.Checkbox(Language.Options_Tabs_InactivityBehaviour, ref tab.UnhideOnActivity);
|
||||
ImGui.Checkbox(
|
||||
Language.Options_Tabs_InactivityBehaviour,
|
||||
ref tab.UnhideOnActivity
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
ImGui.Spacing();
|
||||
|
||||
// ── Sub-section: Notification ─────────────────────────────────────
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
using (var secNotif = ImRaii.TreeNode(HellionStrings.Settings_Section_Tab_Notification + $"##sec-notif-{i}"))
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using (
|
||||
var secNotif = ImRaii.TreeNode(
|
||||
HellionStrings.Settings_Section_Tab_Notification + $"##sec-notif-{i}"
|
||||
)
|
||||
)
|
||||
{
|
||||
if (secNotif.Success)
|
||||
{
|
||||
@@ -308,7 +326,10 @@ internal sealed class Tabs : ISettingsTab
|
||||
}
|
||||
else
|
||||
{
|
||||
Plugin.CustomAudioPlayer.Play((int)previewId - 16, Mutable.CustomSoundVolume);
|
||||
Plugin.CustomAudioPlayer.Play(
|
||||
(int)previewId - 16,
|
||||
Mutable.CustomSoundVolume
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -340,15 +361,24 @@ internal sealed class Tabs : ISettingsTab
|
||||
Mutable.CustomSoundVolume = customSoundVolumePercent / 100f;
|
||||
}
|
||||
// Applies globally — same value as in General → Sound.
|
||||
ImGuiUtil.HelpMarker(HellionStrings.Settings_General_CustomSoundVolume_Description + "\n\n" + HellionStrings.Settings_Section_Tab_Volume_AllTabsHint);
|
||||
ImGuiUtil.HelpMarker(
|
||||
HellionStrings.Settings_General_CustomSoundVolume_Description
|
||||
+ "\n\n"
|
||||
+ HellionStrings.Settings_Section_Tab_Volume_AllTabsHint
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
ImGui.Spacing();
|
||||
|
||||
// ── Sub-section: Input ────────────────────────────────────────────
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
using (var secInput = ImRaii.TreeNode(HellionStrings.Settings_Section_Tab_Input + $"##sec-input-{i}"))
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using (
|
||||
var secInput = ImRaii.TreeNode(
|
||||
HellionStrings.Settings_Section_Tab_Input + $"##sec-input-{i}"
|
||||
)
|
||||
)
|
||||
{
|
||||
if (secInput.Success)
|
||||
{
|
||||
@@ -358,7 +388,8 @@ internal sealed class Tabs : ISettingsTab
|
||||
if (!tab.InputDisabled)
|
||||
{
|
||||
var input =
|
||||
tab.Channel?.ToChatType().Name() ?? Language.Options_Tabs_NoInputChannel;
|
||||
tab.Channel?.ToChatType().Name()
|
||||
?? Language.Options_Tabs_NoInputChannel;
|
||||
using (
|
||||
var combo = ImGuiUtil.BeginComboVertical(
|
||||
Language.Options_Tabs_InputChannel,
|
||||
@@ -390,7 +421,10 @@ internal sealed class Tabs : ISettingsTab
|
||||
var player = Plugin.ObjectTable.LocalPlayer;
|
||||
if (tab.Channel == InputChannel.Tell && player != null)
|
||||
{
|
||||
ImGui.Checkbox(Language.Options_Tabs_SenderMessages, ref tab.AllSenderMessages);
|
||||
ImGui.Checkbox(
|
||||
Language.Options_Tabs_SenderMessages,
|
||||
ref tab.AllSenderMessages
|
||||
);
|
||||
ImGuiUtil.HelpText(Language.Options_Help_SenderMessages);
|
||||
|
||||
var worlds = Sheets
|
||||
@@ -444,7 +478,9 @@ internal sealed class Tabs : ISettingsTab
|
||||
)
|
||||
{
|
||||
selectedWorld = idx;
|
||||
tab.TellTarget.World = worlds[selectedWorld].RowId;
|
||||
tab.TellTarget.World = worlds[
|
||||
selectedWorld
|
||||
].RowId;
|
||||
}
|
||||
|
||||
if (lastDc == world.DataCenter.RowId)
|
||||
@@ -474,8 +510,13 @@ internal sealed class Tabs : ISettingsTab
|
||||
ImGui.Spacing();
|
||||
|
||||
// ── Sub-section: Pop-out window ───────────────────────────────────
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
using (var secPopOut = ImRaii.TreeNode(HellionStrings.Settings_Section_Tab_PopOut + $"##sec-popout-{i}"))
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using (
|
||||
var secPopOut = ImRaii.TreeNode(
|
||||
HellionStrings.Settings_Section_Tab_PopOut + $"##sec-popout-{i}"
|
||||
)
|
||||
)
|
||||
{
|
||||
if (secPopOut.Success)
|
||||
{
|
||||
@@ -500,7 +541,10 @@ internal sealed class Tabs : ISettingsTab
|
||||
ImGuiSliderFlags.AlwaysClamp
|
||||
);
|
||||
|
||||
ImGui.Checkbox(Language.Options_Tabs_IndependentHide, ref tab.IndependentHide);
|
||||
ImGui.Checkbox(
|
||||
Language.Options_Tabs_IndependentHide,
|
||||
ref tab.IndependentHide
|
||||
);
|
||||
if (tab.IndependentHide)
|
||||
{
|
||||
using var __ = ImRaii.PushIndent(10.0f);
|
||||
|
||||
@@ -29,7 +29,8 @@ internal sealed class Window : ISettingsTab
|
||||
|
||||
private void DrawHideSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Hide);
|
||||
if (!tree.Success)
|
||||
{
|
||||
@@ -83,7 +84,8 @@ internal sealed class Window : ISettingsTab
|
||||
|
||||
private void DrawInactivityHideSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_InactivityHide);
|
||||
if (!tree.Success)
|
||||
{
|
||||
@@ -166,7 +168,8 @@ internal sealed class Window : ISettingsTab
|
||||
|
||||
private void DrawFrameSection(bool sectionJustEntered)
|
||||
{
|
||||
if (sectionJustEntered) ImGui.SetNextItemOpen(false);
|
||||
if (sectionJustEntered)
|
||||
ImGui.SetNextItemOpen(false);
|
||||
using var tree = ImRaii.TreeNode(HellionStrings.Settings_Section_Frame);
|
||||
if (!tree.Success)
|
||||
{
|
||||
@@ -192,5 +195,4 @@ internal sealed class Window : ISettingsTab
|
||||
ImGuiUtil.HelpMarker(HellionStrings.Settings_Window_ResetPosition_Description);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -66,7 +66,12 @@ internal static class SenderNameDisplay
|
||||
var isHomeWorld = payload.World.RowId == Plugin.PlayerState.HomeWorld.RowId;
|
||||
|
||||
var formatted = SenderNameFormatter.Format(
|
||||
payload.PlayerName, worldName, isHomeWorld, formMode, suffixMode);
|
||||
payload.PlayerName,
|
||||
worldName,
|
||||
isHomeWorld,
|
||||
formMode,
|
||||
suffixMode
|
||||
);
|
||||
|
||||
// Render-only copy: replace the whole sender span (name text, world
|
||||
// text, and any cross-world icon) with one formatted chunk that keeps
|
||||
|
||||
@@ -14,7 +14,8 @@ public static class SenderNameFormatter
|
||||
string worldName,
|
||||
bool isHomeWorld,
|
||||
NameFormMode formMode,
|
||||
WorldSuffixMode suffixMode)
|
||||
WorldSuffixMode suffixMode
|
||||
)
|
||||
{
|
||||
var name = FormatName(fullName, formMode);
|
||||
|
||||
@@ -26,9 +27,7 @@ public static class SenderNameFormatter
|
||||
_ => !isHomeWorld,
|
||||
};
|
||||
|
||||
return showWorld && !string.IsNullOrEmpty(worldName)
|
||||
? $"{name}@{worldName}"
|
||||
: name;
|
||||
return showWorld && !string.IsNullOrEmpty(worldName) ? $"{name}@{worldName}" : name;
|
||||
}
|
||||
|
||||
private static string FormatName(string fullName, NameFormMode mode)
|
||||
|
||||
@@ -29,6 +29,7 @@ Channels, Data & Privacy, About). Each tab uses collapsible sections grouped by
|
||||
type; sections start collapsed on every tab-open.
|
||||
|
||||
Delivered from the originally-planned v1.5.5b bundle:
|
||||
|
||||
- **UI-7** — Sender-name display options: world-suffix mode (Never / Other worlds only / Always)
|
||||
and name-format mode (Full name / First name only / Initials). Lives in Chat → Messages.
|
||||
- **UI-11** — Pre-send warning when a message contains plugin-only symbols. Toggle in
|
||||
|
||||
Reference in New Issue
Block a user