-
Notifications
You must be signed in to change notification settings - Fork 6
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
[Feature] Emotes Menu Type #215
base: master
Are you sure you want to change the base?
Conversation
WalkthroughИзменения представляют собой обширное обновление системы эмоций в игре, включая реализацию нового интерфейса Changes
Suggested labels
Suggested reviewers
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? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this 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
🧹 Nitpick comments (12)
Content.Shared/_White/CVars.cs (1)
30-32
: Рекомендуется добавить комментарий с описанием новой переменной.Переменная
EmotesMenuStyle
имеет ключевое значение для выбора меню эмоций. Для улучшения сопровождения кода добавьте краткий комментарий, поясняющий, как и где это поле влияет на логику конфигурации.Content.Client/_White/UI/Emotes/WhiteEmotesMenu.xaml.cs (3)
22-22
: Уточните назначение события OnPlayEmote.Событие
OnPlayEmote
может стать важной точкой расширения функционала, например для дополнительной логики при проигрывании эмоции (звук, анимация и т.п.). Рекомендуется добавить краткую документацию в коде.
31-40
: Улучшите читаемость фильтрации эмоций.В блоке проверок (категории, триггеры, вайтлист/блэклист) соберите условия в отдельные приватные методы или добавьте комментарии для каждой проверки. Это упростит понимание логики и укажет, почему некоторые эмоции отсекаются.
47-62
: Учитывайте разные размеры апп UI при размещении кнопок.Вы задаёте фиксированные размеры и форматирование (
MinWidth
,MaxWidth
,MaxHeight
и т.п.). Возможно, стоит предусмотреть адаптивное поведение интерфейса для устройств с отличным разрешением.Resources/Locale/en-US/chat/emotes.ftl (2)
32-35
: Уточнение формулировок.
"Do a flip" и "Wagging your tail" звучат естественно, однако убедитесь, что стиль остальных эмоций также остается в едином, удобочитаемом формате.
53-55
: Общая согласованность новых сообщений.
Новые описания действий эмоций (boops, wags tail, и т.д.) добавляют игровую атмосферу. Однако убедитесь, что используете точку или восклицательный знак последовательно, чтобы сохранить единообразие. Например, “boops.” или “wags tail.”Also applies to: 58-58, 62-64, 70-73
Resources/Locale/ru-RU/chat/emotes.ftl (1)
37-74
: Единообразие пунктуации и формулировок.
Некоторые строки заканчиваются восклицательным знаком, другие — точкой. Для единообразия пользовательского интерфейса рекомендуется сохранять общий стиль: либо все с точкой, либо с восклицательным знаком.Content.Client/_White/UI/Emotes/WhiteEmotesUIController.cs (2)
30-31
: Интервал перезарядки эмоций.
Значение EmoteCooldown =1.5f
кажется разумным, но стоит проверить, не слишком ли часто стают возможны спам-эмоции. Возможно, нужно увеличить до 2 или 3 секунд.
110-122
: Открытие меню в позициях мыши.
ФункционалOpenCenteredAt()
полезен. Убедитесь, что при высоком разрешении экрана UI не обрезается.Resources/Prototypes/_White/tags.yml (1)
17-26
: Добавление тегов Dog, Bird, Cat и отсутствие символа новой строки
Добавлены новые теги для животных. Это поможет при фильтрации и назначении эмоций конкретным видам. Также статический анализ указывает на отсутствие новой строки в конце файла. Рекомендуется добавить пустую строку в конец, чтобы удовлетворить общий стиль работы с YAML-файлами и избежать потенциальных предупреждений.... id: Cat +
🧰 Tools
🪛 yamllint (1.35.1)
[error] 26-26: no new line character at the end of file
(new-line-at-end-of-file)
Resources/Prototypes/Voice/disease_emotes.yml (1)
58-67
: Предложение: Унифицировать стиль комментариевЭмоция Snore использует комментарии "WD EDIT START/END", в то время как другие эмоции используют однострочные комментарии. Рекомендуется придерживаться единого стиля.
Предлагаемые изменения:
- # WD EDIT START whitelist: components: - Vocal blacklist: components: - BorgChassis chatTriggers: - "chat-emote-trigger-snore-1" - # WD EDIT END + # WD EDITResources/Prototypes/Voice/speech_emotes.yml (1)
306-311
: Добавьте документацию для эмоцииРекомендуется добавить описание и иконку для эмоции "Boop", как это сделано для других эмоций.
- type: emote id: Boop name: chat-emote-name-boop category: Vocal + description: chat-emote-desc-boop + icon: Interface/Emotes/boop.png whitelist: components: - BorgChassis
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (37)
Content.Client/Chat/UI/EmotesMenu.xaml.cs
(2 hunks)Content.Client/Options/UI/Tabs/MiscTab.xaml
(1 hunks)Content.Client/Options/UI/Tabs/MiscTab.xaml.cs
(5 hunks)Content.Client/UserInterface/Systems/MenuBar/GameTopMenuBarUIController.cs
(4 hunks)Content.Client/_White/UI/Emotes/EmotesMenuType.cs
(1 hunks)Content.Client/_White/UI/Emotes/WhiteEmotesMenu.xaml
(1 hunks)Content.Client/_White/UI/Emotes/WhiteEmotesMenu.xaml.cs
(1 hunks)Content.Client/_White/UI/Emotes/WhiteEmotesUIController.cs
(1 hunks)Content.Client/_White/UI/Emotions/EmotionsUIController.cs
(0 hunks)Content.Server/Chat/Systems/ChatSystem.Emote.cs
(1 hunks)Content.Shared/_White/CVars.cs
(1 hunks)Resources/Locale/en-US/_white/chat/emotion.ftl
(1 hunks)Resources/Locale/en-US/_white/emotes/speech-emotes.ftl
(0 hunks)Resources/Locale/en-US/_white/escape-menu/options-menu.ftl
(1 hunks)Resources/Locale/en-US/chat/emotes.ftl
(2 hunks)Resources/Locale/en-US/deltav/chat/emotes.ftl
(1 hunks)Resources/Locale/en-US/emotes.ftl
(0 hunks)Resources/Locale/en-US/nyanotrasen/chat/emotes.ftl
(1 hunks)Resources/Locale/ru-RU/_white/chat/emotion.ftl
(1 hunks)Resources/Locale/ru-RU/_white/emotes/speech-emotes.ftl
(0 hunks)Resources/Locale/ru-RU/_white/escape-menu/options-menu.ftl
(1 hunks)Resources/Locale/ru-RU/chat/emotes.ftl
(1 hunks)Resources/Locale/ru-RU/deltav/chat/emotes.ftl
(1 hunks)Resources/Locale/ru-RU/nyanotrasen/chat/emotes.ftl
(1 hunks)Resources/Prototypes/Actions/emotes.yml
(1 hunks)Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml
(1 hunks)Resources/Prototypes/DeltaV/Voice/speech_emotes.yml
(1 hunks)Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
(3 hunks)Resources/Prototypes/Entities/Mobs/NPCs/dogs.yml
(1 hunks)Resources/Prototypes/Entities/Mobs/Species/harpy.yml
(1 hunks)Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml
(1 hunks)Resources/Prototypes/Nyanotrasen/Voice/speech_emotes.yml
(1 hunks)Resources/Prototypes/Voice/disease_emotes.yml
(3 hunks)Resources/Prototypes/Voice/speech_emotes.yml
(16 hunks)Resources/Prototypes/Voice/tail_emotes.yml
(1 hunks)Resources/Prototypes/_White/Voice/speech_emotes.yml
(1 hunks)Resources/Prototypes/_White/tags.yml
(1 hunks)
💤 Files with no reviewable changes (4)
- Content.Client/_White/UI/Emotions/EmotionsUIController.cs
- Resources/Locale/en-US/emotes.ftl
- Resources/Locale/ru-RU/_white/emotes/speech-emotes.ftl
- Resources/Locale/en-US/_white/emotes/speech-emotes.ftl
✅ Files skipped from review due to trivial changes (4)
- Content.Client/_White/UI/Emotes/EmotesMenuType.cs
- Resources/Prototypes/Entities/Mobs/Species/harpy.yml
- Content.Client/_White/UI/Emotes/WhiteEmotesMenu.xaml
- Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
🧰 Additional context used
🪛 yamllint (1.35.1)
Resources/Prototypes/_White/tags.yml
[error] 26-26: no new line character at the end of file
(new-line-at-end-of-file)
🔇 Additional comments (54)
Resources/Locale/en-US/_white/escape-menu/options-menu.ftl (1)
1-1
: Добавлен перевод для переключателя типа меню эмоций.
Хорошая локализация. Важно убедиться, что все элементы интерфейса, связанные с этим ключом ui-options-emotes-menu
, корректно отображаются и тестируются.
Resources/Locale/ru-RU/_white/escape-menu/options-menu.ftl (1)
1-1
: Новая локализованная строка для выбора типа меню эмоций.
Строка корректна. Убедитесь, что в коде нет опечаток и что всё работает при переключении на русский язык.
Resources/Locale/en-US/_white/chat/emotion.ftl (3)
2-5
: Блок названий эмоций выглядит хорошо.
Все названия соответствуют ожидаемым действиям. Рекомендуется проверить, не пересекаются ли эти имена с другими имеющимися ключами.
8-11
: Описание действий эмоций адекватно отражает происходящее.
Строки выглядят корректно для описания игровых эмоций в чате. Убедитесь, что переменные, такие как {POSS-ADJ($entity)}
, правильно интерполируются на клиенте.
14-18
: Триггеры эмоций выглядят логично.
Следует проверить, что триггеры корректно сопоставляются с существующей логикой, особенно если в коде есть проверка множественных триггерных фраз.
Resources/Locale/ru-RU/_white/chat/emotion.ftl (3)
2-5
: Названия эмоций переведены корректно.
Всё соответствует ожидаемым действиям и выглядит естественно для русскоязычных игроков.
8-11
: Описания действий эмоций вызывают понятные изображения в чате.
Формулировки «кивает», «качает головой», «хмурится» и «улыбается» звучат хорошо. Убедитесь в отсутствии стилистических несоответствий.
14-18
: Триггеры эмоций на русском языке добавлены корректно.
Рекомендуется протестировать, чтобы убедиться, что данные фразы (например, «качает своей головой») корректно активируют соответствующие эмоции в игре.
Resources/Locale/en-US/nyanotrasen/chat/emotes.ftl (3)
1-7
: Новые названия эмоций выглядят корректно
Добавление шести уникальных названий эмоций для кошек на английском языке выглядит удачным шагом. Названия легко читаются и соответствуют общему стилю.
8-14
: Сообщения к эмоциям оформлены последовательно
Текстовые описания эмоций хорошо отражают суть звуков, которые должны воспроизводиться. Формат единообразен и понятен.
15-23
: Проверить корректность всех триггеров эмоций
Триггеры для эмоций (такие как "mews", "nyas", "mraows") охватывают широкий спектр вариантов. Рекомендуется убедиться, что эти варианты действительно используются игрой и что все формы ввода (включая заглавные буквы, опечатки и т.д.) отражены при необходимости.
Resources/Locale/ru-RU/nyanotrasen/chat/emotes.ftl (3)
1-7
: Добавлены корректные названия эмоций на русском языке
Локализация названий эмоций (шипение, мяукание и т.п.) выглядит точной и соответствует контексту.
8-14
: Сообщения эмоций читаются естественно
Все сообщения (например, «шипит!», «рычит!») хорошо отражают соответствующие звуки в чате. Формат единообразен.
15-23
: Убедитесь в корректном распознавании триггеров по-русски
Проверить, что чат-система корректно обрабатывает все триггеры на русском языке (мяукает, някает, мраовой вариант и т.д.). При необходимости стоит удостовериться, что различные грамматические формы также учтены правильно.
Resources/Locale/en-US/deltav/chat/emotes.ftl (3)
1-11
: Новые названия эмоций для harpy и vulpine
Названия разнообразны (Rings, Pew, Bang и т.д.) и хорошо подходят для обозначения звуков. Поддерживайте такую же единообразную схему именования в будущем.
12-22
: Содержательные сообщения эмоций
Каждое сообщение с восклицаниями или точками («pew!», «bang!», «rev!») передаёт нужный эффект. Можно расширить описания, если хотите более детально отразить взаимодействие в чате, но текущий формат вполне достаточен.
23-33
: Проверьте полноту триггеров
Список триггеров охватывает различные формы слов: «pews», «pewpews», «bangs» и другие. Рекомендуется удостовериться, что пользовательские ошибки или альтернативные формы (например, случайные заглавные буквы) не вызовут проблем. При необходимости добавляйте уточняющие варианты триггеров.
Resources/Locale/ru-RU/deltav/chat/emotes.ftl (3)
1-11
: Удачное добавление русскоязычных названий эмоций
Новые названия (Звон, Пиу, Бах и т.д.) чётко отражают суть звуков и добавляют атмосферу для русскоязычных пользователей.
12-22
: Сообщения эмоций точно передают звучание
«пиу!», «бах!», «ревёт!» и прочие формы выглядят естественно. Пользователи будут понимать, какие звуки должны отражаться в чате.
23-33
: Проверить все триггеры для русской локализации
Для форм «пиукает», «пиу-пиукает», «бахает» и других надо убедиться, что чат корректно обрабатывает такие составные варианты. Возможно, следует протестировать в разных ситуациях, чтобы исключить несоответствия.
Content.Client/UserInterface/Systems/MenuBar/GameTopMenuBarUIController.cs (3)
28-28
: Проверьте корректность внедрения WhiteEmotesUIController.
Обратите внимание, что класс WhiteEmotesUIController
должен полноценно обслуживать функционал меню эмоций, заместив ранее использовавшийся контроллер. Убедитесь, что все вызовы инициализации и выгрузки переданы корректно.
52-52
: Убедитесь в последовательности выгрузки.
Метод UnloadButtons()
теперь вызывает _whiteEmotes.UnloadButton()
. Проверьте, не осталось ли логики, которую ранее обрабатывал старый контроллер эмоций и которая должна быть перенесена в WhiteEmotesUIController
.
66-66
: Убедитесь в последовательности загрузки.
При добавлении LoadButton()
для _whiteEmotes
проверьте, что его запуск производится в нужном порядке относительно других контроллеров. Это гарантирует корректное отображение кнопок и отсутствие конфликтов.
Content.Client/_White/UI/Emotes/WhiteEmotesMenu.xaml.cs (2)
16-16
: Хорошая реализация интерфейса IBaseEmoteMenu.
Класс WhiteEmotesMenu
удобно вписывается в общую архитектуру отрисовки окна эмоций. Поддержка интерфейса даёт гибкость для альтернативных реализаций.
66-69
: Отличная идея вынести EmoteMenuButton в отдельный класс.
Это улучшает модульность кода, облегчает поддержку и доработку логики отображения. Можно позже добавить, при необходимости, новые поля (например, иконки) без изменения базовой функциональности меню эмоций.
Content.Client/Chat/UI/EmotesMenu.xaml.cs (2)
3-3
: Следите за дублированием кода.
Подключение пространства имён Content.Client._White.UI.Emotes
указывает на использование новых компонентов. Убедитесь, что общий функционал с другими меню эмоций (например, WhiteEmotesMenu) не дублируется и реализован единообразно.
18-18
: Удачное добавление IBaseEmoteMenu к EmotesMenu.
Единый интерфейс упрощает переключение между разными вариантами меню (оконное, радиальное и т.д.). Это соответствует идее масштабируемого дизайна и улучшает читаемость кодовой базы.
Resources/Locale/en-US/chat/emotes.ftl (2)
20-26
: Добавление новых эмоций выглядит корректным.
Новые названия эмоций хорошо вписываются в общий список и помогают разнообразить взаимодействие игроков.
75-127
: Обширный список триггеров.
Расширенный перечень триггеров повышает вариативность эмоций в чате. Проверьте, не дублируются ли некоторые триггеры и не создаётся ли путаница у игроков, например «snaps» и «snaps fingers».
Resources/Locale/ru-RU/chat/emotes.ftl (2)
1-35
: Корректность перевода названий эмоций.
Добавленные переводы эмоций (например, «Чихание», «Сальто», «Кручение») выглядят адекватно. Проверьте, что термины не конфликтуют с другими локализованными элементами игры.
75-127
: Проверка новых триггеров в русской локализации.
Расширенные варианты, такие как «орет», «вопит», «визжит» и т.д., добавляют богатство выражения. Рекомендуется проверить, что все триггеры легко вводить и они соответствуют нормам языка (не опечатки).
Content.Client/_White/UI/Emotes/WhiteEmotesUIController.cs (3)
20-28
: Инъекция зависимостей.
Использование [Dependency] здесь выглядит уместным. Убедитесь, что в других местах кода всё корректно, и отсутствуют циклические зависимости.
85-105
: Обработка разных стилей меню эмоций.
Логика выбора EmotesMenuType выглядит корректной. Два стиля (Window и Radial) расширяют удобство для пользователей. Убедитесь, что Radial-меню корректно открывается и закрывается при использовании быстрых команд.
137-147
: Событие воспроизведения эмоции.
Обработка времени последнего использования хорошо защищает от спама. При этом, убедитесь, что серверная часть корректно отслеживает эти события, чтобы избежать несинхронного состояния.
Content.Client/Options/UI/Tabs/MiscTab.xaml (1)
22-27
: Новый визуальный элемент для выбора меню эмоций.
Добавление блока для EmotesMenuType в MiscTab улучшает удобство выбора стиля меню эмоций. Убедитесь, что названия вариантов (Window, Radial) переведены локализовано при необходимости.
Content.Server/Chat/Systems/ChatSystem.Emote.cs (1)
87-87
: Изменение логики проверки в вайтлисте
Данный код теперь использует IsWhitelistPassOrNull
вместо IsWhitelistFailOrNull
. Это означает, что ресурс должен явно находиться в разрешённом списке (или не иметь условий), чтобы пройти проверку. Убедитесь, что все связанные элементы (например, другие места, где вызывается TryEmoteWithChat
) корректно обрабатывают новую логику вайтлиста. Если до этого допускались все сущности, кроме явно запрещённых, то теперь, возможно, понадобится расширить вайтлисты.
Content.Client/Options/UI/Tabs/MiscTab.xaml.cs (3)
64-85
: Добавление настроек стиля меню эмоций
Данный блок кода создаёт новый UI-элемент для выбора типа меню эмоций и привязывает его к WhiteCVars.EmotesMenuStyle
. Это удобное решение, позволяющее пользователям переключаться между разными интерфейсами эмоций. Убедитесь, что все перечисленные значения EmotesMenuType
корректно отображаются в элементе OptionButton
и что при смене стиля всё действительно работает ожидаемо в клиентском интерфейсе.
194-198
: Сохранение выбранного типа меню эмоций
Код записывает значение выбранного пункта в WhiteCVars.EmotesMenuStyle
. Похоже, что всё сделано правильно. Однако рекомендуется проверить, корректно ли этот стиль меню возвращается и учитывается при следующем запуске клиента, а также при переключении серверных или локальных настроек.
Line range hint 207-229
: Условие блокировки кнопки "Apply" обогащено проверкой типа меню эмоций
Код проверяет, совпадает ли текущая настройка меню эмоций с сохранённой, и учитывает это при решении, нужно ли разблокировать кнопку "Apply". Выглядит корректно и согласуется с остальной логикой. Убедитесь, что при ручном переключении меню эмоций и возврате к исходному значению кнопка снова блокируется.
Resources/Prototypes/Voice/tail_emotes.yml (1)
4-17
: Расширенное использование whitelist
и обновлённые триггеры эмоции
Новая секция whitelist
указывает, что эмоции доступны только существам с тегами Dog
и Cat
. Это повышает реалистичность, исключая доступ к эмоции для неподходящих видов. Также расширен список триггеров для WagTail
, что предоставляет более гибкие способы вызвать эмоцию через чат. Всё выглядит корректно, однако убедитесь, что эти новые триггеры локализованы и надлежащим образом отражаются в пользовательском интерфейсе.
Resources/Prototypes/Actions/emotes.yml (1)
6-6
: Одобрено: Стандартизация триггеров эмоций
Изменения корректно стандартизируют формат триггеров для эмоций Flip, Spin и Jump, используя локализационные ключи вместо прямого текста. Это улучшает поддержку мультиязычности и согласуется с целями PR.
Also applies to: 14-14, 22-22
Resources/Prototypes/_White/Voice/speech_emotes.yml (1)
5-6
: Проверьте необходимость множественных триггеров
Структура триггеров эмоций обновлена корректно. Однако, эмоция ShakeHead имеет два триггера, в то время как остальные имеют по одному. Убедитесь, что это сделано намеренно и соответствует требованиям.
Запустите следующий скрипт для проверки согласованности триггеров:
Also applies to: 12-14, 20-21, 27-28
✅ Verification successful
Подтверждено наличие двух триггеров для эмоции ShakeHead
На основе анализа файла подтверждаю, что эмоция ShakeHead действительно имеет два триггера:
- "chat-emote-trigger-shake-head-1"
- "chat-emote-trigger-shake-head-2"
В то время как остальные эмоции (Nod, Frown, Smile) имеют по одному триггеру. Это отличие в количестве триггеров является намеренным, так как файл содержит полностью структурированные и отформатированные определения для всех эмоций.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Описание: Проверка количества триггеров у эмоций
# Поиск всех эмоций с множественными триггерами
rg "chatTriggers:" -A 3 "Resources/Prototypes" | grep -B 1 "^ - \"chat-emote-trigger"
Length of output: 83
Script:
#!/bin/bash
# Поиск всех файлов эмоций и их содержимого
fd -e yml -e yaml . Resources/Prototypes/_White/Voice/ -x cat {}
Length of output: 7371
Resources/Prototypes/Voice/disease_emotes.yml (4)
6-15
: Одобрено: Добавление компонентных ограничений для Sneeze
Корректно реализованы ограничения компонентов через whitelist/blacklist. Структура соответствует общему формату системы эмоций.
28-28
: Исправление: Корректное именование компонента в blacklist
Исправление опечатки в имени компонента BorgChassis и добавление стандартизированного триггера.
Also applies to: 30-30
49-49
: Исправление: Обновление blacklist для Yawn
Аналогичное исправление для эмоции Yawn. Изменения согласованы с общей структурой.
Also applies to: 51-51
Line range hint 1-67
: Проверка: Согласованность с системой локализации
Убедитесь, что все новые ключи триггеров имеют соответствующие записи в файлах локализации.
✅ Verification successful
Локализация триггеров эмоций проверена и подтверждена
Все новые ключи триггеров эмоций имеют корректные записи в файлах локализации как для русского (ru-RU), так и для английского (en-US) языков:
- chat-emote-trigger-sneeze-1
- chat-emote-trigger-cough-1
- chat-emote-trigger-yawn-1
- chat-emote-trigger-snore-1
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Описание: Проверка наличия локализационных ключей
# Извлекаем все ключи триггеров
triggers=$(rg "chat-emote-trigger-" "Resources/Prototypes" -o | sort -u)
# Проверяем наличие ключей в файлах локализации
for trigger in $triggers; do
echo "Checking $trigger"
rg "$trigger" "Resources/Locale"
done
Length of output: 2505
Script:
#!/bin/bash
# Извлекаем конкретные ключи триггеров из файла disease_emotes.yml
rg "chat-emote-trigger-[a-z0-9-]+" Resources/Prototypes/Voice/disease_emotes.yml -o
# Проверяем наличие этих ключей в файлах локализации
echo "Checking localization files:"
rg "chat-emote-trigger-(sneeze|cough|yawn|snore)-1" Resources/Locale/
Length of output: 933
Resources/Prototypes/Nyanotrasen/Voice/speech_emotes.yml (1)
6-13
: Структурные изменения в эмоциях
Изменения корректно ограничивают эмоции для кошачьих персонажей и стандартизируют локализационные ключи. Реализация последовательна во всех эмоциях.
Рекомендации:
- Убедитесь, что все локализационные ключи определены в соответствующих файлах локализации.
- Проверьте, что система тегов правильно интегрирована с системой проверки прав доступа к эмоциям.
Also applies to: 19-29, 35-42, 48-55, 61-68
✅ Verification successful
Локализационные ключи и теги для кошачьих эмоций подтверждены
Проверка показала, что все локализационные ключи корректно определены как в английской (en-US), так и в русской (ru-RU) локализации. Каждая эмоция имеет соответствующие сообщения и триггеры на обоих языках.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Проверка наличия локализационных ключей
rg -g '*.ftl' "chat-emote-(msg|trigger)-(hisses|meow|mew|growl|purr)"
Length of output: 2275
Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml (1)
87-91
: Добавление тега для кошачьих персонажей
Тег Cat корректно добавлен к сущности Felinid, что обеспечивает правильную работу системы ограничений эмоций.
Рекомендация: Убедитесь, что все сущности кошачьего типа в игре имеют соответствующий тег.
✅ Verification successful
Let me gather more information to verify if there are any other cat-like entities that might need the Cat tag.
Let me check specifically for cat-related entities to ensure we haven't missed any that might need the Cat tag.
Let me check the content of files that might contain cat-related entities to ensure we identify all entities that should have the Cat tag.
Let me check the specific content of the pets file to see if there are any cat entities that need the Cat tag.
Тег Cat успешно добавлен к сущности Felinid
Проверка показала, что тег Cat корректно добавлен к сущности Felinid. В кодовой базе также присутствуют обычные кошки (pets), которые уже имеют необходимые теги для работы системы эмоций. Дополнительных действий не требуется.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Поиск всех сущностей кошачьего типа
rg -l "species: Felinid" | xargs rg "type: Tag"
Length of output: 130
Script:
#!/bin/bash
# Search for any entities that might be cat-related
rg -l "cat|feline|kitten" --type yaml
Length of output: 49557
Script:
#!/bin/bash
# Search for cat-related entities in specific prototype files
rg -l "cat|feline|kitten" Resources/Prototypes/Entities/Mobs/
Length of output: 2853
Script:
#!/bin/bash
# Check content of potentially relevant files
rg "species:|type: Tag" Resources/Prototypes/Entities/Mobs/Customization/Markings/cat_parts.yml Resources/Prototypes/Entities/Mobs/NPCs/pets.yml
Length of output: 1280
Script:
#!/bin/bash
# Check the content of pets.yml for cat entities
rg -A 5 "cat|kitten" Resources/Prototypes/Entities/Mobs/NPCs/pets.yml
Length of output: 328
Resources/Prototypes/DeltaV/Voice/speech_emotes.yml (2)
5-65
: Эмоции для птиц реализованы корректно
Все эмоции для птиц правильно помечены тегом Bird и используют согласованную структуру локализационных ключей.
Рекомендация: Рассмотрите возможность группировки эмоций по подкатегориям для более удобного управления.
71-118
: Эмоции для собак следуют единому шаблону
Эмоции для собак корректно помечены тегом Dog и следуют той же структуре, что и другие эмоции.
Рекомендация: Добавьте комментарии к каждой эмоции, описывающие контекст их использования.
✅ Verification successful
Подтверждаю корректность структуры эмоций для собак
Анализ показывает, что:
- Все эмоции собак (Bark, Snarl, Whine, Howl) следуют единому шаблону с тегом "Dog"
- Структура аналогична другим эмоциям в файле (например, эмоциям птиц с тегом "Bird")
- Каждая эмоция имеет правильно определенные поля id, name, category и whitelist
Рекомендация по добавлению комментариев остается актуальной для улучшения документации кода.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Проверка согласованности тегов для всех эмоций
rg "whitelist:\n\s+tags:" -A 2
Length of output: 224
Script:
#!/bin/bash
# Проверка согласованности тегов для всех эмоций с поддержкой многострочного поиска
rg -U "whitelist:\n\s+tags:" -A 2 Resources/Prototypes/DeltaV/Voice/speech_emotes.yml
Length of output: 772
Script:
#!/bin/bash
# Поиск всех эмоций в файле
rg "^- type: emote" -A 5 Resources/Prototypes/DeltaV/Voice/speech_emotes.yml
Length of output: 1093
Resources/Prototypes/Entities/Mobs/NPCs/dogs.yml (1)
92-96
: Корректное добавление тега!
Добавление тега "Dog" соответствует целям PR по ограничению доступа к эмоциям в зависимости от расы существа.
Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml (1)
119-123
: Логичное добавление тега!
Добавление тега "Dog" согласуется с существующими характеристиками сущности (DogVision, язык Canilunzt) и поддерживает новую систему эмоций.
Resources/Prototypes/Voice/speech_emotes.yml (2)
15-20
: Улучшение структуры триггеров эмоций!
Стандартизация формата триггеров чата улучшает читаемость и поддерживаемость кода.
230-234
: Последовательное применение ограничений
Добавление blacklist с BorgChassis для DefaultDeathgasp соответствует общей структуре других эмоций.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🔭 Outside diff range comments (1)
Resources/Prototypes/Voice/speech_emote_sounds.yml (1)
Line range hint
1-594
: Общие рекомендации по реорганизации звуков эмоцийВ соответствии с целями PR по категоризации эмоций по расам и видам, необходима полная реорганизация звуковых эффектов.
Рекомендуется:
- Создать отдельные конфигурации для каждого вида существ
- Определить базовый набор общих эмоций
- Добавить специфические эмоции для каждой расы
- Удалить несоответствующие звуки из конфигураций
Пример структуры:
- type: emoteSounds id: BaseEmotes # Базовые эмоции для всех sounds: Laugh: {} Scream: {} - type: emoteSounds id: HumanEmotes # Специфические для людей parent: BaseEmotes sounds: Whistle: {} Sigh: {} - type: emoteSounds id: FelinidEmotes # Специфические для кошачьих parent: BaseEmotes sounds: Meow: collection: CatMeows Hisses: collection: CatHisses
🧹 Nitpick comments (2)
Resources/Prototypes/Voice/speech_emotes.yml (2)
15-20
: Стандартизация триггеров чата требует унификацииНаблюдается несогласованность в количестве триггеров для разных эмоций:
- Scream: 4 триггера
- Laugh: 4 триггера
- Crying: 2 триггера
- Click: 2 триггера
- Snap: 7 триггеров
Рекомендуется унифицировать количество триггеров для схожих типов эмоций для поддержания консистентности.
Also applies to: 35-40, 98-101, 165-168, 199-207
Line range hint
1-403
: Добавьте документацию по категоризации эмоцийДля улучшения поддержки кода рекомендуется добавить комментарии в начало файла, объясняющие:
- Систему категоризации эмоций по расам и животным
- Правила использования тегов и компонентов
- Структуру идентификаторов триггеров
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
Resources/Prototypes/Voice/disease_emotes.yml
(3 hunks)Resources/Prototypes/Voice/speech_emote_sounds.yml
(7 hunks)Resources/Prototypes/Voice/speech_emotes.yml
(16 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- Resources/Prototypes/Voice/disease_emotes.yml
🔇 Additional comments (6)
Resources/Prototypes/Voice/speech_emote_sounds.yml (4)
15-17
: Проверьте необходимость звуков кошачьих эмоций для людей
Согласно целям PR, эмоции должны быть специфичны для каждой расы/вида. Однако, у людей (MaleHuman
и FemaleHuman
) всё ещё присутствуют кошачьи звуки Meow
и Hisses
. Это противоречит заявленной цели разделения эмоций по расам.
Рекомендуется удалить эти звуки из конфигурации людей, так как они не соответствуют логике разделения эмоций по расам.
Also applies to: 51-53
123-125
: Проверьте необходимость звуков кошачьих эмоций для слизней
Аналогично людям, у слизней (MaleSlime
и FemaleSlime
) также присутствуют кошачьи звуки. Это не соответствует концепции видоспецифичных эмоций.
Рекомендуется удалить кошачьи звуки из конфигурации слизней и, возможно, добавить специфичные для слизней звуки.
Also applies to: 161-163
322-324
: Проверьте необходимость звуков кошачьих эмоций для гномов
У гномов (UnisexDwarf
и FemaleDwarf
) также присутствуют кошачьи звуки, что не соответствует концепции разделения эмоций по расам.
Рекомендуется удалить кошачьи звуки из конфигурации гномов и рассмотреть возможность добавления уникальных гномьих звуков.
Also applies to: 359-361
556-562
: Проверьте необходимость звуков кошачьих эмоций для IPC
У роботов IPC (UnisexIPC
) присутствуют кошачьи звуки с дополнительными параметрами вариации. Учитывая механическую природу IPC, наличие биологических звуков кажется нелогичным.
Рекомендуется:
- Удалить кошачьи звуки из конфигурации IPC
- Рассмотреть возможность замены их на синтезированные или механические аналоги, если требуется похожая функциональность
Resources/Prototypes/Voice/speech_emotes.yml (2)
377-385
: Добавьте тег Dog для эмоций Mars и Wurble
Как было отмечено в предыдущем обзоре, рекомендуется добавить тег Dog к эмоциям Mars и Wurble, так как они уже имеют теги Bird и Cat.
tags:
- Bird
- Cat
+ - Dog
Also applies to: 393-400
231-236
: Обновление компонентов для эмоций машин
Корректное добавление компонента Silicon для эмоций машин, но рекомендуется:
- Проверить необходимость добавления других компонентов для роботов
- Убедиться, что все эмоции машин имеют одинаковый набор компонентов в whitelist
Also applies to: 250-256, 311-317, 363-369
✅ Verification successful
This script will help us find all component whitelists and blacklists in yaml files to verify the consistency of machine-related emotes.
This will show us the complete content of the speech emotes file to analyze the context and patterns of component usage.
Компоненты для эмоций машин корректно обновлены
Проверка показала, что все эмоции машин (Beep, Boop, Chime, Buzz, Buzz-Two, Ping, Whirr) имеют одинаковый набор компонентов в whitelist:
- BorgChassis
- Silicon
Также компоненты BorgChassis и Silicon корректно добавлены в blacklist для DefaultDeathgasp и используются в whitelist для SiliconDeathgasp.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Поиск всех эмоций с компонентами BorgChassis или Silicon
rg "components:(\s+-.+)+" --type yaml | rg -A 2 "BorgChassis|Silicon"
Length of output: 71
Script:
#!/bin/bash
# Поиск файлов yaml с эмоциями
fd -e yml -e yaml | xargs cat | grep -A 5 "whitelist:\|blacklist:" | grep -A 2 "components:"
Length of output: 16523
Script:
#!/bin/bash
# Поиск конкретного файла с эмоциями
cat Resources/Prototypes/Voice/speech_emotes.yml
Length of output: 8434
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
Content.Client/Options/UI/Tabs/MiscTab.xaml.cs (3)
64-86
: Улучшить стиль комментариев и структуру кодаИнициализация меню эмоций реализована корректно, но есть замечания по стилю:
- Комментарии "WD EDIT" нарушают единообразие кодовой базы
- Большой блок кода можно разбить на отдельные методы для улучшения читаемости
Предлагаю выделить инициализацию в отдельный метод:
- // WD EDIT START - id = 0; - var emotesMenuStyle = _cfg.GetCVar(WhiteCVars.EmotesMenuStyle); - foreach (var type in Enum.GetValues(typeof(EmotesMenuType))) - { - var name = type.ToString()!; - EmotesMenuType.AddItem(name, id); - - if (name == emotesMenuStyle) - EmotesMenuType.SelectId(id); - - EmotesMenuType.SetItemMetadata(id, name); - - id++; - } - - EmotesMenuType.OnItemSelected += args => - { - EmotesMenuType.SelectId(args.Id); - UpdateApplyButton(); - }; - // WD EDIT END + InitializeEmotesMenu(); + +private void InitializeEmotesMenu() +{ + var id = 0; + var emotesMenuStyle = _cfg.GetCVar(WhiteCVars.EmotesMenuStyle); + + foreach (var type in Enum.GetValues(typeof(EmotesMenuType))) + { + var name = type.ToString()!; + EmotesMenuType.AddItem(name, id); + + if (name == emotesMenuStyle) + EmotesMenuType.SelectId(id); + + EmotesMenuType.SetItemMetadata(id, name); + id++; + } + + EmotesMenuType.OnItemSelected += args => + { + EmotesMenuType.SelectId(args.Id); + UpdateApplyButton(); + }; +}
196-199
: Сохранение настроек реализовано корректноЛогика сохранения типа меню эмоций реализована правильно, но стоит удалить комментарии "WD EDIT" для поддержания единого стиля кода.
209-209
: Обновление состояния кнопки реализовано верноПроверка изменений типа меню эмоций корректно интегрирована в логику обновления состояния кнопки применения. Рекомендуется удалить комментарии "WD EDIT" для поддержания единого стиля.
Also applies to: 233-233
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
Content.Client/Options/UI/Tabs/MiscTab.xaml
(1 hunks)Content.Client/Options/UI/Tabs/MiscTab.xaml.cs
(5 hunks)Content.Shared/_White/CVars.cs
(1 hunks)Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
(3 hunks)Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
- Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml
- Content.Shared/_White/CVars.cs
- Content.Client/Options/UI/Tabs/MiscTab.xaml
- Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
🔇 Additional comments (1)
Content.Client/Options/UI/Tabs/MiscTab.xaml.cs (1)
4-4
: Импорт корректен!
Добавление пространства имен для EmotesMenuType логично структурировано и необходимо для новой функциональности.
Описание PR
Меню эмоций теперь можно переключать в настройках, выбирая стандартное окно или радиальное меню.
Все эмоции теперь переданы определённым расам и животным (Теперь у человека не будут эмоции кошек крыс и собак). В меню добавлены эмоции с анимациями
Медиа
Список
В финальной версии она переведена
Изменения
🆑 Spatison