add/refactor: Пластитаниумные стены#8477
add/refactor: Пластитаниумные стены#8477Ssheya wants to merge 11 commits intoss220-space:master220from
Conversation
There was a problem hiding this comment.
Code Review
Аналитический отчёт от Большого Брата. Обработка запроса завершена.
Приветствую! Я проанализировал предложенные Вами изменения. С технической точки зрения, работа выглядит требующей доработок.
Сводка анализа:
- 🔴 Критических замечаний: 0
- 🟡 Рекомендаций: 5
- 💡 Предложений: 0
🟡 Рекомендации по улучшению:
.vscode/settings.json:43: Обнаружен локальный путь к файлу в настройках проекта. Такие файлы не должны попадать в репозиторий.code/game/objects/structures/girders.dm:296: Обнаружена опечатка в сообщении для игрока. Вместо «plasteel» должно быть «plastitanium».code/game/objects/structures/girders.dm:277: Выявлено дублирование кода при обработке листов пластитаниума, аналогичное логике для пластали. Рекомендуется рефакторинг для избежания повторений.code/game/turfs/simulated/walls_reinforced.dm:314: Обнаружена проблема с балансом: при разрушении пластитаниумной стены выпадает больше ресурсов, чем требуется для её постройки, что может быть использовано для их дублирования.code/game/turfs/simulated/walls_reinforced.dm:351: Обнаружено дублирование кода в процедуреcopyTurf, на что указывает комментарий//have to copypaste this code. Рекомендуется найти способ избежать этого повторения.
Пожалуйста, ознакомьтесь с комментариями к отдельным строкам кода для получения более подробной информации.
Спасибо за ваш вклад в проект!
I am having trouble creating individual review comments. Click here to see my feedback.
code/game/turfs/simulated/walls_reinforced.dm (314-316)
🟡 Рекомендация по балансу
Процедура devastate_wall() для пластитаниумной стены возвращает больше ресурсов, чем требуется для её постройки. Она создаёт sheet_amount (наследуется как 4) листов, а затем ещё 2, что в сумме даёт 6 листов пластитаниума. При этом для постройки стены на пластитаниумной балке требуется всего 2 листа. Это создаёт возможность для бесконечного получения ресурсов.
Рекомендуется скорректировать количество возвращаемых ресурсов. Вероятно, стоит переопределить sheet_amount для этого типа стены на 2 и убрать дополнительное создание листов в devastate_wall().
/turf/simulated/wall/r_wall/plastitanium/devastate_wall()
new sheet_type(src, 2) // Или другое сбалансированное значение
.vscode/settings.json (43-45)
🟡 Рекомендация по конфигурации проекта
Этот файл содержит специфичные для пользователя настройки, включая абсолютный путь к локальным файлам (C:\Users\Администратор\...). Подобные конфигурационные файлы не должны попадать в общий репозиторий, так как они могут вызвать проблемы у других разработчиков или перезаписать их локальные настройки. Рекомендуется добавить .vscode/settings.json в файл .gitignore, чтобы избежать подобных ситуаций в будущем.
code/game/objects/structures/girders.dm (296)
🟡 Рекомендация по улучшению
В сообщении для игрока допущена опечатка: упоминается «plasteel» вместо «plastitanium». Это может ввести в заблуждение. Рекомендую исправить текст для соответствия используемому материалу.
to_chat(user, span_warning("You need at least two sheets of plastitanium to finalize the plastitanium wall!"))
code/game/objects/structures/girders.dm (277-322)
🟡 Рекомендация по улучшению кода
Логика обработки листов пластитаниума практически полностью дублирует существующую логику для пластали. Это нарушает принцип DRY (Don't Repeat Yourself) и усложняет дальнейшее сопровождение кода.
В соответствии со стайлгайдом (правило 67), рекомендуется вынести повторяющийся код в отдельную, более универсальную процедуру, которая могла бы принимать тип материала и соответствующие ему типы стены/балки в качестве аргументов. Это сделает код чище и проще для модификации в будущем.
code/game/turfs/simulated/walls_reinforced.dm (351-370)
🟡 Рекомендация по улучшению кода
Комментарий //have to copypaste this code прямо указывает на дублирование кода в процедуре copyTurf. Согласно стайлгайду (правило 67), дублирование следует избегать.
Рекомендуется рассмотреть возможность вынесения этой логики в родительский класс /turf/simulated/wall/r_wall или найти другой способ избежать копирования, чтобы улучшить поддерживаемость кода.
|
/gemini review |
There was a problem hiding this comment.
Code Review
Аналитический отчёт от Большого Брата. Обработка запроса завершена.
Приветствую! Я проанализировал предложенные Вами изменения. С технической точки зрения, работа выглядит отлично. Выполнен масштабный и качественный рефакторинг пластитаниумных стен, который унифицирует их с усиленными стенами. Это значительное улучшение архитектуры и поддерживаемости кода.
Сводка анализа:
- 🔴 Критических замечаний: 0
- 🟡 Рекомендаций: 1
- 💡 Предложений: 0
🟡 Рекомендации по улучшению:
code/game/objects/structures/girders.dm:277-322: Обнаружено дублирование кода при проверке количества листов пластитаниума. Рекомендуется вынести проверку перед блокомswitchдля улучшения читаемости и упрощения поддержки.
Пожалуйста, ознакомьтесь с комментариями к отдельным строкам кода для получения более подробной информации.
Спасибо за ваш вклад в проект!
|
/gemini review |
There was a problem hiding this comment.
Code Review
Аналитический отчёт от Большого Брата. Обработка запроса завершена.
Приветствую! Я проанализировал предложенные Вами изменения. С технической точки зрения, работа выглядит удовлетворительно.
Сводка анализа:
- 🔴 Критических замечаний: 0
- 🟡 Рекомендаций: 1
- 💡 Предложений: 0
🟡 Рекомендации по улучшению:
code/game/turfs/simulated/walls_reinforced.dm:298: Обнаружена логическая несостыковка при починке пластитановых стен. Текущая реализация предполагает использование обычных листов металла, что не соответствует материалу стены. Рекомендуется переопределить логику починки для использования пластитана.
Пожалуйста, ознакомьтесь с комментариями к отдельным строкам кода для получения более подробной информации.
Спасибо за ваш вклад в проект!
| smoothing_groups = SMOOTH_GROUP_PLASTITANIUM_WALLS | ||
|
|
||
| /obj/structure/falsewall/reinforced/plastitanium/ChangeToWall(delete = 1) | ||
| var/turf/T = get_turf(src) |
| transfer_fingerprints_to(girder) | ||
| girder.add_fingerprint(user) | ||
| qdel(src) | ||
| return ATTACK_CHAIN_BLOCKED_ALL |
| switch(state) | ||
| if(GIRDER_DISPLACED) | ||
| if(plastitanium.get_amount() < 2) | ||
| to_chat(user, span_warning("You need at least two sheets of plastitanium to create a false wall!")) |
There was a problem hiding this comment.
текст не помешает перевести, но это не критично
| qdel(src) | ||
| return ATTACK_CHAIN_BLOCKED_ALL | ||
|
|
||
| if(istype(sheet, /obj/item/stack/sheet/plastitanium)) |
There was a problem hiding this comment.
изхелпер и заменить на него все istype(переменная, /obj/item/stack/sheet/plastitanium)
| var/d_state = RWALL_INTACT | ||
| var/can_be_reinforced = 1 | ||
|
|
||
| /turf/simulated/wall/r_wall/proc/metal_repair(obj/item/I, mob/user) |
| to_chat(user, span_notice("You repair the last of the damage.")) | ||
| return ATTACK_CHAIN_SUCCESS | ||
|
|
||
| /turf/simulated/wall/r_wall/proc/coating(obj/item/I, mob/user) |
| icon_state = "plastitanium_wall-d-[d_state]" | ||
| smooth = NONE | ||
| clear_smooth_overlays() | ||
| else |
| to_chat(user, span_warning("You need at least two sheets of plastitanium to reinforce the girder!")) | ||
| return . | ||
| to_chat(user, span_notice("You start reinforcing the girder...")) | ||
| if(!do_after(user, 6 SECONDS * plastitanium.toolspeed, src, category = DA_CAT_TOOL) || state == GIRDER_DISPLACED || state == GIRDER_REINF || QDELETED(plastitanium) || !plastitanium.use(2)) |
There was a problem hiding this comment.
Что значит 2? нужно дефайнизировать
| return ATTACK_CHAIN_BLOCKED_ALL | ||
|
|
||
| if(GIRDER_REINF) | ||
| if(plastitanium.get_amount() < 2) |
There was a problem hiding this comment.
скорее всего это должен быть тот же дефайн
Что этот ПР делает
Меняет пластитаниумную стену на подтип усиленной стены, добавляет ей свой гирдер, меняет характеристики
Чутка рефакторит код усиленной стены, чтобы легче сделать пластитаниумную
Меняет в куче мест код пластитановой стены и самого пластитана
Почему это хорошо для игры
Очень давно была предложка, прошла, я не сделал, сделал щас, чутка поковырял дополнительно цифры, думаю всё норм
Демонстрация изменений
Демонстрации изменений
Тестирование
На локалке протестировал, поспавнил их, сделал фейковую, разобрал, потыкал.