diff --git a/HellionChat/Resources/HellionStrings.Designer.cs b/HellionChat/Resources/HellionStrings.Designer.cs index a6910a7..7f57fef 100644 --- a/HellionChat/Resources/HellionStrings.Designer.cs +++ b/HellionChat/Resources/HellionStrings.Designer.cs @@ -381,6 +381,10 @@ internal class HellionStrings internal static string Settings_Section_Cleanup => Get(nameof(Settings_Section_Cleanup)); internal static string Settings_Section_Export => Get(nameof(Settings_Section_Export)); internal static string Settings_Section_Telemetry => Get(nameof(Settings_Section_Telemetry)); + internal static string Settings_Section_AutoTranslate => Get(nameof(Settings_Section_AutoTranslate)); + internal static string Settings_Emotes_Block => Get(nameof(Settings_Emotes_Block)); + internal static string Settings_NotifyFailedTell_Name => Get(nameof(Settings_NotifyFailedTell_Name)); + internal static string Settings_NotifyFailedTell_Description => Get(nameof(Settings_NotifyFailedTell_Description)); internal static string Settings_Telemetry_None => Get(nameof(Settings_Telemetry_None)); internal static string Settings_Section_Database => Get(nameof(Settings_Section_Database)); diff --git a/HellionChat/Resources/HellionStrings.ca.resx b/HellionChat/Resources/HellionStrings.ca.resx index 13dfaa5..63004cc 100644 --- a/HellionChat/Resources/HellionStrings.ca.resx +++ b/HellionChat/Resources/HellionStrings.ca.resx @@ -1193,4 +1193,16 @@ No es recull cap telemetria. El complement no envia res sobre tu ni sobre el teu ús enlloc. + + Traducció automàtica + + + Bloqueja + + + Avisa quan un xiuxiueig no arriba + + + El joc només informa d'un xiuxiueig fallit al registre. Això mostra una notificació, perquè un missatge a algú desconnectat o d'un altre món no passi desapercebut. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.cs.resx b/HellionChat/Resources/HellionStrings.cs.resx index 434ff9d..9741bc4 100644 --- a/HellionChat/Resources/HellionStrings.cs.resx +++ b/HellionChat/Resources/HellionStrings.cs.resx @@ -1192,4 +1192,16 @@ Nesbírá se žádná telemetrie. Plugin nikam neposílá nic o vás ani o vašem používání. + + Automatický překlad + + + Zablokovat + + + Upozornit, když šeptání nedorazí + + + Hra hlásí neúspěšné šeptání jen v logu. Toto místo toho zobrazí upozornění, aby zpráva někomu offline nebo na jiném světě nezůstala bez povšimnutí. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.da.resx b/HellionChat/Resources/HellionStrings.da.resx index dc811a0..976d7e9 100644 --- a/HellionChat/Resources/HellionStrings.da.resx +++ b/HellionChat/Resources/HellionStrings.da.resx @@ -1192,4 +1192,16 @@ Der indsamles ingen telemetri. Pluginet sender intet om dig eller din brug nogen steder. + + Auto-oversættelse + + + Bloker + + + Advar når en tell ikke når frem + + + Spillet melder kun en mislykket tell i loggen. Dette giver en notifikation i stedet, så en besked til nogen offline eller på en anden verden ikke overses. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.de.resx b/HellionChat/Resources/HellionStrings.de.resx index b67c823..e075eee 100644 --- a/HellionChat/Resources/HellionStrings.de.resx +++ b/HellionChat/Resources/HellionStrings.de.resx @@ -1187,4 +1187,16 @@ Es wird keine Telemetrie erhoben. Das Plugin sendet nichts über dich oder deine Nutzung irgendwohin. + + Auto-Übersetzung + + + Sperren + + + Warnen, wenn ein Flüstern nicht ankommt + + + Das Spiel meldet ein fehlgeschlagenes Flüstern nur im Protokoll. Das hier zeigt stattdessen eine Benachrichtigung, damit eine Nachricht an jemanden offline oder auf einer anderen Welt nicht untergeht. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.el.resx b/HellionChat/Resources/HellionStrings.el.resx index 4da4420..ff8a3db 100644 --- a/HellionChat/Resources/HellionStrings.el.resx +++ b/HellionChat/Resources/HellionStrings.el.resx @@ -1192,4 +1192,16 @@ Δεν συλλέγεται τηλεμετρία. Το πρόσθετο δεν στέλνει πουθενά τίποτα για εσάς ή τη χρήση σας. + + Αυτόματη μετάφραση + + + Αποκλεισμός + + + Προειδοποίηση όταν ένα tell δεν φτάνει + + + Το παιχνίδι αναφέρει ένα αποτυχημένο tell μόνο στο αρχείο καταγραφής. Αυτό εμφανίζει ειδοποίηση, ώστε ένα μήνυμα σε κάποιον εκτός σύνδεσης ή σε άλλον κόσμο να μην περάσει απαρατήρητο. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.es.resx b/HellionChat/Resources/HellionStrings.es.resx index 71befcd..2fe74f7 100644 --- a/HellionChat/Resources/HellionStrings.es.resx +++ b/HellionChat/Resources/HellionStrings.es.resx @@ -1193,4 +1193,16 @@ No se recopila telemetría. El complemento no envía nada sobre ti ni sobre tu uso a ninguna parte. + + Traducción automática + + + Bloquear + + + Avisar cuando un susurro no llega + + + El juego solo informa de un susurro fallido en el registro. Esto muestra una notificación, para que un mensaje a alguien desconectado o de otro mundo no pase desapercibido. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.fi.resx b/HellionChat/Resources/HellionStrings.fi.resx index f30b33f..e5904d0 100644 --- a/HellionChat/Resources/HellionStrings.fi.resx +++ b/HellionChat/Resources/HellionStrings.fi.resx @@ -1192,4 +1192,16 @@ Telemetriaa ei kerätä. Lisäosa ei lähetä mitään sinusta tai käytöstäsi minnekään. + + Automaattikäännös + + + Estä + + + Varoita, kun kuiskaus ei mene perille + + + Peli ilmoittaa epäonnistuneesta kuiskauksesta vain lokissa. Tämä näyttää sen sijaan ilmoituksen, jottei viesti offline-tilassa tai toisessa maailmassa olevalle jää huomaamatta. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.fr.resx b/HellionChat/Resources/HellionStrings.fr.resx index 98e7e99..7790d0b 100644 --- a/HellionChat/Resources/HellionStrings.fr.resx +++ b/HellionChat/Resources/HellionStrings.fr.resx @@ -1193,4 +1193,16 @@ Aucune télémétrie n'est collectée. Le plugin n'envoie rien vous concernant ni sur votre utilisation. + + Traduction automatique + + + Bloquer + + + Avertir quand un message privé n'arrive pas + + + Le jeu ne signale un message privé échoué que dans le journal. Ceci affiche une notification à la place, pour qu'un message à quelqu'un hors ligne ou sur un autre monde ne passe pas inaperçu. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.hu.resx b/HellionChat/Resources/HellionStrings.hu.resx index 39e2de0..f27d9aa 100644 --- a/HellionChat/Resources/HellionStrings.hu.resx +++ b/HellionChat/Resources/HellionStrings.hu.resx @@ -1192,4 +1192,16 @@ Nem gyűjtünk telemetriát. A bővítmény semmit sem küld rólad vagy a használatodról sehová. + + Automatikus fordítás + + + Letiltás + + + Figyelmeztetés, ha egy suttogás nem érkezik meg + + + A játék csak a naplóban jelzi a sikertelen suttogást. Ez helyette értesítést jelenít meg, hogy egy offline vagy másik világon lévő játékosnak küldött üzenet ne maradjon észrevétlen. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.it.resx b/HellionChat/Resources/HellionStrings.it.resx index 93a4e63..31ebf8b 100644 --- a/HellionChat/Resources/HellionStrings.it.resx +++ b/HellionChat/Resources/HellionStrings.it.resx @@ -1193,4 +1193,16 @@ Non viene raccolta alcuna telemetria. Il plugin non invia nulla su di te o sul tuo utilizzo. + + Traduzione automatica + + + Blocca + + + Avvisa quando un sussurro non arriva + + + Il gioco segnala un sussurro fallito solo nel registro. Questo mostra invece una notifica, così un messaggio a qualcuno offline o su un altro mondo non passa inosservato. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.ja.resx b/HellionChat/Resources/HellionStrings.ja.resx index 2d292a1..a6648e5 100644 --- a/HellionChat/Resources/HellionStrings.ja.resx +++ b/HellionChat/Resources/HellionStrings.ja.resx @@ -1193,4 +1193,16 @@ テレメトリは収集していません。あなたや利用状況に関する情報をどこにも送信しません。 + + 定型文 + + + ブロック + + + テルが届かなかったときに警告する + + + ゲームはテルの失敗をログにしか表示しません。この設定では代わりに通知を出すので、オフラインや別ワールドの相手へのメッセージを見落としません。 + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.ko.resx b/HellionChat/Resources/HellionStrings.ko.resx index 31809e0..e362943 100644 --- a/HellionChat/Resources/HellionStrings.ko.resx +++ b/HellionChat/Resources/HellionStrings.ko.resx @@ -1193,4 +1193,16 @@ 원격 측정 정보를 수집하지 않습니다. 사용자나 사용 내역에 관한 어떤 정보도 전송하지 않습니다. + + 정형문 + + + 차단 + + + 귓속말이 전달되지 않으면 알림 + + + 게임은 귓속말 실패를 로그에만 표시합니다. 이 설정은 대신 알림을 띄워, 오프라인이거나 다른 월드에 있는 상대에게 보낸 메시지를 놓치지 않게 합니다. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.nb.resx b/HellionChat/Resources/HellionStrings.nb.resx index 4269ae8..777a644 100644 --- a/HellionChat/Resources/HellionStrings.nb.resx +++ b/HellionChat/Resources/HellionStrings.nb.resx @@ -1192,4 +1192,16 @@ Ingen telemetri samles inn. Programtillegget sender ingenting om deg eller bruken din noe sted. + + Auto-oversettelse + + + Blokker + + + Varsle når en tell ikke kommer frem + + + Spillet melder en mislykket tell bare i loggen. Dette gir et varsel i stedet, så en melding til noen offline eller på en annen verden ikke blir oversett. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.nl.resx b/HellionChat/Resources/HellionStrings.nl.resx index 2d325b7..974a2d8 100644 --- a/HellionChat/Resources/HellionStrings.nl.resx +++ b/HellionChat/Resources/HellionStrings.nl.resx @@ -1193,4 +1193,16 @@ Er wordt geen telemetrie verzameld. De plug-in stuurt niets over jou of je gebruik ergens heen. + + Automatische vertaling + + + Blokkeren + + + Waarschuwen als een tell niet aankomt + + + Het spel meldt een mislukte tell alleen in het log. Dit toont in plaats daarvan een melding, zodat een bericht aan iemand offline of op een andere wereld niet onopgemerkt blijft. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.pl.resx b/HellionChat/Resources/HellionStrings.pl.resx index a0bddf8..c6d2962 100644 --- a/HellionChat/Resources/HellionStrings.pl.resx +++ b/HellionChat/Resources/HellionStrings.pl.resx @@ -1192,4 +1192,16 @@ Nie zbieramy żadnej telemetrii. Wtyczka nigdzie nie wysyła informacji o tobie ani o twoim użytkowaniu. + + Autotłumaczenie + + + Zablokuj + + + Ostrzegaj, gdy szept nie dotrze + + + Gra zgłasza nieudany szept tylko w dzienniku. To zamiast tego wyświetla powiadomienie, żeby wiadomość do kogoś offline lub z innego świata nie umknęła. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.pt-BR.resx b/HellionChat/Resources/HellionStrings.pt-BR.resx index 8bc2429..3e43666 100644 --- a/HellionChat/Resources/HellionStrings.pt-BR.resx +++ b/HellionChat/Resources/HellionStrings.pt-BR.resx @@ -1193,4 +1193,16 @@ Nenhuma telemetria é coletada. O plugin não envia nada sobre você ou seu uso para lugar nenhum. + + Tradução automática + + + Bloquear + + + Avisar quando um sussurro não chega + + + O jogo relata um sussurro que falhou apenas no registro. Isto mostra uma notificação, para que uma mensagem a alguém offline ou de outro mundo não passe despercebida. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.pt-PT.resx b/HellionChat/Resources/HellionStrings.pt-PT.resx index 57383ab..4e0c160 100644 --- a/HellionChat/Resources/HellionStrings.pt-PT.resx +++ b/HellionChat/Resources/HellionStrings.pt-PT.resx @@ -1192,4 +1192,16 @@ Não é recolhida qualquer telemetria. O plugin não envia nada sobre si ou sobre a sua utilização. + + Tradução automática + + + Bloquear + + + Avisar quando um sussurro não chega + + + O jogo comunica um sussurro falhado apenas no registo. Isto mostra uma notificação, para que uma mensagem a alguém offline ou de outro mundo não passe despercebida. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.resx b/HellionChat/Resources/HellionStrings.resx index 7cf4df6..5e4e12f 100644 --- a/HellionChat/Resources/HellionStrings.resx +++ b/HellionChat/Resources/HellionStrings.resx @@ -1213,4 +1213,16 @@ No telemetry is collected. The plugin sends nothing about you or your usage anywhere. + + Auto-translate + + + Block + + + Warn when a tell does not arrive + + + The game reports a failed tell in the log only. This raises a notification instead, so a message to someone offline or on another world does not go unnoticed. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.ro.resx b/HellionChat/Resources/HellionStrings.ro.resx index 145c502..5c723db 100644 --- a/HellionChat/Resources/HellionStrings.ro.resx +++ b/HellionChat/Resources/HellionStrings.ro.resx @@ -1193,4 +1193,16 @@ Nu se colectează telemetrie. Extensia nu trimite nimic despre tine sau despre utilizarea ta nicăieri. + + Traducere automată + + + Blochează + + + Avertizează când un mesaj privat nu ajunge + + + Jocul raportează un mesaj privat eșuat doar în jurnal. Aceasta afișează în schimb o notificare, ca un mesaj către cineva offline sau de pe altă lume să nu treacă neobservat. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.ru.resx b/HellionChat/Resources/HellionStrings.ru.resx index e7b8baf..4bbc887 100644 --- a/HellionChat/Resources/HellionStrings.ru.resx +++ b/HellionChat/Resources/HellionStrings.ru.resx @@ -1193,4 +1193,16 @@ Телеметрия не собирается. Плагин никуда не отправляет данные о вас или о вашем использовании. + + Автоперевод + + + Заблокировать + + + Предупреждать, когда шёпот не доходит + + + Игра сообщает о недоставленном шёпоте только в журнале. Здесь вместо этого показывается уведомление, чтобы сообщение офлайн-игроку или игроку с другого мира не осталось незамеченным. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.sv.resx b/HellionChat/Resources/HellionStrings.sv.resx index b8f5610..30c72ff 100644 --- a/HellionChat/Resources/HellionStrings.sv.resx +++ b/HellionChat/Resources/HellionStrings.sv.resx @@ -1193,4 +1193,16 @@ Ingen telemetri samlas in. Tillägget skickar ingenting om dig eller din användning någonstans. + + Autoöversättning + + + Blockera + + + Varna när ett viskmeddelande inte kommer fram + + + Spelet rapporterar ett misslyckat viskmeddelande bara i loggen. Det här visar en avisering i stället, så att ett meddelande till någon offline eller på en annan värld inte missas. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.tr.resx b/HellionChat/Resources/HellionStrings.tr.resx index 07d3675..3a3a05a 100644 --- a/HellionChat/Resources/HellionStrings.tr.resx +++ b/HellionChat/Resources/HellionStrings.tr.resx @@ -1192,4 +1192,16 @@ Hiçbir telemetri toplanmıyor. Eklenti sizinle veya kullanımınızla ilgili hiçbir şeyi hiçbir yere göndermiyor. + + Otomatik çeviri + + + Engelle + + + Bir fısıltı ulaşmadığında uyar + + + Oyun başarısız fısıltıyı yalnızca günlükte bildirir. Bu ayar bunun yerine bir bildirim gösterir, böylece çevrimdışı ya da başka dünyadaki birine gönderilen ileti gözden kaçmaz. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.uk.resx b/HellionChat/Resources/HellionStrings.uk.resx index 93695bb..e24af8a 100644 --- a/HellionChat/Resources/HellionStrings.uk.resx +++ b/HellionChat/Resources/HellionStrings.uk.resx @@ -1192,4 +1192,16 @@ Телеметрія не збирається. Плагін нікуди не надсилає дані про вас або про ваше використання. + + Автопереклад + + + Заблокувати + + + Попереджати, коли шепіт не доходить + + + Гра повідомляє про недоставлений шепіт лише в журналі. Це натомість показує сповіщення, щоб повідомлення офлайн-гравцю або гравцю з іншого світу не залишилося непоміченим. + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.zh-Hans.resx b/HellionChat/Resources/HellionStrings.zh-Hans.resx index e62ce07..668ff4e 100644 --- a/HellionChat/Resources/HellionStrings.zh-Hans.resx +++ b/HellionChat/Resources/HellionStrings.zh-Hans.resx @@ -1193,4 +1193,16 @@ 不收集任何遥测数据。插件不会向任何地方发送关于你或你使用情况的信息。 + + 自动翻译 + + + 屏蔽 + + + 密语未送达时提醒 + + + 游戏只在日志里提示密语发送失败。此设置改为弹出通知,让发给离线或异世界玩家的消息不会被忽略。 + \ No newline at end of file diff --git a/HellionChat/Resources/HellionStrings.zh-Hant.resx b/HellionChat/Resources/HellionStrings.zh-Hant.resx index 1baea38..e0c3fc3 100644 --- a/HellionChat/Resources/HellionStrings.zh-Hant.resx +++ b/HellionChat/Resources/HellionStrings.zh-Hant.resx @@ -1193,4 +1193,16 @@ 不收集任何遙測資料。外掛不會向任何地方傳送關於你或你使用情況的資訊。 + + 自動翻譯 + + + 封鎖 + + + 密語未送達時提醒 + + + 遊戲只在日誌裡提示密語傳送失敗。此設定改為彈出通知,讓發給離線或異世界玩家的訊息不會被忽略。 + \ No newline at end of file diff --git a/HellionChat/Ui/Components/Settings/Tabs/ChatTab.cs b/HellionChat/Ui/Components/Settings/Tabs/ChatTab.cs index eab173a..0116007 100644 --- a/HellionChat/Ui/Components/Settings/Tabs/ChatTab.cs +++ b/HellionChat/Ui/Components/Settings/Tabs/ChatTab.cs @@ -1,6 +1,10 @@ using Dalamud.Bindings.ImGui; +using Dalamud.Interface; +using Dalamud.Interface.Utility; +using Dalamud.Interface.Utility.Raii; using HellionChat.Resources; using HellionChat.Ui.StyleEngine; +using HellionChat.Util; namespace HellionChat.Ui.Components.Settings.Tabs; @@ -9,6 +13,8 @@ internal sealed class ChatTab private readonly Plugin _plugin; private readonly SettingsWidgets _w; + private string _blockedEmoteInput = string.Empty; + public ChatTab(Plugin plugin, TokenResolver resolver) { _plugin = plugin; @@ -34,17 +40,6 @@ internal sealed class ChatTab v => Plugin.Config.Use24HourClock = v ); - // PRIVACY.md names this switch as the way to stop the one outbound - // call the plugin makes, and it has had no control since May. A - // documented opt-out that only exists in the JSON is not an opt-out. - _w.ToggleRow( - ImGui.GetID("chat.display.emotes"u8), - Language.Options_ShowEmotes_Name, - Language.Options_ShowEmotes_Desc, - () => Plugin.Config.ShowEmotes, - v => Plugin.Config.ShowEmotes = v - ); - // Descriptions move out of the help markers and onto the row. They // were written to be read; a (?) the user has to hover is where an // explanation goes to be ignored. @@ -115,5 +110,95 @@ internal sealed class ChatTab v => Plugin.Config.NotifyPluginDisclosure = v ); } + + if ( + _w.Section( + ImGui.GetID("chat.emotes"u8), + HellionStrings.Settings_Section_Emotes, + open: false + ) + ) + { + DrawEmotes(); + } + + if ( + _w.Section( + ImGui.GetID("chat.autotranslate"u8), + HellionStrings.Settings_Section_AutoTranslate, + open: false + ) + ) + { + _w.ToggleRow( + ImGui.GetID("chat.autotranslate.sort"u8), + Language.Options_SortAutoTranslate_Name, + Language.Options_SortAutoTranslate_Description, + () => Plugin.Config.SortAutoTranslate, + v => Plugin.Config.SortAutoTranslate = v + ); + } + } + + // PRIVACY.md names the switch below as the way to stop the one outbound + // call the plugin makes, and it had no control at all since May. A + // documented opt-out that lives only in the JSON is not an opt-out. + private void DrawEmotes() + { + _w.ToggleRow( + ImGui.GetID("chat.emotes.show"u8), + Language.Options_ShowEmotes_Name, + Language.Options_ShowEmotes_Desc, + () => Plugin.Config.ShowEmotes, + v => Plugin.Config.ShowEmotes = v + ); + + if (!Plugin.Config.ShowEmotes) + return; + + ImGui.Spacing(); + ImGui.TextUnformatted( + EmoteCache.State == EmoteCache.LoadingState.Done + ? $"{Language.Options_Emote_Loaded} {EmoteCache.SortedCodeArray.Length:N0} ({Language.Options_Emote_Ready})" + : $"{Language.Options_Emote_Loaded} {Language.Options_Emote_NotReady}" + ); + + ImGui.Spacing(); + ImGui.TextUnformatted(Language.Options_Emote_BlockedEmotes); + + // A blocked code stops that one emote from ever being drawn or + // downloaded, which is a finer instrument than switching emotes off + // wholesale. The list has been in the config since v1.0 with nowhere to + // edit it. + ImGui.SetNextItemWidth(220f * ImGuiHelpers.GlobalScale); + ImGui.InputText("##hc-blocked-emote", ref _blockedEmoteInput, 64); + ImGui.SameLine(); + + var candidate = _blockedEmoteInput.Trim(); + using (ImRaii.Disabled(candidate.Length == 0)) + { + if (ImGui.Button(HellionStrings.Settings_Emotes_Block)) + { + lock (_plugin.ConfigMapsLock) + Plugin.Config.BlockedEmotes.Add(candidate); + _blockedEmoteInput = string.Empty; + _plugin.SaveConfig(); + } + } + + // Snapshot: the remove button mutates the set inside the loop. + foreach (var blocked in Plugin.Config.BlockedEmotes.OrderBy(e => e).ToList()) + { + using var id = ImRaii.PushId(blocked); + if (ImGuiUtil.IconButton(FontAwesomeIcon.Trash, "##remove")) + { + lock (_plugin.ConfigMapsLock) + Plugin.Config.BlockedEmotes.Remove(blocked); + _plugin.SaveConfig(); + } + + ImGui.SameLine(); + ImGui.TextUnformatted(blocked); + } } } diff --git a/HellionChat/Ui/Components/Settings/Tabs/DataPrivacyTab.cs b/HellionChat/Ui/Components/Settings/Tabs/DataPrivacyTab.cs index a889602..1841ce3 100644 --- a/HellionChat/Ui/Components/Settings/Tabs/DataPrivacyTab.cs +++ b/HellionChat/Ui/Components/Settings/Tabs/DataPrivacyTab.cs @@ -190,6 +190,18 @@ internal sealed class DataPrivacyTab () => Plugin.Config.PrivacyPersistUnknownChannels, v => Plugin.Config.PrivacyPersistUnknownChannels = v ); + // Semantically a storage decision, not a chat one: it governs + // whether battle lines are persisted at all. It sits outside the + // channel list because the filter is a whitelist and this is a + // separate gate in front of it. + _w.ToggleRow( + ImGui.GetID("privacy.filter.battle"u8), + Language.Options_DatabaseBattleMessages_Name, + Language.Options_DatabaseBattleMessages_Description, + () => Plugin.Config.DatabaseBattleMessages, + v => Plugin.Config.DatabaseBattleMessages = v + ); + DrawPrivacyPersistChannelsGrid(); } diff --git a/HellionChat/Ui/Components/Settings/Tabs/GeneralTab.cs b/HellionChat/Ui/Components/Settings/Tabs/GeneralTab.cs index 10a7653..3bec045 100644 --- a/HellionChat/Ui/Components/Settings/Tabs/GeneralTab.cs +++ b/HellionChat/Ui/Components/Settings/Tabs/GeneralTab.cs @@ -66,6 +66,16 @@ internal sealed class GeneralTab if (_w.Section(ImGui.GetID("general.notifications"u8), "Notifications")) { + // The game reports a failed tell in the log only, where a player who + // is typing does not see it. On by default and never reachable. + _w.ToggleRow( + ImGui.GetID("general.notifications.failedtell"u8), + HellionStrings.Settings_NotifyFailedTell_Name, + HellionStrings.Settings_NotifyFailedTell_Description, + () => Plugin.Config.NotifyFailedTell, + v => Plugin.Config.NotifyFailedTell = v + ); + _w.ToggleRow( ImGui.GetID("general.notifications.sounds"u8), Language.Options_PlaySounds_Name, diff --git a/HellionChat/Ui/Components/Settings/Tabs/WindowTab.cs b/HellionChat/Ui/Components/Settings/Tabs/WindowTab.cs index f4feb8f..03849cc 100644 --- a/HellionChat/Ui/Components/Settings/Tabs/WindowTab.cs +++ b/HellionChat/Ui/Components/Settings/Tabs/WindowTab.cs @@ -138,6 +138,80 @@ internal sealed class WindowTab () => Plugin.Config.OnlyPreviewIf, v => Plugin.Config.OnlyPreviewIf = v ); + + // Partner of the toggle above and useless without it: how many + // characters have to be typed before the preview appears. + _w.SliderIntRow( + ImGui.GetID("window.preview.minimum"u8), + Language.Options_PreviewMinimum_Name, + Language.Options_PreviewMinimum_Description, + () => Plugin.Config.PreviewMinimum, + v => Plugin.Config.PreviewMinimum = v, + 0, + 20 + ); + } + + // HideChat is the one with real bite: it defaults to on, it suppresses + // the game's own chat window, and the only other way to it is a + // right-click item that can turn it on and never off. Somebody who used + // that item once had to edit JSON to get their chat back. + if (_w.Section(ImGui.GetID("window.hide"u8), HellionStrings.Settings_Section_Hide)) + { + _w.ToggleRow( + ImGui.GetID("window.hide.chat"u8), + Language.Options_HideChat_Name, + Language.Options_HideChat_Description, + () => Plugin.Config.HideChat, + v => Plugin.Config.HideChat = v + ); + _w.ToggleRow( + ImGui.GetID("window.hide.uihidden"u8), + Language.Options_HideWhenUiHidden_Name, + Language.Options_HideWhenUiHidden_Description, + () => Plugin.Config.HideWhenUiHidden, + v => Plugin.Config.HideWhenUiHidden = v + ); + _w.ToggleRow( + ImGui.GetID("window.hide.loading"u8), + Language.Options_HideInLoadingScreens_Name, + Language.Options_HideInLoadingScreens_Description, + () => Plugin.Config.HideInLoadingScreens, + v => Plugin.Config.HideInLoadingScreens = v + ); + _w.ToggleRow( + ImGui.GetID("window.hide.newgameplus"u8), + Language.Options_HideInNewGamePlusMenu_Name, + Language.Options_HideInNewGamePlusMenu_Description, + () => Plugin.Config.HideInNewGamePlusMenu, + v => Plugin.Config.HideInNewGamePlusMenu = v + ); + } + + if ( + _w.Section( + ImGui.GetID("window.tooltips"u8), + HellionStrings.Settings_Section_LinksTooltips, + open: false + ) + ) + { + _w.ToggleRow( + ImGui.GetID("window.tooltips.native"u8), + Language.Options_NativeItemTooltips_Name, + Language.Options_NativeItemTooltips_Description, + () => Plugin.Config.NativeItemTooltips, + v => Plugin.Config.NativeItemTooltips = v + ); + _w.SliderIntRow( + ImGui.GetID("window.tooltips.offset"u8), + Language.Options_TooltipOffset_Name, + Language.Options_TooltipOffset_Desc, + () => (int)Plugin.Config.TooltipOffset, + v => Plugin.Config.TooltipOffset = v, + 0, + 200 + ); } } }