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

[PORT] RPD #715

Merged
merged 4 commits into from
Dec 18, 2024
Merged

[PORT] RPD #715

merged 4 commits into from
Dec 18, 2024

Conversation

CrimeMoot
Copy link
Collaborator

@CrimeMoot CrimeMoot commented Dec 18, 2024

Порт рабочего RPD с Wizard
image

373971324-6a4b431e-5722-4d4e-9e00-00afcd5af926.mp4

space-wizards/space-station-14@f53a691

Summary by CodeRabbit

  • Новые функции

    • Добавлены новые кнопки в радиальное меню для "Трубопроводов", "Атмосферных утилит", "Насосов и клапанов" и "Вентиляционных отверстий".
    • Введена возможность использования зеркального прототипа при размещении объектов.
    • Добавлен новый объект "RPD" для быстрого строительства.
  • Исправления ошибок

    • Уточнены условия для добавления зарядов и их отображения.
  • Документация

    • Обновлены локализационные файлы для новых компонентов на английском и русском языках.
  • Изменения в структуре

    • Обновлены типы данных для полей, связанных с зарядами, на более точные представления.

Copy link

coderabbitai bot commented Dec 18, 2024

Обзор изменений

Walkthrough

Этот обновленный набор изменений привносит значительные улучшения в систему удаленного строительства (RCD) и связанные с ней компоненты. Основные изменения включают введение нового устройства RPD (Remote Prototyper Device), расширение возможностей RCD, переход на использование FixedPoint2 для более точных вычислений зарядов, и добавление новых прототипов для строительства трубопроводов, вентиляции и атмосферных утилит.

Changes

Файл Изменения
RCDConstructionGhostSystem.cs Добавлена поддержка зеркального прототипа, новое событие переворота, обновлена логика размещения
RCDMenu.xaml Новые радиальные кнопки для труб, вентиляции, насосов и атмосферных утилит
RCDComponent.cs Новые свойства UseMirrorPrototype и IsRpd
RCDPrototype.cs Добавлен MirrorPrototype, изменен тип Cost на FixedPoint2
Локализация Добавлены новые термины для компонентов RCD на русском и английском

Poem

🛠️ Кролик-инженер поёт:

В мире труб и механизмов
RPD летит, как метеор!
Зеркальный прототип танцует,
Точность в каждом вычислении живёт
Да здравствует прогресс! 🔧


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 generate docstrings to generate docstrings for this PR. (Beta)
  • @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.

Copy link

github-actions bot commented Dec 18, 2024

RSI Diff Bot; head commit 9cf6882 merging into 7808c0d
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Objects/Tools/rpd.rsi

State Old New Status
icon Added
inhand-left Added
inhand-right Added

Edit: diff updated after 9cf6882

Copy link

@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

🧹 Nitpick comments (13)
Content.Client/RCD/RCDConstructionGhostSystem.cs (3)

23-25: Добавление флага и события для зеркального прототипа
Новые поля (_useMirrorPrototype и FlipConstructionPrototype) расширяют функциональность системы. Убедитесь, что событие FlipConstructionPrototype реально используется в коде и добавьте при необходимости обработчики, чтобы избежать «мертвого» кода.


43-67: Обработка нажатия на клавишу переворота
Реализация логики Flip корректна: проверяет наличие активного режима размещения, наличие зеркального прототипа и при успешной проверке отправляет сетевое событие. Однако стоит дополнительно обрабатывать ситуации, когда _placementManager.CurrentPermission оказывается недоступен, чтобы избежать редких ошибок Null Reference.


117-127: Упрощение кода в методе CreatePlacer
Метод корректно сохраняет режим размещения и создаёт новую конфигурацию PlacementInformation. При необходимости можно вынести общий код по очистке и инициализации плейсера в вспомогательную функцию, если планируется дальнейшее расширение логики.

Content.Shared/RCD/Systems/RCDSystem.cs (1)

483-489: Блокировка деактивации тайла в режиме RPD
Если RCD помечен как RPD-устройство, код принудительно возвращает, сообщая игроку об ограничении. Это защищает от нежелательных операций, однако целесообразно разъяснить пользователям, почему RPD режим не даёт деактивировать тайл напрямую.

Resources/Locale/ru-RU/rcd/components/rcd-component.ftl (1)

41-44: Уберите лишние пробелы

В конце следующих строк обнаружены лишние пробелы:

  • Строка 41: "Трубопроводы "
  • Строка 42: "Атмосферные утилиты "
  • Строка 43: "Насосы и клапаны "
  • Строка 44: "Вентиляционные отверстия "
-rcd-component-piping = Трубопроводы  
-rcd-component-atmosphericutility = Атмосферные утилиты  
-rcd-component-pumps = Насосы и клапаны  
-rcd-component-vents = Вентиляционные отверстия  
+rcd-component-piping = Трубопроводы
+rcd-component-atmosphericutility = Атмосферные утилиты
+rcd-component-pumps = Насосы и клапаны
+rcd-component-vents = Вентиляционные отверстия
Content.Shared/RCD/Systems/RCDAmmoSystem.cs (1)

47-47: Требуется форматирование выражения

Отсутствует пробел после запятой в выражении charges.MaxCharges - charges.Charges,comp.Charges.

Предлагаемое исправление:

-        var count = FixedPoint2.Min(charges.MaxCharges - charges.Charges,comp.Charges);
+        var count = FixedPoint2.Min(charges.MaxCharges - charges.Charges, comp.Charges);
Content.Shared/RCD/Components/RCDComponent.cs (1)

45-49: Рекомендуется добавить документацию о значении по умолчанию

Свойство UseMirrorPrototype инициализируется значением false, но это не отражено в документации. Рекомендуется добавить информацию о значении по умолчанию в XML-документацию.

    /// <summary>
    /// Indicates if a mirrored version of the construction prototype should be used (if available)
+   /// Default value is false.
    /// </summary>
Content.Shared/Charges/Systems/SharedChargesSystem.cs (1)

88-88: Обновите документацию методов

XML-документация для методов HasInsufficientCharges и UseCharges всё ещё ссылается на числовые значения. Следует обновить документацию, чтобы отразить использование FixedPoint2.

    /// <summary>
    /// Gets the limited charges component and returns true if the number of charges remaining is less than the specified value.
+   /// The comparison is done using FixedPoint2 arithmetic.
    /// Will return false if there is no limited charges component.
    /// </summary>

Also applies to: 100-100

Content.Shared/RCD/RCDPrototype.cs (2)

48-52: Рассмотрите добавление валидации для MirrorPrototype

Свойство MirrorPrototype может содержать недействительный идентификатор прототипа. Рекомендуется добавить валидацию при загрузке прототипа.

    [DataField, ViewVariables(VVAccess.ReadOnly)]
-   public string? MirrorPrototype { get; private set; } = string.Empty;
+   [ValidatePrototypeId<EntityPrototype>]
+   public string? MirrorPrototype { get; private set; } = string.Empty;

58-58: Обновите значение Cost по умолчанию

При изменении типа Cost с int на FixedPoint2, значение по умолчанию осталось целочисленным. Рекомендуется явно указать тип.

-   public FixedPoint2 Cost { get; private set; } = 1;
+   public FixedPoint2 Cost { get; private set; } = FixedPoint2.New(1);
Resources/Prototypes/RPD/rpd.yml (1)

1-53: Рекомендуется пересмотреть стоимость компонентов.

Базовые трубы имеют стоимость 0.5, в то время как все остальные компоненты имеют стоимость 1. Предлагаю либо унифицировать стоимость, либо документировать причину различия.

Also applies to: 54-251

Resources/Prototypes/Entities/Objects/Tools/tools.yml (2)

366-366: Необходимо обеспечить согласованность языка в описаниях

Описание RPD на русском языке, в то время как все остальные сущности используют английский язык. Рекомендуется поддерживать единообразие языка во всех описаниях сущностей.

-  description: Устройство, используемое для быстрой передачи информации по каналам.
+  description: A device used for rapid pipe deployment and information transfer.

362-395: Рекомендуется добавить компонент UserInterface

RPD наследует большинство компонентов от RCD, но явное определение интерфейса пользователя может быть полезным для специфичной функциональности RPD.

  - type: Sprite
    sprite: Objects/Tools/rpd.rsi
+  - type: UserInterface
+    interfaces:
+      enum.RpdUiKey.Key:
+        type: RPDMenuBoundUserInterface
+  - type: ActivatableUI
+    inHandsOnly: true
+    key: enum.RpdUiKey.Key
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7808c0d and 1428042.

⛔ Files ignored due to path filters (21)
  • Resources/Textures/Interface/Radial/RPD/bend.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/dual_port.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/fourway.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/gas_filter.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/gas_mixer.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/injector.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/pneumatic_valve.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/port.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/pump_manual_valve.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/pump_pressure.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/pump_signal_valve.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/pump_volume.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/radiator.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/scrub_off.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/straight.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/tjunction.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/vent_off.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/vent_passive.png is excluded by !**/*.png
  • Resources/Textures/Objects/Tools/rpd.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/Objects/Tools/rpd.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/Objects/Tools/rpd.rsi/inhand-right.png is excluded by !**/*.png
📒 Files selected for processing (18)
  • Content.Client/RCD/RCDConstructionGhostSystem.cs (3 hunks)
  • Content.Client/RCD/RCDMenu.xaml (2 hunks)
  • Content.Server/Charges/Systems/ChargesSystem.cs (2 hunks)
  • Content.Shared/Charges/Components/LimitedChargesComponent.cs (2 hunks)
  • Content.Shared/Charges/Systems/SharedChargesSystem.cs (4 hunks)
  • Content.Shared/RCD/Components/RCDAmmoComponent.cs (2 hunks)
  • Content.Shared/RCD/Components/RCDComponent.cs (1 hunks)
  • Content.Shared/RCD/Components/RCDDeconstructibleComponent.cs (3 hunks)
  • Content.Shared/RCD/RCDEvents.cs (1 hunks)
  • Content.Shared/RCD/RCDPrototype.cs (2 hunks)
  • Content.Shared/RCD/Systems/RCDAmmoSystem.cs (2 hunks)
  • Content.Shared/RCD/Systems/RCDSystem.cs (8 hunks)
  • Resources/Locale/en-US/rcd/components/rcd-component.ftl (1 hunks)
  • Resources/Locale/ru-RU/rcd/components/rcd-component.ftl (1 hunks)
  • Resources/Prototypes/Entities/Objects/Tools/tools.yml (1 hunks)
  • Resources/Prototypes/Entities/Structures/Piping/Atmospherics/pipes.yml (1 hunks)
  • Resources/Prototypes/RPD/rpd.yml (1 hunks)
  • Resources/Textures/Objects/Tools/rpd.rsi/meta.json (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • Resources/Textures/Objects/Tools/rpd.rsi/meta.json
🔇 Additional comments (28)
Content.Client/RCD/RCDConstructionGhostSystem.cs (4)

2-2: Нет замечаний к подключаемым пространствам имён
Использование новых директив выглядит корректно и не вызывает конфликтов в кодовой базе.

Also applies to: 10-11


26-35: Инициализация связки команд
Регистрация горячей клавиши для FlipObject делает функциональность системы более удобной. Убедитесь, что это не конфликтует с другими биндами проекта.


37-41: Освобождение ресурсов при выключении
Хорошо, что проработан порядок отмены биндов команд при завершении системы, чтобы избежать утечек.


106-114: Пересоздание объекта Placer при изменении прототипа
Проверка параметров и повторное создание Placer оправданы, позволяя своевременно обновлять прототип, когда берётся другое устройство или включается зеркало.

Content.Shared/RCD/Systems/RCDSystem.cs (6)

28-28: Подключение FixedPoint
Переход к фиксированной точности улучшает надёжность расчётов при работе с затратами и зарядом в RCD.


69-69: Подписка на событие переворота
Подключение нового события даёт возможность реагировать на изменение прототипа на клиенте.


309-327: Обработка Flip-события на сервере
Проверка, что игрок действительно держит RCD в активной руке прежде чем выставить UseMirrorPrototype, защищает от читерских вызовов. Реализация корректна и повышает безопасность сетевой синхронизации.


523-530: Проверка на присутствие целевого объекта в whitelist
Проверка деактивации объекта по whitelist необходима, чтобы исключить нежелательные структурные элементы. Логика корректна, и всплывающее уведомление помогает пользователям понять ограничения.


644-647: Перепроверка зеркального прототипа
Условие сравнения принимает во внимание и основной, и зеркальный идентификатор. Убедитесь, что проверка не вызывает повторного обновления, когда поля указывают на одну и ту же строку.


686-686: Замена int на FixedPoint2 в RCDDoAfterEvent
Корректный переход на фиксированную точку для стоимости операции. Это повысит согласованность логики зарядов во всём коде.

Also applies to: 693-693

Content.Shared/RCD/Components/RCDAmmoComponent.cs (1)

16-16: Изменение типов на FixedPoint2
Переход на FixedPoint2 сделает систему зарядов более предсказуемой при дробных значениях. Избегайте неочевидных конвертаций в других местах кода.

Content.Shared/Charges/Components/LimitedChargesComponent.cs (2)

2-2: Подключение Content.Shared.FixedPoint
Необходимое пространство имён для использования FixedPoint2. Никаких конфликтов не обнаружено.


17-17: Рефактор зарядов для более точных вычислений
Использование FixedPoint2 как для максимального, так и для текущего количества зарядов позволит гибко регулировать значения. Следите, чтобы в игровой логике корректно обрабатывалось обнуление или переполнение зарядов.

Also applies to: 24-24

Content.Shared/RCD/RCDEvents.cs (1)

30-40: Реализация корректна!

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

Content.Shared/RCD/Components/RCDDeconstructibleComponent.cs (2)

16-16: Улучшение точности расчетов

Изменение типа Cost с int на FixedPoint2 позволяет более точно контролировать стоимость деконструкции.


36-40: Проверьте значение по умолчанию

Новое поле RpdDeconstructable по умолчанию установлено в false. Убедитесь, что это желаемое поведение, так как это означает, что все существующие объекты по умолчанию не будут поддерживать деконструкцию через RPD.

#!/bin/bash
# Проверка использования RpdDeconstructable в прототипах
rg -l "RpdDeconstructable|rpd.*=.*true" Resources/Prototypes/
Resources/Locale/en-US/rcd/components/rcd-component.ftl (1)

48-51: Локализация для новых компонентов трубопровода добавлена корректно!

Новые записи следуют установленным соглашениям об именовании и правильно категоризированы для системы RPD.

Content.Server/Charges/Systems/ChargesSystem.cs (2)

5-5: Добавлена поддержка FixedPoint2

Подключение нового пространства имен для работы с фиксированной точкой.


Line range hint 41-50: Улучшена точность расчетов с использованием FixedPoint2

Метод AddCharges теперь использует FixedPoint2 вместо int для более точных вычислений заряда. Логика обработки перезарядки сохранена и корректно адаптирована под новый тип данных.

#!/bin/bash
# Проверка корректности использования FixedPoint2 в других местах
rg "FixedPoint2" --type cs
Content.Shared/RCD/Systems/RCDAmmoSystem.cs (1)

4-4: Добавлена поддержка FixedPoint2 для системы боеприпасов RCD

Корректное подключение пространства имен для работы с фиксированной точкой.

Content.Shared/RCD/Components/RCDComponent.cs (1)

51-55: Проверьте использование IsRpd в связанных системах

Добавление флага IsRpd может потребовать обновления логики в связанных системах для корректной обработки различий между RCD и RPD.

#!/bin/bash
# Поиск использования IsRpd в системах
rg -l "IsRpd" --type cs
Content.Shared/Charges/Systems/SharedChargesSystem.cs (1)

38-38: Проверьте корректность преобразования типов при вызовах

Изменение типа с int на FixedPoint2 может потребовать явного преобразования в местах вызова метода. Убедитесь, что все вызывающие методы корректно обрабатывают новый тип.

#!/bin/bash
# Поиск вызовов AddCharges
ast-grep --pattern 'AddCharges($expr, $value)' 

Also applies to: 44-44

Content.Client/RCD/RCDMenu.xaml (2)

30-41: Корректная реализация новых кнопок меню RPD!

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


59-70: Правильная организация контейнеров для новых категорий.

Все новые RadialContainer элементы корректно настроены с одинаковыми параметрами расширения и радиуса.

Resources/Prototypes/Entities/Structures/Piping/Atmospherics/pipes.yml (1)

22-26: Проверьте существование эффекта EffectRCDDeconstruct2

Компонент RCDDeconstructable корректно настроен, но необходимо убедиться, что указанный эффект EffectRCDDeconstruct2 существует в системе.

#!/bin/bash
# Проверка наличия эффекта в прототипах
rg -l "EffectRCDDeconstruct2" Resources/Prototypes/Effects/
Resources/Prototypes/Entities/Objects/Tools/tools.yml (3)

368-389: Проверьте полноту списка доступных прототипов

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

#!/bin/bash
# Поиск дополнительных прототипов труб, которые могут быть добавлены
rg -l "parent: BasePipe" Resources/Prototypes/

Рекомендуется организовать прототипы по категориям (например, базовые трубы, клапаны, насосы) для улучшения поддержки кода в будущем.


390-392: Проверьте баланс количества зарядов

Увеличение максимального количества зарядов с 30 до 45 требует проверки баланса. Убедитесь, что это изменение соответствует игровому дизайну.

#!/bin/bash
# Поиск других сущностей с компонентом LimitedCharges для сравнения
rg "type: LimitedCharges" Resources/Prototypes/

393-394: Проверьте наличие спрайта

Убедитесь, что файл Objects/Tools/rpd.rsi существует и содержит все необходимые состояния спрайта.

#!/bin/bash
# Проверка наличия файла спрайта
fd "rpd.rsi$" Resources/Textures/

Copy link

@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: 0

🧹 Nitpick comments (2)
Resources/Prototypes/_SpaceCats/Research/industrial.yml (1)

13-13: Добавьте пустую строку в конец файла

Для соответствия стандартам YAML необходимо добавить символ новой строки в конец файла.

  - AtmosphericTech
+
🧰 Tools
🪛 yamllint (1.35.1)

[error] 13-13: no new line character at the end of file

(new-line-at-end-of-file)

Resources/Prototypes/_SpaceCats/Recipes/Lathes/electronics.yml (1)

18-18: Добавьте пустую строку в конец файла

Для соответствия стандартам YAML необходимо добавить символ новой строки в конец файла.

    Gold: 50
+
🧰 Tools
🪛 yamllint (1.35.1)

[error] 18-18: no new line character at the end of file

(new-line-at-end-of-file)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1428042 and 8f87dc1.

📒 Files selected for processing (4)
  • Content.Shared/RCD/Systems/RCDSystem.cs (9 hunks)
  • Resources/Prototypes/Entities/Structures/Machines/lathe.yml (1 hunks)
  • Resources/Prototypes/_SpaceCats/Recipes/Lathes/electronics.yml (1 hunks)
  • Resources/Prototypes/_SpaceCats/Research/industrial.yml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • Content.Shared/RCD/Systems/RCDSystem.cs
🧰 Additional context used
🪛 yamllint (1.35.1)
Resources/Prototypes/_SpaceCats/Recipes/Lathes/electronics.yml

[error] 18-18: no new line character at the end of file

(new-line-at-end-of-file)

Resources/Prototypes/_SpaceCats/Research/industrial.yml

[error] 13-13: no new line character at the end of file

(new-line-at-end-of-file)

🔇 Additional comments (3)
Resources/Prototypes/Entities/Structures/Machines/lathe.yml (1)

372-372: Добавление RPD в список рецептов протолата выглядит корректным!

Изменение соответствует целям PR по портированию RPD и правильно размещено в секции динамических рецептов.

Resources/Prototypes/_SpaceCats/Research/industrial.yml (1)

1-13: Конфигурация технологии RPD выглядит корректно

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

🧰 Tools
🪛 yamllint (1.35.1)

[error] 13-13: no new line character at the end of file

(new-line-at-end-of-file)

Resources/Prototypes/_SpaceCats/Recipes/Lathes/electronics.yml (1)

11-18: Баланс материалов для создания RPD выглядит обоснованным

Распределение материалов логично:

  • Сталь и стекло как основные компоненты (по 500)
  • Умеренное количество пластика (250)
  • Небольшое количество золота для электроники (50)
🧰 Tools
🪛 yamllint (1.35.1)

[error] 18-18: no new line character at the end of file

(new-line-at-end-of-file)

Copy link

@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

🧹 Nitpick comments (11)
Resources/Prototypes/RPD/rpd.yml (1)

251-251: Отсутствует символ новой строки в конце файла

Добавьте пустую строку в конец файла для соответствия стандартам YAML.

🧰 Tools
🪛 yamllint (1.35.1)

[error] 251-251: no new line character at the end of file

(new-line-at-end-of-file)

Content.Client/RCD/RCDConstructionGhostSystem.cs (1)

43-67: Метод HandleFlip обрабатывает переключение зеркального прототипа.

  1. Проверяется активность PlacementManager и наличие MirrorPrototype.
  2. Переключается логическое значение _useMirrorPrototype и обновляется Placer, после чего отправляется сетевое событие.
    Реализация выглядит корректной, однако стоит убедиться, что сервер всегда проверяет полномочия игрока, чтобы исключить махинации с flipping.
Content.Shared/RCD/Systems/RCDSystem.cs (2)

537-537: Дополнительное условие пропущено в вашем фрагменте.
Строка вероятно относится к ветвлению проверки. Убедитесь, что код закрывает все варианты использования RPD и deconstructable.


648-651: Условие сверки идентификатора прототипа обновлено
Проверка включает и случай, когда MirrorPrototype тоже должен обновиться. Это гарантирует корректную загрузку прототипов при переключении.

Resources/Prototypes/_SpaceCats/Research/industrial.yml (1)

1-13: Добавлена новая технология RPD

  1. Область применения: Industrial, уровень 2.
  2. Предоставляет рецепт RPD при наличии AtmosphericTech.
  3. Стоимость 7500 кажется достаточно высокой, учитывая позиционирование технологии.

Отсутствие пустой строки в конце файла
Мелкая проблема: некоторые инструменты указывают на необходимость новой строки в конце.

🧰 Tools
🪛 yamllint (1.35.1)

[error] 13-13: no new line character at the end of file

(new-line-at-end-of-file)

Resources/Prototypes/_SpaceCats/Recipes/Lathes/electronics.yml (1)

11-18: Новый рецепт lathe для RPD

  1. Указывание материалов (500 Steel, 500 Glass, 250 Plastic, 50 Gold) скомпоновано корректно, учитывая сложность предмета.
  2. Соответствует новой сущности RPD радиосистемы/прототипирования.

Не хватает новой строки в конце файла
Как и в промышленном YAML, следует добавить перевод строки во избежание предупреждений линтера.

🧰 Tools
🪛 yamllint (1.35.1)

[error] 18-18: no new line character at the end of file

(new-line-at-end-of-file)

Content.Shared/RCD/RCDEvents.cs (1)

30-40: Хорошая реализация нового события!

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

 [Serializable, NetSerializable]
 public sealed class RCDConstructionGhostFlipEvent : EntityEventArgs
 {
+    /// <summary>
+    /// Сетевой идентификатор сущности
+    /// </summary>
     public readonly NetEntity NetEntity;
+    /// <summary>
+    /// Флаг использования зеркального прототипа
+    /// </summary>
     public readonly bool UseMirrorPrototype;
Resources/Locale/ru-RU/rcd/components/rcd-component.ftl (1)

41-44: Исправьте лишние пробелы в конце строк

В строках локализации обнаружены лишние пробелы в конце. Это может вызвать проблемы при отображении текста в интерфейсе.

Примените следующие исправления:

-rcd-component-piping = Трубопроводы  
-rcd-component-atmosphericutility = Атмосферные утилиты  
-rcd-component-pumps = Насосы и клапаны  
-rcd-component-vents = Вентиляционные отверстия  
+rcd-component-piping = Трубопроводы
+rcd-component-atmosphericutility = Атмосферные утилиты
+rcd-component-pumps = Насосы и клапаны
+rcd-component-vents = Вентиляционные отверстия
Content.Shared/RCD/Systems/RCDAmmoSystem.cs (1)

47-47: Проверьте форматирование и логику сравнения

Отсутствует пробел после запятой в параметрах FixedPoint2.Min. Также убедитесь, что сравнение с нулём корректно работает для FixedPoint2.

-        var count = FixedPoint2.Min(charges.MaxCharges - charges.Charges,comp.Charges);
+        var count = FixedPoint2.Min(charges.MaxCharges - charges.Charges, comp.Charges);
Content.Shared/RCD/Components/RCDComponent.cs (1)

45-50: Документация для UseMirrorPrototype

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

     /// <summary>
-    /// Indicates if a mirrored version of the construction prototype should be used (if available)
+    /// Indicates if a mirrored version of the construction prototype should be used (if available).
+    /// This property affects the visual representation and placement of constructed objects,
+    /// allowing them to be mirrored horizontally when set to true.
     /// </summary>
Resources/Prototypes/Entities/Structures/Piping/Atmospherics/pipes.yml (1)

22-26: Компонент выглядит корректно реализованным!

Параметры компонента RCDDeconstructable хорошо сбалансированы для газовых труб. Однако рекомендуется добавить комментарии к параметрам для улучшения поддерживаемости кода.

Предлагаю добавить комментарии к параметрам:

  - type: RCDDeconstructable
    cost: 0.5    # Стоимость разборки
    delay: 2     # Задержка разборки в секундах
    fx: EffectRCDDeconstruct2    # Эффект при разборке
    rpd: true    # Возможность разборки с помощью RPD
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7808c0d and 8f87dc1.

⛔ Files ignored due to path filters (21)
  • Resources/Textures/Interface/Radial/RPD/bend.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/dual_port.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/fourway.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/gas_filter.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/gas_mixer.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/injector.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/pneumatic_valve.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/port.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/pump_manual_valve.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/pump_pressure.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/pump_signal_valve.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/pump_volume.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/radiator.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/scrub_off.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/straight.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/tjunction.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/vent_off.png is excluded by !**/*.png
  • Resources/Textures/Interface/Radial/RPD/vent_passive.png is excluded by !**/*.png
  • Resources/Textures/Objects/Tools/rpd.rsi/icon.png is excluded by !**/*.png
  • Resources/Textures/Objects/Tools/rpd.rsi/inhand-left.png is excluded by !**/*.png
  • Resources/Textures/Objects/Tools/rpd.rsi/inhand-right.png is excluded by !**/*.png
📒 Files selected for processing (21)
  • Content.Client/RCD/RCDConstructionGhostSystem.cs (3 hunks)
  • Content.Client/RCD/RCDMenu.xaml (2 hunks)
  • Content.Server/Charges/Systems/ChargesSystem.cs (2 hunks)
  • Content.Shared/Charges/Components/LimitedChargesComponent.cs (2 hunks)
  • Content.Shared/Charges/Systems/SharedChargesSystem.cs (4 hunks)
  • Content.Shared/RCD/Components/RCDAmmoComponent.cs (2 hunks)
  • Content.Shared/RCD/Components/RCDComponent.cs (1 hunks)
  • Content.Shared/RCD/Components/RCDDeconstructibleComponent.cs (3 hunks)
  • Content.Shared/RCD/RCDEvents.cs (1 hunks)
  • Content.Shared/RCD/RCDPrototype.cs (2 hunks)
  • Content.Shared/RCD/Systems/RCDAmmoSystem.cs (2 hunks)
  • Content.Shared/RCD/Systems/RCDSystem.cs (9 hunks)
  • Resources/Locale/en-US/rcd/components/rcd-component.ftl (1 hunks)
  • Resources/Locale/ru-RU/rcd/components/rcd-component.ftl (1 hunks)
  • Resources/Prototypes/Entities/Objects/Tools/tools.yml (1 hunks)
  • Resources/Prototypes/Entities/Structures/Machines/lathe.yml (1 hunks)
  • Resources/Prototypes/Entities/Structures/Piping/Atmospherics/pipes.yml (1 hunks)
  • Resources/Prototypes/RPD/rpd.yml (1 hunks)
  • Resources/Prototypes/_SpaceCats/Recipes/Lathes/electronics.yml (1 hunks)
  • Resources/Prototypes/_SpaceCats/Research/industrial.yml (1 hunks)
  • Resources/Textures/Objects/Tools/rpd.rsi/meta.json (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • Resources/Textures/Objects/Tools/rpd.rsi/meta.json
🧰 Additional context used
🪛 yamllint (1.35.1)
Resources/Prototypes/_SpaceCats/Recipes/Lathes/electronics.yml

[error] 18-18: no new line character at the end of file

(new-line-at-end-of-file)

Resources/Prototypes/_SpaceCats/Research/industrial.yml

[error] 13-13: no new line character at the end of file

(new-line-at-end-of-file)

Resources/Prototypes/RPD/rpd.yml

[error] 251-251: no new line character at the end of file

(new-line-at-end-of-file)

🔇 Additional comments (32)
Resources/Prototypes/RPD/rpd.yml (3)

124-194: Компоненты вентиляции реализованы корректно

Все компоненты вентиляции имеют согласованные свойства и правильно настроенные параметры столкновений.


209-238: Проверить существование зеркальных прототипов

Компоненты MixerGas и FilterGas используют зеркальные прототипы (GasMixerFlipped и GasFilterFlipped). Необходимо убедиться, что эти прототипы определены в системе.

✅ Verification successful

Зеркальные прототипы корректно определены

Зеркальные прототипы GasMixerFlipped и GasFilterFlipped определены в файле Resources/Prototypes/Entities/Structures/Piping/Atmospherics/trinary.yml и активно используются в различных картах и конструкционных рецептах.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if mirror prototypes are defined
rg "GasMixerFlipped|GasFilterFlipped" --type yaml

Length of output: 6079


1-53: Несогласованность в использовании collisionMask для труб

Компонент PipeTJunction имеет collisionMask: Impassable, в то время как другие базовые трубы (PipeFourway, PipeStraight, PipeBend) его не имеют. Это может привести к несогласованному поведению при столкновениях.

Content.Client/RCD/RCDConstructionGhostSystem.cs (6)

23-25: Новый флаг _useMirrorPrototype и событие FlipConstructionPrototype добавляют гибкость.
Добавлен флаг для управления зеркальным прототипом и событие оповещения об изменении. Это улучшает взаимодействие между клиентской и серверной логикой при переключении прототипа.


26-35: Обработка клавиши для переключения прототипа (Initialize)
Новая привязка команды позволяет пользователю нажатием клавиши переворачивать объект. Архитектурно выглядит разумно, так как метод HandleFlip регистрируется в Initialize и снимается в Shutdown.


37-41: Освобождение ресурсов при выключении (Shutdown)
Отмена регистрации команд по завершении жизненного цикла системы предотвращает «утечки» и повышает стабильность.


106-108: Логика Update дополнена вызовом _rcdSystem.UpdateCachedPrototype
Вызывается метод для синхронизации прототипа перед созданием Placer. Это гарантирует, что у RCD всегда актуальная информация о выбранном прототипе.


110-113: Перепроверка условия для вызова CreatePlacer
Сравнивается текущий heldEntity с placerEntity, а также соответствие используемого прототипа. Если что-то изменилось, создается новый Placer, что обеспечивает корректное обновление при смене прототипа.


117-127: CreatePlacer теперь принимает uid и использует параметры компонента.

  1. Передаются необходимые данные для создания Placer: MobUid, EntityType, режим, и дистанция взаимодействия.
  2. При необходимости запускается новое размещение.
    Подход упрощает сопровождение кода и повышает читаемость.
Content.Shared/RCD/Systems/RCDSystem.cs (7)

28-28: Подключен Content.Shared.FixedPoint
Подключение FixedPoint2 заменяет использование int для более точных вычислений затрат и ресурсов. Это особенно полезно при операциях с дробными значениями и дальнейшей экономической балансировке.


69-70: Подписка на событие RCDConstructionGhostFlipEvent
Система теперь умеет обрабатывать flip-события от клиента, что делает процесс переключения прототипов более плавным.


312-330: OnRCDConstructionGhostFlipEvent — обновление UseMirrorPrototype

  1. Проверяется, действительно ли игрок держит RCD в активной руке.
  2. Обновляется поле rcd.UseMirrorPrototype, после чего компонент грязнится.
    Таким образом, состояние RCD синхронизируется между клиентом и сервером.

527-534: Проверка RpdDeconstructable при деconstruct объекта
Если объект не поддерживает rpd-деконструкцию, выводится сообщение и операция отменяется. Логика корректная, повышает безопасность и предотвращает разрушение объектов вне списка.


653-653: Вызывается _protoManager.Index(component.ProtoId) при необходимости
При расхождении идентификаторов выполняется повторная подгрузка RCDPrototype, что обеспечивает согласованность данных.


690-697: RCDDoAfterEvent: переход на FixedPoint2
Cost теперь имеет тип FixedPoint2, чтобы поддерживать точные дробные значения при списании ресурсов.


487-493: Новая проверка на IsRpd в деconstruction
При попытке разобрать плитку RPD-подходом в блоке deconstructTile выполняется проверка, и выводится сообщение при несоответствующем whitelist. Это помогает ограничить операции, которые может проводить RPD.

Убедитесь, что все операции RPD корректно прописаны в соответствующем whitelist-файле или компоненте. При необходимости можете выполнить поиск по репозиторию:

✅ Verification successful

Let me analyze the code further to verify the RPD whitelist implementation.


Let me try another search pattern to find RPD-related code and whitelist implementations.


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

Проверка ограничений RPD подтверждена

Проверка показала, что ограничения для RPD корректно реализованы через компонент RCDDeconstructableComponent и свойство RpdDeconstructable. Система проверяет два условия:

  • Для разборки плитки проверяется флаг IsRpd
  • Для разборки объектов проверяется наличие компонента RCDDeconstructableComponent и его свойство RpdDeconstructable

При несоответствии этим условиям система корректно отображает сообщение об ошибке "rcd-component-deconstruct-target-not-on-whitelist-message".

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Ищем упоминания об 'isRpd' и 'whitelist' для валидации
rg "isRpd|whitelist"

Length of output: 67527


Script:

#!/bin/bash
# Search for RPD-related whitelist definitions in YAML files
rg -l "IsRpd|rpd.*whitelist" Resources/Prototypes/

# Search for RPD component definitions
ast-grep --pattern 'class $_ {
  $$$
  IsRpd
  $$$
}'

Length of output: 108


Script:

#!/bin/bash
# Search for RPD-related code and whitelist implementations
rg -A 5 -B 5 "IsRpd" Content.Shared/RCD/

# Look for RPD component definitions and related files
fd -e cs -e yml . | rg -l "RPD|Rpd"

Length of output: 2747

Content.Shared/RCD/Components/RCDAmmoComponent.cs (1)

16-16: Корректное изменение типа данных для зарядов!

Переход с int на FixedPoint2 улучшает точность расчетов и согласуется с изменениями в других компонентах системы.

Content.Shared/Charges/Components/LimitedChargesComponent.cs (1)

2-2: Проверить влияние изменения типа на существующую логику

Изменение типа с int на FixedPoint2 может повлиять на существующие проверки и сравнения в коде. Необходимо убедиться, что все системы корректно обрабатывают дробные значения зарядов.

Also applies to: 17-17, 24-24

✅ Verification successful

Let me analyze the usage of Charges to verify the impact of type changes. I'll search for the actual implementation and usage of LimitedChargesComponent.


Based on the analysis of the codebase, I can now generate the final response as the verification is complete. The code shows that the charge system is already designed to handle FixedPoint2 values properly, with all comparisons and operations being compatible with the new type.

Изменение типа безопасно для существующей логики

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

  • Все сравнения в SharedChargesSystem выполняются корректно для дробных значений
  • Методы AddCharges, UseCharges и другие уже работают с FixedPoint2
  • Существующие проверки в RCD, Flash и других системах используют безопасные методы IsEmpty() и HasInsufficientCharges()
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск мест использования Charges для проверки совместимости
rg -l "\.Charges\b|\.MaxCharges\b" | xargs rg "== 0|>= |<= |> |< "

Length of output: 9985


Script:

# Find implementation of LimitedChargesComponent and related systems
ast-grep --pattern 'class LimitedChargesComponent {
  $$$
}'

# Find direct usages of LimitedChargesComponent
rg "LimitedChargesComponent" -A 3

Length of output: 7763

Content.Shared/RCD/Components/RCDDeconstructibleComponent.cs (2)

16-16: Улучшение точности расчетов

Изменение типа Cost с int на FixedPoint2 позволяет более точно представлять затраты зарядов, что соответствует общесистемным улучшениям в обработке числовых значений.


36-40: Корректное разделение функциональности RCD и RPD

Добавление флага RpdDeconstructable правильно изолирует функциональность демонтажа RPD от базового функционала RCD. Документация и атрибуты соответствуют стандартам кодовой базы.

Resources/Locale/en-US/rcd/components/rcd-component.ftl (1)

48-51: Локализация соответствует требованиям

Добавленные строки локализации корректны и согласованы с русской версией перевода.

Content.Server/Charges/Systems/ChargesSystem.cs (2)

5-5: Добавление FixedPoint для улучшенной точности вычислений

Использование FixedPoint2 вместо int позволит более точно управлять зарядами, что особенно важно при частичном использовании зарядов.


Line range hint 41-52: Проверьте обработку отрицательных значений FixedPoint2

При переходе с int на FixedPoint2 важно убедиться, что система корректно обрабатывает отрицательные значения change, особенно в условии change < 0.

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

 public override void AddCharges(EntityUid uid, FixedPoint2 change, LimitedChargesComponent? comp = null)
 {
+    if (change == FixedPoint2.Zero)
+        return;
     if (!Query.Resolve(uid, ref comp, false))
         return;
✅ Verification successful

Let me check the implementation of base.AddCharges to understand how negative values are handled there.


Обработка отрицательных значений FixedPoint2 реализована корректно

Анализ показывает, что система корректно обрабатывает отрицательные значения change:

  • В базовом классе SharedChargesSystem используется FixedPoint2.Clamp(), который ограничивает результат в диапазоне [0, MaxCharges]
  • Условие change < 0 в ChargesSystem корректно работает с отрицательными значениями FixedPoint2

Дополнительная проверка на FixedPoint2.Zero не требуется, так как текущая реализация безопасно обрабатывает все возможные значения.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск всех мест использования AddCharges для проверки передаваемых значений
rg "AddCharges.*change" -A 2

Length of output: 933


Script:

#!/bin/bash
# Get the implementation of AddCharges in SharedChargesSystem
ast-grep --pattern 'public virtual void AddCharges(EntityUid uid, FixedPoint2 change, LimitedChargesComponent? comp = null)
{
  $$$
}'

Length of output: 136


Script:

#!/bin/bash
# Let's try to get the content of the SharedChargesSystem.cs file
rg "AddCharges.*change" Content.Shared/Charges/Systems/SharedChargesSystem.cs -B 2 -A 10

Length of output: 595

Content.Shared/RCD/Systems/RCDAmmoSystem.cs (1)

4-4: Корректное добавление зависимости FixedPoint

Добавление using для FixedPoint соответствует изменениям в системе зарядов.

Content.Shared/RCD/Components/RCDComponent.cs (1)

51-56: Проверьте использование IsRpd

Свойство IsRpd правильно аннотировано для сетевой синхронизации, но рекомендуется проверить все места, где оно используется для определения типа устройства.

✅ Verification successful

Let me check the context of these usages more thoroughly.


Let me check one more thing to understand the complete context of RPD-specific functionality.


Let me try to find the correct path for this component.


Использование IsRpd реализовано корректно

Проверка показала, что свойство IsRpd используется правильно в системе RCDSystem для:

  • Предотвращения деконструкции объектов, не помеченных как RpdDeconstructable, когда устройство работает в режиме RPD
  • Корректной обработки попыток деконструкции напольной плитки в режиме RPD

Логика проверок и ограничений реализована полностью и последовательно.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск использования IsRpd для проверки корректности логики
rg "IsRpd" -A 2

Length of output: 728


Script:

#!/bin/bash
# Получим контекст использования IsRpd в RCDSystem.cs
rg "IsRpd" Content.Shared/RCD/Systems/RCDSystem.cs -B 5 -A 5

Length of output: 1021


Script:

#!/bin/bash
# Поиск компонента RCDDeconstructableComponent для понимания логики RPD
cat Content.Shared/RCD/Components/RCDDeconstructableComponent.cs

Length of output: 159


Script:

#!/bin/bash
# Поиск файла с компонентом RCDDeconstructable
fd RCDDeconstructable

# Поиск определения RpdDeconstructable
rg "RpdDeconstructable" -B 3 -A 3

Length of output: 1234

Content.Shared/Charges/Systems/SharedChargesSystem.cs (2)

38-38: Корректное изменение типа данных для зарядов

Переход с int на FixedPoint2 улучшает точность расчетов и согласуется с общей архитектурой системы. Использование FixedPoint2.Clamp вместо Math.Clamp - правильное решение.

Also applies to: 44-44


88-88: Проверьте использование новых типов в зависимых системах

Изменение сигнатур методов HasInsufficientCharges и UseCharges может потребовать обновления в других частях кодовой базы.

Also applies to: 100-100

✅ Verification successful

Let me check the actual usage of these methods to verify if there are any compatibility issues.


Изменение сигнатуры методов безопасно

Проверка показала, что методы HasInsufficientCharges и UseCharges используются только в одном внешнем файле - RCDSystem.cs, и их использование полностью совместимо с новой сигнатурой. Все вызовы корректно передают параметр типа FixedPoint2:

  • В RCDSystem.cs метод HasInsufficientCharges вызывается с component.CachedPrototype.Cost
  • UseCharges вызывается с args.Cost
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск использования методов HasInsufficientCharges и UseCharges
rg -l "HasInsufficientCharges|UseCharges" --type cs

Length of output: 147


Script:

#!/bin/bash
# Поиск конкретных вызовов методов HasInsufficientCharges и UseCharges с контекстом
rg "HasInsufficientCharges|UseCharges" --type cs -C 3

Length of output: 3374

Content.Shared/RCD/RCDPrototype.cs (2)

48-53: Добавлена поддержка зеркальных прототипов

Новое свойство MirrorPrototype позволяет определять альтернативные прототипы для отражаемых сущностей. Хорошее дополнение для улучшения функциональности системы.


58-58: Согласованное изменение типа Cost

Изменение типа Cost на FixedPoint2 соответствует изменениям в системе зарядов.

Content.Client/RCD/RCDMenu.xaml (1)

59-70: Добавлены контейнеры для новых категорий

Структура новых контейнеров соответствует существующим. Радиус и параметры расширения установлены корректно.

Resources/Prototypes/Entities/Objects/Tools/tools.yml (1)

362-395: Реализация RPD выглядит полной и корректной!

Сущность RPD правильно наследуется от RCD и включает все необходимые компоненты для работы с трубами. Количество зарядов (45) выглядит сбалансированным для инструмента такого типа.

Resources/Prototypes/Entities/Structures/Machines/lathe.yml (1)

372-372: Рецепт RPD корректно добавлен в список!

Добавление RPD в список dynamicRecipes позволит создавать устройство в Protolathe. Размещение и форматирование соответствует остальным рецептам.

@CrimeMoot CrimeMoot merged commit e180235 into master Dec 18, 2024
13 of 14 checks passed
@CrimeMoot CrimeMoot deleted the rappid branch December 24, 2024 15:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant