diff --git a/ChatTwo/Resources/HellionStrings.Designer.cs b/ChatTwo/Resources/HellionStrings.Designer.cs
index 25e8be5..b1cb5ba 100644
--- a/ChatTwo/Resources/HellionStrings.Designer.cs
+++ b/ChatTwo/Resources/HellionStrings.Designer.cs
@@ -203,4 +203,10 @@ internal class HellionStrings
internal static string Settings_Tab_Window => Get(nameof(Settings_Tab_Window));
internal static string Settings_Tab_Chat => Get(nameof(Settings_Tab_Chat));
internal static string Settings_Tab_Information => Get(nameof(Settings_Tab_Information));
+
+ // Hellion Chat — General-Tab section headings
+ internal static string Settings_General_Input_Heading => Get(nameof(Settings_General_Input_Heading));
+ internal static string Settings_General_Audio_Heading => Get(nameof(Settings_General_Audio_Heading));
+ internal static string Settings_General_Performance_Heading => Get(nameof(Settings_General_Performance_Heading));
+ internal static string Settings_General_Language_Heading => Get(nameof(Settings_General_Language_Heading));
}
diff --git a/ChatTwo/Resources/HellionStrings.de.resx b/ChatTwo/Resources/HellionStrings.de.resx
index 848c0d7..1559d9a 100644
--- a/ChatTwo/Resources/HellionStrings.de.resx
+++ b/ChatTwo/Resources/HellionStrings.de.resx
@@ -463,4 +463,18 @@
Über
+
+
+
+ Eingabe
+
+
+ Audio & Benachrichtigungen
+
+
+ Performance
+
+
+ Sprache & Eingabe-Hilfen
+
diff --git a/ChatTwo/Resources/HellionStrings.resx b/ChatTwo/Resources/HellionStrings.resx
index dca59cb..78f1dbd 100644
--- a/ChatTwo/Resources/HellionStrings.resx
+++ b/ChatTwo/Resources/HellionStrings.resx
@@ -463,4 +463,18 @@
Information
+
+
+
+ Input
+
+
+ Audio & Notifications
+
+
+ Performance
+
+
+ Language & Input Helpers
+
diff --git a/ChatTwo/Ui/SettingsTabs/General.cs b/ChatTwo/Ui/SettingsTabs/General.cs
index ce3cab5..60ea048 100644
--- a/ChatTwo/Ui/SettingsTabs/General.cs
+++ b/ChatTwo/Ui/SettingsTabs/General.cs
@@ -20,6 +20,139 @@ internal sealed class General : ISettingsTab
public void Draw(bool changed)
{
- // Settings ziehen in Plan-Task 3 ein.
+ DrawInputSection();
+ ImGui.Spacing();
+ DrawAudioSection();
+ ImGui.Spacing();
+ DrawPerformanceSection();
+ ImGui.Spacing();
+ DrawLanguageSection();
+ }
+
+ private void DrawInputSection()
+ {
+ using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Input_Heading);
+ if (!tree.Success)
+ {
+ return;
+ }
+
+ using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
+ {
+ ImGui.Checkbox(Language.Options_KeepInputFocus_Name, ref Mutable.KeepInputFocus);
+ ImGuiUtil.HelpMarker(Language.Options_KeepInputFocus_Description);
+
+ ImGui.Spacing();
+ ImGui.TextUnformatted(Language.Options_ChatTabForwardKeybind_Name);
+ ImGui.SetNextItemWidth(-1);
+ ImGuiUtil.KeybindInput("ChatTabForwardKeybind", ref Mutable.ChatTabForward);
+
+ ImGui.TextUnformatted(Language.Options_ChatTabBackwardKeybind_Name);
+ ImGui.SetNextItemWidth(-1);
+ ImGuiUtil.KeybindInput("ChatTabBackwardKeybind", ref Mutable.ChatTabBackward);
+ }
+ }
+
+ private void DrawAudioSection()
+ {
+ using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Audio_Heading);
+ if (!tree.Success)
+ {
+ return;
+ }
+
+ using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
+ {
+ ImGui.Checkbox(Language.Options_PlaySounds_Name, ref Mutable.PlaySounds);
+ ImGuiUtil.HelpMarker(Language.Options_PlaySounds_Description);
+
+ ImGui.Checkbox(Language.Options_ShowNoviceNetwork_Name, ref Mutable.ShowNoviceNetwork);
+ ImGuiUtil.HelpMarker(Language.Options_ShowNoviceNetwork_Description);
+ }
+ }
+
+ private void DrawPerformanceSection()
+ {
+ using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Performance_Heading);
+ if (!tree.Success)
+ {
+ return;
+ }
+
+ using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
+ {
+ if (ImGuiUtil.InputIntVertical(Language.Options_MaxLinesToShow_Name, Language.Options_MaxLinesToShow_Description, ref Mutable.MaxLinesToRender))
+ {
+ Mutable.MaxLinesToRender = Math.Clamp(Mutable.MaxLinesToRender, 1, 10_000);
+ }
+ }
+ }
+
+ private void DrawLanguageSection()
+ {
+ using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Language_Heading);
+ if (!tree.Success)
+ {
+ return;
+ }
+
+ using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false))
+ {
+ using (var combo = ImGuiUtil.BeginComboVertical(Language.Options_Language_Name, Mutable.LanguageOverride.Name()))
+ {
+ if (combo.Success)
+ {
+ foreach (var language in Enum.GetValues())
+ {
+ if (ImGui.Selectable(language.Name()))
+ {
+ Mutable.LanguageOverride = language;
+ }
+ }
+ }
+ }
+ ImGuiUtil.HelpMarker(string.Format(Language.Options_Language_Description, Plugin.PluginName));
+ ImGui.Spacing();
+
+ using (var combo = ImGuiUtil.BeginComboVertical(Language.Options_CommandHelpSide_Name, Mutable.CommandHelpSide.Name()))
+ {
+ if (combo.Success)
+ {
+ foreach (var side in Enum.GetValues())
+ {
+ if (ImGui.Selectable(side.Name(), Mutable.CommandHelpSide == side))
+ {
+ Mutable.CommandHelpSide = side;
+ }
+ }
+ }
+ }
+ ImGuiUtil.HelpMarker(string.Format(Language.Options_CommandHelpSide_Description, Plugin.PluginName));
+ ImGui.Spacing();
+
+ using (var combo = ImGuiUtil.BeginComboVertical(Language.Options_KeybindMode_Name, Mutable.KeybindMode.Name()))
+ {
+ if (combo.Success)
+ {
+ foreach (var mode in Enum.GetValues())
+ {
+ if (ImGui.Selectable(mode.Name(), Mutable.KeybindMode == mode))
+ {
+ Mutable.KeybindMode = mode;
+ }
+
+ if (ImGui.IsItemHovered())
+ {
+ ImGuiUtil.Tooltip(mode.Tooltip() ?? "");
+ }
+ }
+ }
+ }
+ ImGuiUtil.HelpMarker(string.Format(Language.Options_KeybindMode_Description, Plugin.PluginName));
+ ImGui.Spacing();
+
+ ImGui.Checkbox(Language.Options_SortAutoTranslate_Name, ref Mutable.SortAutoTranslate);
+ ImGuiUtil.HelpMarker(Language.Options_SortAutoTranslate_Description);
+ }
}
}