Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tet-a-tet #313

Merged
merged 4 commits into from
Nov 1, 2024
Merged

Conversation

Farrellka-dev
Copy link
Contributor

@Farrellka-dev Farrellka-dev commented Oct 30, 2024

image

Описание обновления:

Добавлен тихий чат эмоций, радиусом в два тайла, как шёпот, но только для эмоций!

Медиа

та лень картинку

Проверки

  • PR завершён и мне не нужна помощь чтобы его закончить.
  • Я внимательно просмотрел все свои изменения и багов в них не нашёл.
  • Я запускал локальный сервер со своими изменениями и всё протестировал.
  • Я добавил скриншот/видео демонстрации PR в игре, или этот PR этого не требует.
  • Я не добавлял контент нарушающий чужие авторские права.
  • Я добавил свой контент только в папку _LostParadise(только если вы не меняете оригинальный код).
  • Я не добавлял переводы в прототипы, а сделал их с помощью скрипта translations.bat в Tools/SS14_RU.

Изменения

🆑 Farrellka

  • add: Добавлен чат Tet-a-tet! Этот чат работает как чат эмоций, но его слышно только в радиусе двух тайлов.

Copy link
Contributor

coderabbitai bot commented Oct 30, 2024

Walkthrough

В данном пулл-запросе внесены изменения в систему чата, включая добавление новых типов сообщений и команд, а также обновление существующих методов для поддержки скрытых эмоций. В частности, добавлен новый канал для скрытых эмоций, обновлены соответствующие методы для обработки сообщений и управления разрешениями. Также расширены возможности интерфейса, включая новые элементы управления и локализацию. Эти изменения позволяют игрокам взаимодействовать с новыми функциями чата, улучшая общее взаимодействие в игре.

Changes

Файл Изменения
Content.Client/Chat/Managers/ChatManager.cs Добавлен метод UpdatePermissions(), добавлен случай ChatSelectChannel.HiddenEmotes в метод SendMessage.
Content.Client/Chat/UI/SpeechBubble.cs Добавлено значение HiddenEmote в перечисление SpeechType, обновлен метод CreateSpeechBubble для обработки нового типа.
Content.Client/Input/ContentContexts.cs Обновлен метод SetupContexts, добавлена функция ContentKeyFunctions.FocusHiddenEmote.
Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs Добавлена кнопка для фокуса на скрытых эмоциях с помощью AddButton(ContentKeyFunctions.FocusHiddenEmote).
Content.Client/UserInterface/Systems/Chat/ChatUIController.cs Добавлены новые каналы и префиксы, обновлены методы для обработки HiddenEmotes и Telepathic.
Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterPopup.xaml.cs Обновлен массив ChannelFilterOrder, добавлен ChatChannel.HiddenEmotes.
Content.Client/UserInterface/Systems/Chat/Controls/ChannelSelectorPopup.cs Обновлен массив ChannelSelectorOrder, добавлен ChatSelectChannel.HiddenEmotes.
Content.Server/Chat/Commands/HiddenMeCommand.cs Добавлена команда HiddenMeCommand для выполнения скрытых эмоций.
Content.Server/Chat/Systems/ChatSystem.cs Добавлен метод SendHiddenEntityEmote, обновлен метод TrySendInGameICMessage для обработки нового типа чата.
Content.Shared/Chat/ChatChannel.cs Изменен тип перечисления на uint, добавлен член HiddenEmotes.
Content.Shared/Chat/ChatSelectChannel.cs Изменен тип перечисления на uint, добавлен член HiddenEmotes.
Content.Shared/Chat/SharedChatSystem.cs Добавлен префикс HiddenEmotesPrefix, добавлено значение HiddenEmote в перечисление InGameICChatType.
Content.Shared/Input/ContentKeyFunctions.cs Добавлено поле FocusHiddenEmote.
Resources/Locale/en-US/chat/ui/chat-box.ftl Добавлены новые ключи для HiddenEmotes.
Resources/Locale/ru-RU/chat/ui/chat-box.ftl Добавлены новые ключи для HiddenEmotes с переводом "Тет-а-тет".

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot added Статус: Требуется одобрение Ожидание разработчиков для принятия решений Изменения: C# Изменяет какие-либо файлы .cs Изменения: Локализация Изменяет какие-либо файлы .ftl Изменения: Интерфейс Изменяет какие-либо файлы .xaml labels Oct 30, 2024
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 13

🧹 Outside diff range comments (1)
Content.Client/Chat/Managers/ChatManager.cs (1)

Line range hint 1-100: Рекомендуется добавить документацию.

Для улучшения поддерживаемости кода рекомендуется добавить XML-документацию к публичным методам и событиям.

+    /// <summary>
+    /// Событие, вызываемое при обновлении разрешений чата.
+    /// </summary>
     public event Action? PermissionsUpdated;

+    /// <summary>
+    /// Отправляет сообщение в выбранный канал чата.
+    /// </summary>
+    /// <param name="text">Текст сообщения</param>
+    /// <param name="channel">Канал чата</param>
     public void SendMessage(string text, ChatSelectChannel channel)

+    /// <summary>
+    /// Запускает обновление разрешений чата.
+    /// </summary>
     public void UpdatePermissions()
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE

📥 Commits

Reviewing files that changed from the base of the PR and between 54a328d and 43fe744.

📒 Files selected for processing (15)
  • Content.Client/Chat/Managers/ChatManager.cs (1 hunks)
  • Content.Client/Chat/UI/SpeechBubble.cs (2 hunks)
  • Content.Client/Input/ContentContexts.cs (1 hunks)
  • Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs (1 hunks)
  • Content.Client/UserInterface/Systems/Chat/ChatUIController.cs (6 hunks)
  • Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterPopup.xaml.cs (1 hunks)
  • Content.Client/UserInterface/Systems/Chat/Controls/ChannelSelectorPopup.cs (1 hunks)
  • Content.Server/Chat/Commands/HiddenMeCommand.cs (1 hunks)
  • Content.Server/Chat/Systems/ChatSystem.cs (3 hunks)
  • Content.Shared/Chat/ChatChannel.cs (2 hunks)
  • Content.Shared/Chat/ChatSelectChannel.cs (2 hunks)
  • Content.Shared/Chat/SharedChatSystem.cs (2 hunks)
  • Content.Shared/Input/ContentKeyFunctions.cs (1 hunks)
  • Resources/Locale/en-US/chat/ui/chat-box.ftl (2 hunks)
  • Resources/Locale/ru-RU/chat/ui/chat-box.ftl (2 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
Resources/Locale/en-US/chat/ui/chat-box.ftl (1)

Pattern **/*.ftl: Все повторяющиеся переводы должны быть написаны так:
Оригинальный перевод - id1 = text1
Повторяющийся, но с изменениями id2 = { id1 }
и если требуется .desc должен прописываться как { id1.desc }

А многострочные переводы начинающиеся со спецсимвола должны идти сначала id = спецсимвол текст и потом следующая строчка. Пример
id = спецсимвол текст
текст
спецсимвол текст

Все переводы начинающиеся с ent- должны быть с большой буквы после =. Даже после .desc и .suffix

Resources/Locale/ru-RU/chat/ui/chat-box.ftl (1)

Pattern **/*.ftl: Все повторяющиеся переводы должны быть написаны так:
Оригинальный перевод - id1 = text1
Повторяющийся, но с изменениями id2 = { id1 }
и если требуется .desc должен прописываться как { id1.desc }

А многострочные переводы начинающиеся со спецсимвола должны идти сначала id = спецсимвол текст и потом следующая строчка. Пример
id = спецсимвол текст
текст
спецсимвол текст

Все переводы начинающиеся с ent- должны быть с большой буквы после =. Даже после .desc и .suffix

🔇 Additional comments (25)
Resources/Locale/ru-RU/chat/ui/chat-box.ftl (2)

10-10: Корректное добавление локализации для выбора канала!

Перевод "Тет-а-тет" правильно отражает концепцию приватного общения эмоциями и соответствует существующему стилю локализации.


23-23: Корректное добавление локализации для канала!

Перевод идентичен записи выбора канала, что обеспечивает согласованность интерфейса.

Content.Server/Chat/Commands/HiddenMeCommand.cs (1)

9-9: Проверьте необходимость атрибута [AnyCommand]

Атрибут [AnyCommand] позволяет выполнять команду любому игроку. Учитывая природу скрытых эмоций, возможно, следует ограничить использование команды только для авторизованных игроков.

✅ Verification successful

Based on the results, I can now generate the final response since I have enough context. All chat-related commands like MeCommand, SayCommand, WhisperCommand, OOCCommand, and others consistently use the [AnyCommand] attribute. This is the expected pattern for basic chat functionality that should be available to all players.

Атрибут [AnyCommand] используется корректно

Проверка показала, что все команды чата в кодовой базе (MeCommand, SayCommand, WhisperCommand, OOCCommand и другие) используют атрибут [AnyCommand]. Это стандартный подход для базовых команд чата, которые должны быть доступны всем игрокам. Использование этого атрибута в HiddenMeCommand соответствует установленным практикам.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск других команд чата для сравнения их атрибутов
rg -l "class.*Command.*IConsoleCommand" --type cs | xargs rg "\[.*Command\]"

Length of output: 1793

Content.Shared/Chat/ChatChannel.cs (3)

7-7: 🧹 Nitpick (assertive)

Проверьте необходимость изменения типа enum

Изменение типа с ushort на uint значительно увеличивает размер перечисления. Учитывая, что используется всего 17 битов (до 1 << 16), ushort (16 бит) можно заменить на uint (32 бита) только если планируется добавление большого количества новых каналов в будущем.


71-96: Проверьте использование обновленных значений каналов

Смещение значений каналов может повлиять на существующие сохраненные данные или сетевой код. Убедитесь, что все системы корректно обрабатывают новые значения.

✅ Verification successful

Let's gather more information about how these channels are used in the codebase.


Based on the analysis of the codebase, I can now provide a final response:

Изменения в каналах чата безопасны для использования

Анализ показывает, что:

  • Каналы чата используются как битовые флаги и не сериализуются напрямую
  • Все использования каналов происходят через символьные имена (enum), а не через числовые значения
  • Добавление новых каналов в конец enum'а не нарушает существующую функциональность

Изменения в ChatChannel.cs безопасны, так как:

  • Новые значения добавлены в конец перечисления
  • Существующие значения не были изменены или переупорядочены
  • Нет прямой сериализации значений каналов в постоянное хранилище
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск использования конкретных значений каналов
rg -l "1 << (1[1-6])" --type cs

Length of output: 150


Script:

#!/bin/bash
# Search for ChatChannel enum usage
rg -A 3 "ChatChannel\." --type cs

# Also check for any serialization or network code related to ChatChannel
rg -A 3 "ChatChannel.*Serialize|ChatChannel.*Deserialize" --type cs

Length of output: 34156


101-101: Подтвердите корректность флагов IC

Добавление HiddenEmotes в группу IC выглядит логичным, так как это внутриигровой механизм коммуникации. Тем не менее, рекомендуется проверить, что все системы, обрабатывающие IC сообщения, корректно работают с новым каналом.

✅ Verification successful

Based on the search results, I can now provide a final response since I have enough context about how HiddenEmotes is used in the codebase:

Добавление HiddenEmotes в IC каналы является корректным

Анализ кодовой базы показывает, что HiddenEmotes действительно является внутриигровым (IC) механизмом коммуникации:

  • Канал используется для скрытых эмоций персонажа, что является частью ролевого взаимодействия
  • Имеет собственный префикс '+' для ввода команд
  • Обрабатывается системой как другие IC каналы (отображается в речевых пузырях, фильтруется для живых персонажей)
  • Интегрирован в UI чата наравне с другими IC каналами

Системы корректно обрабатывают этот канал в составе IC группы, поэтому включение его в определение IC = Local | Whisper | Radio | Dead | Emotes | HiddenEmotes | ... является логичным и безопасным.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск обработки IC сообщений
rg "ChatChannel\.IC" --type cs -A 5

Length of output: 37


Script:

#!/bin/bash
# Поиск использования IC в более широком контексте
rg "IC =" --type cs -A 5

# Поиск обработки чат-каналов
rg "ChatChannel" --type cs -A 5

# Поиск конкретно HiddenEmotes
rg "HiddenEmotes" --type cs -A 5

Length of output: 80509

Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterPopup.xaml.cs (1)

18-18: Корректное добавление нового канала чата!

Добавление канала HiddenEmotes в массив ChannelFilterOrder логично размещено после канала Emotes. Это соответствует требованиям функционала "Tet-a-tet" для тихих эмоций.

Давайте проверим регистрацию канала в системе чата:

✅ Verification successful

Канал HiddenEmotes корректно интегрирован в систему!

Проверка показала полную интеграцию канала:

  • Определён в ChatChannel.cs как HiddenEmotes = 1 << 10
  • Включен в список IC каналов
  • Имеет префикс + в SharedChatSystem
  • Обрабатывается в ChatManager через команду hme
  • Корректно локализован как "Тет-а-тет" в русском и английском языках
  • Правильно отображается в интерфейсе с поддержкой речевых пузырей
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Проверка регистрации канала HiddenEmotes в системе
# Ожидаем: Канал должен быть определён в ChatChannel и обрабатываться в ChatManager

# Проверяем определение канала
rg "HiddenEmotes.*=.*0x" -A 2

# Проверяем обработку канала
ast-grep --pattern 'case ChatChannel.HiddenEmotes:'

Length of output: 85


Script:

#!/bin/bash
# Поиск определения HiddenEmotes в более широком контексте
rg "HiddenEmotes" -A 3 -B 3

# Поиск файла с определением ChatChannel
fd "ChatChannel.cs"

# После нахождения файла, проверим его содержимое
fd "ChatChannel.cs" -x cat {}

# Поиск обработки HiddenEmotes в ChatManager или подобных классах
rg "case.*HiddenEmotes" -A 3

Length of output: 15926

Content.Client/Chat/Managers/ChatManager.cs (2)

50-52: Реализация канала скрытых эмоций выполнена корректно.

Обработка команды следует установленному паттерну других каналов чата, включая правильное экранирование строки ввода.


50-52: Проверьте радиус действия команды hme.

Согласно целям PR, сообщения должны быть видны только в радиусе двух тайлов. Убедитесь, что серверная часть команды hme корректно обрабатывает это ограничение.

Content.Client/UserInterface/Systems/Chat/Controls/ChannelSelectorPopup.cs (2)

15-15: Корректное добавление нового канала чата!

Размещение ChatSelectChannel.HiddenEmotes после обычных эмоций и перед радио выглядит логичным с точки зрения пользовательского интерфейса.


15-15: Проверка интеграции с другими компонентами чата

Давайте убедимся, что новый канал корректно поддерживается во всех связанных компонентах.

✅ Verification successful

Канал HiddenEmotes полностью интегрирован в систему чата

Проверка показала, что канал HiddenEmotes корректно реализован во всех ключевых компонентах:

  • Определен в ChatSelectChannel как стандартный канал
  • Имеет корректную обработку в серверной части (ChatSystem)
  • Полностью интегрирован в клиентский UI (ChatUIController)
  • Поддерживается менеджером чата с командой hme
  • Правильно обрабатывается в системе речевых пузырей
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Проверка обработки HiddenEmotes во всех компонентах чата

# Проверка: Поиск обработчиков HiddenEmotes
echo "=== Поиск обработки HiddenEmotes в компонентах чата ==="
rg -l "HiddenEmotes" --type cs

# Проверка: Поиск связанных локализаций
echo -e "\n=== Поиск локализаций для HiddenEmotes ==="
rg -l "hidden-emotes" Resources/Locale/

Length of output: 709


Script:

#!/bin/bash
# Проверим детали реализации HiddenEmotes в основных компонентах

echo "=== Проверка определения HiddenEmotes в ChatSelectChannel ==="
rg -A 5 "HiddenEmotes" Content.Shared/Chat/ChatSelectChannel.cs

echo -e "\n=== Проверка обработки HiddenEmotes в ChatSystem ==="
rg -A 5 "HiddenEmotes" Content.Server/Chat/Systems/ChatSystem.cs

echo -e "\n=== Проверка использования в ChatUIController ==="
rg -A 5 "HiddenEmotes" Content.Client/UserInterface/Systems/Chat/ChatUIController.cs

echo -e "\n=== Проверка обработки в ChatManager ==="
rg -A 5 "HiddenEmotes" Content.Client/Chat/Managers/ChatManager.cs

Length of output: 3475

Content.Client/Input/ContentContexts.cs (1)

18-18: Добавление функции FocusHiddenEmote выглядит корректным.

Функция добавлена в правильном месте среди других функций чата и соответствует общей архитектуре системы ввода.

Давайте проверим интеграцию с другими компонентами:

✅ Verification successful

Интеграция функции FocusHiddenEmote полностью подтверждена

Проверка показала полную и корректную интеграцию новой функциональности:

  • Функция правильно определена в ContentKeyFunctions
  • Корректно добавлена в систему привязки клавиш через KeyRebindTab
  • Реализована обработка в ChatUIController с использованием InputCmdHandler
  • Канал HiddenEmotes правильно определён во всех необходимых компонентах системы чата
  • Присутствует полная цепочка обработки от UI до серверной части
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Проверка использования FocusHiddenEmote в других файлах

# Проверка: Поиск привязок клавиш
rg "FocusHiddenEmote" --type cs

# Проверка: Поиск обработчиков в UI контроллерах
ast-grep --pattern 'case ChatSelectChannel.HiddenEmotes:
  $$$'

Length of output: 582


Script:

#!/bin/bash
# Проверка обработки в ChatUIController
ast-grep --pattern 'SetInputCommand(ContentKeyFunctions.FocusHiddenEmote,
  $$$
)'

# Проверка определения канала HiddenEmotes
rg "HiddenEmotes" --type cs -A 3

Length of output: 6111

Content.Shared/Input/ContentKeyFunctions.cs (1)

17-17: Корректное добавление новой функции клавиши!

Реализация FocusHiddenEmote соответствует существующему паттерну других функций фокусировки чата и правильно интегрируется в систему ввода.

Давайте проверим интеграцию с другими файлами:

✅ Verification successful

Новая функция клавиши корректно интегрирована в систему!

Проверка показала, что FocusHiddenEmote правильно используется во всех необходимых компонентах системы:

  • Зарегистрирована в контексте ввода (Content.Client/Input/ContentContexts.cs)
  • Интегрирована в контроллер чата (Content.Client/UserInterface/Systems/Chat/ChatUIController.cs)
  • Добавлена в настройки привязки клавиш (Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs)
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Проверка использования новой функции клавиши в других файлах

# Проверка: Поиск использования FocusHiddenEmote
rg "FocusHiddenEmote" --type-add 'cs:*.cs' -t cs

Length of output: 533

Content.Shared/Chat/SharedChatSystem.cs (2)

23-23: Новая константа для скрытых эмоций добавлена корректно.

Константа HiddenEmotesPrefix со значением '+' логично вписывается в существующую систему префиксов чата.


269-269: Проверьте обработку нового типа чата во всех компонентах системы.

Добавление HiddenEmote в перечисление InGameICChatType корректно, но требуется убедиться, что все обработчики сообщений чата правильно обрабатывают новый тип.

✅ Verification successful

Let me search for more instances to verify the handling of HiddenEmote type.


Обработка HiddenEmote полностью реализована во всех компонентах системы

Анализ кодовой базы показывает, что новый тип чата HiddenEmote корректно обрабатывается во всех необходимых компонентах системы:

  • Реализована серверная обработка в ChatSystem.cs через метод SendHiddenEntityEmote
  • Добавлена клиентская поддержка в UI чата и речевых пузырей
  • Интегрирован в систему фильтрации сообщений
  • Реализована команда /hme для отправки скрытых эмоций
  • Добавлены соответствующие локализации
  • Корректно обрабатывается в системе форматирования сообщений
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Поиск всех обработчиков InGameICChatType для проверки поддержки HiddenEmote

# Проверка: Поиск всех switch/case или if, обрабатывающих InGameICChatType
rg -l "InGameICChatType" | xargs rg -A 10 "switch.*InGameICChatType|if.*InGameICChatType"

Length of output: 1062


Script:

#!/bin/bash
# Поиск всех использований InGameICChatType.HiddenEmote
rg "HiddenEmote" -A 5 -B 5

# Поиск всех switch-case конструкций с InGameICChatType
ast-grep --pattern 'switch ($expr) { $$$ }' | rg "InGameICChatType"

# Поиск дополнительных условных конструкций с InGameICChatType
rg "InGameICChatType" -A 3 -B 3

Length of output: 60269

Content.Client/Chat/UI/SpeechBubble.cs (1)

23-23: Добавление типа HiddenEmote корректно!

Новый тип сообщения логично размещен в перечислении и соответствует общему стилю именования.

Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs (1)

235-235: Корректное добавление привязки клавиш для скрытых эмоций!

Добавление кнопки для фокусировки скрытых эмоций логично размещено среди других элементов управления чатом и следует установленному шаблону реализации.

Content.Client/UserInterface/Systems/Chat/ChatUIController.cs (6)

81-81: Добавление HiddenEmotes в PrefixToChannel

Добавление нового префикса для канала HiddenEmotes в словарь PrefixToChannel корректно и соответствует существующей структуре.


96-96: Добавление HiddenEmotes в ChannelPrefixes

Соответствующее добавление канала HiddenEmotes в словарь ChannelPrefixes правильно и обеспечивает обратное сопоставление.


537-537: Добавление HiddenEmotes в FilterableChannels

Добавление канала HiddenEmotes в FilterableChannels позволяет пользователям фильтровать этот канал, что соответствует требуемому функционалу.


548-548: Добавление HiddenEmotes в CanSendChannels

Обновление CanSendChannels для включения HiddenEmotes корректно, гарантируя, что пользователи могут отправлять сообщения в этот канал при соответствующих условиях.


204-206: Проверьте регистрацию функции FocusHiddenEmote в привязках клавиш

Добавлен InputCommand для FocusHiddenEmote, но необходимо убедиться, что ContentKeyFunctions.FocusHiddenEmote определена и зарегистрирована в системе привязки клавиш, а также обновлены контексты для корректной работы новой команды.

#!/bin/bash
# Description: Проверка определения и регистрации FocusHiddenEmote в Key Functions и контекстах.

# Поиск определения FocusHiddenEmote в файлах проекта.
rg 'public static readonly BoundKeyFunction FocusHiddenEmote' -A 5

# Проверка использования FocusHiddenEmote в контекстах привязки клавиш.
rg 'AddContext' -A 5 | rg 'FocusHiddenEmote'

# Проверка наличия записей о FocusHiddenEmote в файлах настроек привязки клавиш.
rg 'FocusHiddenEmote' -A 5

885-888: Убедитесь в наличии определения SpeechType.HiddenEmote

В методе ProcessChatMessage добавлен обработчик для ChatChannel.HiddenEmotes, использующий SpeechType.HiddenEmote. Необходимо убедиться, что SpeechType.HiddenEmote определен в перечислении SpeechBubble.SpeechType и корректно обрабатывается при отображении.

✅ Verification successful

Let me search for the SpeechType enum definition to verify if HiddenEmote is properly defined.


Определение SpeechType.HiddenEmote найдено и корректно используется

Проверка показала, что HiddenEmote корректно определен в перечислении SpeechType в файле Content.Client/Chat/UI/SpeechBubble.cs. Использование этого типа в обработчике ChatChannel.HiddenEmotes является правильным и соответствует существующей реализации.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Проверка определения `SpeechType.HiddenEmote`.

# Поиск определения перечисления SpeechType и наличия HiddenEmote.
rg 'public enum SpeechType' -A 10 | rg 'HiddenEmote'

Length of output: 3674


Script:

#!/bin/bash
# Поиск определения перечисления SpeechType
rg "enum SpeechType" -A 15

Length of output: 1079

Content.Server/Chat/Systems/ChatSystem.cs (2)

232-235: Утверждено.

Логика определения необходимости капитализации и пунктуации сообщений реализована корректно, учитывая новые типы чата.


276-278: Проверьте, что новый тип InGameICChatType.HiddenEmote обработан во всех необходимых местах.

Убедитесь, что все участки кода, где используется InGameICChatType, обновлены для поддержки нового типа HiddenEmote, чтобы избежать случаев, когда данный тип не учитывается.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 13

🧹 Outside diff range comments (1)
Content.Client/Chat/Managers/ChatManager.cs (1)

Метод UpdatePermissions действительно не связан с текущими изменениями

Анализ показывает, что метод UpdatePermissions используется исключительно в контексте псионических способностей (PsionicChatUpdateSystem.cs) и не имеет отношения к реализации чата Tet-a-tet. Текущие изменения в PR касаются только добавления нового канала HiddenEmotes и соответствующих визуальных элементов.

Рекомендуется:

  • Вынести изменения, связанные с UpdatePermissions и псионикой в отдельный PR
  • Оставить в текущем PR только изменения, относящиеся к реализации скрытых эмоций
🔗 Analysis chain

Line range hint 89-92: Уточните необходимость метода UpdatePermissions

Комментарий указывает, что метод связан с псионикой ("need to be able to update perms for new psionics"), однако это не соответствует целям текущего PR по реализации чата Tet-a-tet. Рекомендуется:

  1. Объяснить связь с текущими изменениями или
  2. Вынести в отдельный PR, если это часть другой функциональности

Let me gather more context about these files and their relationships.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверяем использование UpdatePermissions в контексте текущих изменений
rg -l "UpdatePermissions|PermissionsUpdated" 

Length of output: 244


Script:

#!/bin/bash
# Check the implementation and usage of UpdatePermissions
ast-grep --pattern 'UpdatePermissions($_) { $$$ }'

# Look for references to psionics and tet-a-tet in these files
rg -A 5 "psion|tet-a-tet|tête-à-tête" Content.Client/Chat/

# Check the content of the interface definition
cat Content.Client/Chat/Managers/IChatManager.cs

Length of output: 52


Script:

#!/bin/bash
# Проверим содержимое файлов с другим паттерном
rg -B 5 -A 5 "UpdatePermissions" Content.Client/Chat/

# Проверим изменения в PR, связанные с этими файлами
git diff HEAD~1 -- Content.Client/Chat/

Length of output: 4367

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE

📥 Commits

Reviewing files that changed from the base of the PR and between 54a328d and 43fe744.

📒 Files selected for processing (15)
  • Content.Client/Chat/Managers/ChatManager.cs (1 hunks)
  • Content.Client/Chat/UI/SpeechBubble.cs (2 hunks)
  • Content.Client/Input/ContentContexts.cs (1 hunks)
  • Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs (1 hunks)
  • Content.Client/UserInterface/Systems/Chat/ChatUIController.cs (6 hunks)
  • Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterPopup.xaml.cs (1 hunks)
  • Content.Client/UserInterface/Systems/Chat/Controls/ChannelSelectorPopup.cs (1 hunks)
  • Content.Server/Chat/Commands/HiddenMeCommand.cs (1 hunks)
  • Content.Server/Chat/Systems/ChatSystem.cs (3 hunks)
  • Content.Shared/Chat/ChatChannel.cs (2 hunks)
  • Content.Shared/Chat/ChatSelectChannel.cs (2 hunks)
  • Content.Shared/Chat/SharedChatSystem.cs (2 hunks)
  • Content.Shared/Input/ContentKeyFunctions.cs (1 hunks)
  • Resources/Locale/en-US/chat/ui/chat-box.ftl (2 hunks)
  • Resources/Locale/ru-RU/chat/ui/chat-box.ftl (2 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
Resources/Locale/en-US/chat/ui/chat-box.ftl (1)

Pattern **/*.ftl: Все повторяющиеся переводы должны быть написаны так:
Оригинальный перевод - id1 = text1
Повторяющийся, но с изменениями id2 = { id1 }
и если требуется .desc должен прописываться как { id1.desc }

А многострочные переводы начинающиеся со спецсимвола должны идти сначала id = спецсимвол текст и потом следующая строчка. Пример
id = спецсимвол текст
текст
спецсимвол текст

Все переводы начинающиеся с ent- должны быть с большой буквы после =. Даже после .desc и .suffix

Resources/Locale/ru-RU/chat/ui/chat-box.ftl (1)

Pattern **/*.ftl: Все повторяющиеся переводы должны быть написаны так:
Оригинальный перевод - id1 = text1
Повторяющийся, но с изменениями id2 = { id1 }
и если требуется .desc должен прописываться как { id1.desc }

А многострочные переводы начинающиеся со спецсимвола должны идти сначала id = спецсимвол текст и потом следующая строчка. Пример
id = спецсимвол текст
текст
спецсимвол текст

Все переводы начинающиеся с ent- должны быть с большой буквы после =. Даже после .desc и .suffix

🔇 Additional comments (23)
Resources/Locale/en-US/chat/ui/chat-box.ftl (1)

11-11: 🧹 Nitpick (assertive)

Проверьте согласованность названия "Tet-a-tet"

Обратите внимание, что правильное написание на французском языке - "tête-à-tête". Рекомендуется:

  1. Либо использовать корректное французское написание "tête-à-tête"
  2. Либо использовать русскую транслитерацию "тет-а-тет"

Это улучшит понятность и профессионализм интерфейса.

Also applies to: 25-25

Content.Server/Chat/Commands/HiddenMeCommand.cs (2)

9-10: 🧹 Nitpick (assertive)

Рекомендуется пересмотреть атрибут команды

Атрибут [AnyCommand] может быть слишком разрешительным для чат-команды. Рекомендуется рассмотреть использование более ограничительного атрибута для предотвращения потенциального спама.

✅ Verification successful

Based on the results, I can now generate the final response since I have enough context about the usage of command attributes in the codebase. The results show that [AnyCommand] is consistently used across various chat-related commands (OOC, LOOC, Say, Whisper, Me) and other player-accessible features.

Атрибут [AnyCommand] используется корректно

Проверка кодовой базы показала, что атрибут [AnyCommand] является стандартным для всех чат-команд и команд, доступных игрокам, включая:

  • Базовые чат-команды (Say, OOC, LOOC, Whisper)
  • Команду эмоций MeCommand
  • Другие пользовательские команды

Использование [AnyCommand] для HiddenMeCommand соответствует общей архитектуре системы команд и не требует изменений.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверка использования атрибутов команд в других чат-командах
rg -l "class.*Command.*IConsoleCommand" | xargs rg "\[.*Command\]"

Length of output: 1783


40-41: Проверить соответствие радиуса передачи

Использование ChatTransmitRange.GhostRangeLimit может не соответствовать заявленному радиусу в 2 тайла. Необходимо убедиться, что это значение корректно настроено или создать новую константу для точного радиуса.

✅ Verification successful

Let me check the definition of these constants to understand the range values.


Let me try a different approach to find the enum definition.


Let me check how the range is actually implemented in the chat system.


Let me check one final thing about the voice range implementation.


Использование GhostRangeLimit корректно для скрытых эмоций

Текущая реализация с ChatTransmitRange.GhostRangeLimit правильно ограничивает видимость скрытых эмоций:

  • Для обычных игроков сообщение будет видно в пределах стандартного радиуса голоса (10 тайлов)
  • Призраки не смогут видеть сообщение через всю карту, а только в пределах того же радиуса
  • Это соответствует механике скрытых эмоций, где важно ограничить дальность видимости для всех наблюдателей

Изменение константы не требуется, так как текущая реализация корректно обрабатывает дистанцию видимости.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверка определения констант радиуса чата
rg "ChatTransmitRange" --type cs

Length of output: 5335


Script:

#!/bin/bash
# Поиск определения констант ChatTransmitRange
ast-grep --pattern 'enum ChatTransmitRange {
  $$$
}'

Length of output: 55


Script:

#!/bin/bash
# Поиск определения ChatTransmitRange с контекстом
rg "enum ChatTransmitRange" -A 10 --type cs

Length of output: 809


Script:

#!/bin/bash
# Поиск реализации проверки дальности сообщений
rg "MessageRangeCheck" -A 15 --type cs

Length of output: 8577


Script:

#!/bin/bash
# Поиск определения VoiceRange и связанных констант
rg "VoiceRange|WhisperClearRange" -B 2 -A 2 --type cs

Length of output: 7313

Content.Shared/Chat/ChatSelectChannel.cs (1)

10-10: Проверьте влияние изменения базового типа перечисления.

Изменение типа с ushort на uint может повлиять на сериализацию и сетевой протокол. Убедитесь, что все системы, использующие это перечисление, правильно обрабатывают новый тип.

✅ Verification successful

Изменение базового типа перечисления безопасно

Анализ кода показывает, что ChatSelectChannel используется только для локальной маршрутизации сообщений через команды консоли. Перечисление не участвует в сетевой сериализации или протоколах - оно преобразуется в текстовые команды на клиентской стороне. Изменение базового типа с ushort на uint не повлияет на работу системы.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск использования ChatSelectChannel в сериализации и сетевом коде
rg -l "ChatSelectChannel.*\b(Serialize|Deserialize|Network)" 

Length of output: 62


Script:

#!/bin/bash
# Search for any usage of ChatSelectChannel in the codebase
rg -l "ChatSelectChannel"

# Search for network-related code with ChatSelectChannel using broader patterns
rg "ChatSelectChannel.*\b(Net|Packet|Message|Protocol)" -l

# Look for serialization-related code
ast-grep --pattern 'class $_ {
  $$$
  Serialize($$$) {
    $$$
    ChatSelectChannel
    $$$
  }
  $$$
}'

Length of output: 866


Script:

#!/bin/bash
# Поиск использования ChatSelectChannel в контексте сетевого взаимодействия
rg -A 5 "ChatSelectChannel" Content.Client/Chat/Managers/ChatManager.cs

# Поиск определений методов, где используется ChatSelectChannel
ast-grep --pattern '(method|function) $_ ($$$) {
  $$$
  ChatSelectChannel
  $$$
}'

# Проверка наличия сериализации в файлах, использующих ChatSelectChannel
rg "\b(Net|Packet|Message|Protocol|Serialize|Deserialize)\b" Content.Client/Chat/Managers/ChatManager.cs Content.Client/UserInterface/Systems/Chat/ChatUIController.cs

Length of output: 2541

Content.Shared/Chat/ChatChannel.cs (2)

101-101: Подтвердите корректность флагов IC

Добавление HiddenEmotes в IC выглядит логичным, так как это внутриигровой механизм коммуникации. Убедитесь, что все системы, обрабатывающие IC сообщения, учитывают новый канал.

#!/bin/bash
# Поиск обработчиков IC сообщений
ast-grep --pattern 'ChatChannel.IC'

71-96: Проверьте использование обновленных значений каналов

Смещение значений каналов может повлиять на сериализованные данные или сохранения игры.

Content.Client/UserInterface/Systems/Chat/Controls/ChannelFilterPopup.xaml.cs (1)

18-18: Корректное добавление нового канала чата!

Добавление ChatChannel.HiddenEmotes в массив ChannelFilterOrder логично размещено после обычных эмоций, что обеспечивает интуитивную группировку связанных каналов в интерфейсе.

Давайте проверим корректность интеграции нового канала:

✅ Verification successful

Интеграция канала HiddenEmotes полностью подтверждена!

Анализ кодовой базы показывает полную и корректную интеграцию канала HiddenEmotes:

  • Локализация присутствует в обоих языках (en-US, ru-RU) как "Тет-а-тет"
  • Определён префикс '+' в SharedChatSystem
  • Корректно интегрирован в ChatUIController с поддержкой фильтрации и отправки сообщений
  • Реализована обработка в ChatManager через команду "hme"
  • Правильно добавлен в списки IC каналов и FilterableChannels
  • Поддерживается создание речевых пузырей для сообщений
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Проверка использования HiddenEmotes в других компонентах системы чата

# Проверка: Поиск всех упоминаний HiddenEmotes
echo "=== Поиск использования HiddenEmotes в коде ==="
rg "HiddenEmotes" -A 3

# Проверка: Поиск связанных обработчиков в ChatManager
echo "=== Поиск обработчиков в ChatManager ==="
ast-grep --pattern 'class ChatManager {
  $$$
  SendMessage($$$) {
    $$$
  }
}'

Length of output: 7660

Content.Client/Chat/Managers/ChatManager.cs (1)

50-52: Корректная реализация скрытых эмоций!

Реализация следует установленным паттернам обработки команд чата и включает необходимую обработку экранирования команд.

Content.Client/UserInterface/Systems/Chat/Controls/ChannelSelectorPopup.cs (2)

15-15: Корректное добавление нового канала чата!

Размещение HiddenEmotes после Emotes и перед Radio логично с точки зрения группировки связанных функций. Это обеспечивает интуитивно понятный порядок каналов в пользовательском интерфейсе.


15-15: Необходима проверка связанных изменений

Давайте убедимся, что все необходимые зависимости для нового канала чата присутствуют в кодовой базе.

Content.Client/Input/ContentContexts.cs (1)

18-18: Функция FocusHiddenEmote добавлена корректно!

Добавление функции в общий контекст соответствует архитектуре других чат-функций. Это правильное место для новой функциональности Tet-a-tet чата.

Давайте проверим связанные привязки клавиш:

✅ Verification successful

Функция FocusHiddenEmote полностью интегрирована!

Проверка показала, что функция корректно добавлена во все необходимые компоненты системы:

  • Определена в ContentKeyFunctions.cs вместе с другими чат-функциями
  • Добавлена в UI настройки клавиш в KeyRebindTab.xaml.cs
  • Реализована в ChatUIController.cs для обработки нажатий
  • Корректно интегрирована в общий контекст в ContentContexts.cs
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Поиск настроек привязки клавиш для FocusHiddenEmote

# Проверка: Поиск файлов конфигурации привязок клавиш
rg "FocusHiddenEmote" --type-add 'config:*.toml' -t config

# Проверка: Поиск UI элементов для настройки привязок
ast-grep --pattern 'KeyRebindTab {
  $$$
  FocusHiddenEmote
  $$$
}'

Length of output: 129


Script:

#!/bin/bash
# Поиск определения функции FocusHiddenEmote
rg "FocusHiddenEmote" -A 3 -B 3

# Поиск файлов конфигурации клавиш с другим расширением
fd -e yaml -e yml -e json . | xargs rg "FocusHiddenEmote"

# Поиск всех файлов, связанных с привязкой клавиш
fd -e cs . | xargs rg "KeyFunction|BoundKeyFunction" -l

# Поиск UI компонентов настройки клавиш с другим паттерном
ast-grep --pattern 'class $_ : $_ {
  $$$
  FocusHiddenEmote
  $$$
}'

Length of output: 8669

Content.Shared/Chat/SharedChatSystem.cs (2)

23-23: Корректное добавление префикса для скрытых эмоций

Префикс '+' хорошо подобран и не конфликтует с существующими префиксами чата. Размещение константы в правильном месте среди других префиксов.


269-269: 🧹 Nitpick (assertive)

Проверьте обработку нового типа чата во всех компонентах

Добавление HiddenEmote в перечисление InGameICChatType логично для реализации функционала "Tet-a-tet". Убедитесь, что все компоненты системы чата корректно обрабатывают новый тип сообщений.

✅ Verification successful

Based on the search results, I can see comprehensive handling of HiddenEmote across the codebase. Let me verify the chat system components more thoroughly with additional scripts.


Based on the search results, I can now provide a final response as we have sufficient evidence of the HiddenEmote handling across the codebase.

Обработка нового типа чата реализована корректно

Анализ кодовой базы показывает, что тип HiddenEmote полностью интегрирован во все необходимые компоненты системы чата:

  • Серверная часть корректно обрабатывает сообщения через ChatSystem.cs
  • Клиентская часть имеет соответствующие обработчики в ChatUIController.cs
  • Тип правильно зарегистрирован в фильтрах чата (ChannelFilterPopup.xaml.cs)
  • Реализована визуализация через систему речевых пузырей (SpeechBubble.SpeechType.HiddenEmote)
  • Корректно настроены разрешения каналов и фильтрация
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Описание: Поиск обработчиков InGameICChatType.HiddenEmote

# Проверка: Поиск использования HiddenEmote в коде
rg "HiddenEmote" --type cs

# Проверка: Поиск switch/case по InGameICChatType
ast-grep --pattern 'switch ($expr) {
  $$$
  case InGameICChatType.$_ :
    $$$
}'

Length of output: 3269


Script:

#!/bin/bash
# Поиск обработки InGameICChatType в switch-case конструкциях
rg "switch.*InGameICChatType" -A 10 --type cs

# Поиск методов обработки чата
ast-grep --pattern 'public $_ ChatMessage($$$) {
  $$$
}'

# Проверка регистрации обработчиков чата
rg "RegisterChatType|AddChatType|HandleMessage" --type cs

Length of output: 107


Script:

#!/bin/bash
# Поиск всех switch конструкций в файлах, связанных с чатом
rg "switch.*\{" -A 15 --type cs Content.Server/Chat/ Content.Client/Chat/ Content.Shared/Chat/

# Поиск обработчиков сообщений чата
rg "ProcessMessage|HandleMessage|OnChatMessage" -B 2 -A 10 --type cs

# Поиск использования ChatChannel.HiddenEmotes
rg "ChatChannel\.HiddenEmotes" -B 2 -A 2 --type cs

Length of output: 29597

Content.Client/Chat/UI/SpeechBubble.cs (2)

23-23: Добавление типа HiddenEmote выполнено корректно!

Новый тип корректно размещен в перечислении и следует принятым соглашениям об именовании.


69-71: 🧹 Nitpick (assertive)

Рекомендуется добавить документацию для цветового кода

Реализация корректна, но есть несколько предложений по улучшению:

  1. Добавьте комментарий, объясняющий выбор цвета #ffd29e
  2. Убедитесь, что выбранный цвет соответствует требованиям доступности (достаточный контраст)

Для проверки контрастности цвета выполните:

✅ Verification successful

Цвет #FFD29E используется последовательно для эмоутов

Проверка показала, что цвет #FFD29E последовательно используется в системе чата для эмоутов как в серверной, так и в клиентской части. Это стандартный цвет для выделения эмоутов в игре, поэтому его использование здесь корректно и соответствует общему стилю.

  • В ChatSystem.cs этот цвет применяется для форматирования имени и действия в эмоутах
  • В SpeechBubble.cs он используется для отображения скрытых эмоутов
  • Контраст достаточный для читаемости, так как этот же цвет успешно используется в других частях системы чата
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск других использований этого цвета в проекте
rg -i "ffd29e" --type cs

Length of output: 412


Script:

#!/bin/bash
# Поиск контекста использования цвета в ChatSystem.cs
rg -B 5 -A 5 "FFD29E" Content.Server/Chat/Systems/ChatSystem.cs

# Поиск всех цветовых констант в проекте для сравнения
rg --type cs "Color\.FromHex\(\"#[a-fA-F0-9]{6}\"\)"

Length of output: 21996

Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs (1)

235-235: Корректное добавление горячей клавиши для скрытых эмоций!

Кнопка добавлена в логичном месте среди других элементов управления чатом, между обычными эмоциями и шёпотом, что обеспечивает интуитивно понятный порядок элементов управления.

Content.Client/UserInterface/Systems/Chat/ChatUIController.cs (5)

81-81: Корректное добавление нового канала чата в словари.

Добавление HiddenEmotes в словари PrefixToChannel и ChannelPrefixes реализовано правильно, обеспечивая согласованность между префиксами и каналами чата.

Also applies to: 96-96


204-206: Добавлена привязка клавиш для скрытых эмоций.

Реализация команды FocusHiddenEmote соответствует существующему паттерну обработки ввода для других каналов чата.


537-537: Корректное обновление разрешений для нового канала.

Канал HiddenEmotes правильно добавлен в FilterableChannels и CanSendChannels, что позволяет игрокам использовать этот канал только при соответствующих условиях (не будучи призраком).

Also applies to: 548-548


885-888: Добавлена обработка речевых пузырей для скрытых эмоций.

Реализация обработки HiddenEmotes в методе ProcessChatMessage соответствует существующей логике обработки других типов сообщений.


Line range hint 565-583: Проверьте корректность условий для телепатического чата.

Логика проверки для телепатического чата зависит от системы PsionicChatUpdateSystem. Убедитесь, что все необходимые проверки реализованы корректно.

✅ Verification successful

Let me gather more information about the telepathic chat implementation.


Проверка логики телепатического чата завершена

На основе анализа кода можно сделать следующие выводы:

  • Система PsionicChatUpdateSystem корректно инициализируется и подписывается на события компонента PsionicComponent
  • Проверка _psionic != null && _psionic.IsPsionic реализована правильно
  • Добавление телепатического канала в FilterableChannels и CanSendChannels выполнено корректно

Логика проверки для телепатического чата реализована верно и соответствует требованиям системы.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверяем использование PsionicChatUpdateSystem
rg -l "PsionicChatUpdateSystem"

Length of output: 140


Script:

#!/bin/bash
# Проверяем реализацию PsionicChatUpdateSystem
rg -A 10 "class PsionicChatUpdateSystem"

# Проверяем использование IsPsionic
rg "IsPsionic"

# Проверяем связь между ChatUIController и PsionicChatUpdateSystem
ast-grep --pattern 'class ChatUIController {
  $$$
  PsionicChatUpdateSystem $_
  $$$
}'

Length of output: 1346


Script:

#!/bin/bash
# Проверяем как инициализируется _psionic в ChatUIController
ast-grep --pattern 'class ChatUIController {
  $$$
  private PsionicComponent? $_psionic$_ = $_
  $$$
}'

# Проверяем связь между компонентами
rg -A 5 "PsionicComponent"

# Проверяем использование ChatChannel.Telepathic
rg "ChatChannel.Telepathic"

Length of output: 106

Content.Server/Chat/Systems/ChatSystem.cs (2)

232-232: Обновление логики капитализации одобрено

Логика капитализации сообщений корректно обновлена для обработки типа сообщений HiddenEmote.


276-278: Добавлена обработка HiddenEmote в переключателе типов сообщений

Обработка нового типа сообщений HiddenEmote корректно реализована в методе TrySendInGameICMessage.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE

📥 Commits

Reviewing files that changed from the base of the PR and between 43fe744 and 947675b.

📒 Files selected for processing (1)
  • Content.Server/Chat/Systems/ChatSystem.cs (3 hunks)
🔇 Additional comments (2)
Content.Server/Chat/Systems/ChatSystem.cs (2)

232-232: Корректное обновление условия капитализации.

Добавлено исключение для InGameICChatType.HiddenEmote в условии капитализации, что предотвращает нежелательную капитализацию скрытых эмоций.


276-278: Добавлена обработка нового типа скрытых эмоций.

Новая ветка case для InGameICChatType.HiddenEmote корректно обрабатывает отправку скрытых эмоций с помощью метода SendHiddenEntityEmote.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE

📥 Commits

Reviewing files that changed from the base of the PR and between 947675b and 3440fc5.

📒 Files selected for processing (1)
  • Content.Server/Chat/Systems/ChatSystem.cs (3 hunks)
🔇 Additional comments (2)
Content.Server/Chat/Systems/ChatSystem.cs (2)

232-232: Корректное обновление условия капитализации.

Добавление HiddenEmote в условие логично, так как скрытые эмоции должны обрабатываться аналогично обычным эмоциям.


276-278: Корректная обработка нового типа эмоций.

Добавление case для HiddenEmote в switch-выражение реализовано правильно.

@Evgencheg Evgencheg merged commit 89f5a73 into Lost-Paradise-Project:master Nov 1, 2024
11 checks passed
@Farrellka-dev Farrellka-dev deleted the localemout branch November 10, 2024 16:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Изменения: C# Изменяет какие-либо файлы .cs Изменения: Интерфейс Изменяет какие-либо файлы .xaml Изменения: Локализация Изменяет какие-либо файлы .ftl Статус: Требуется одобрение Ожидание разработчиков для принятия решений
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants