Conversation
Changelog status: ✔️ |
|
Забыли про инхенды, правда, поправим. |
|
Такое бы со всей крашеной одеждой generic делать. Кепки, боты, шарфы, шляпы, шапки, всякое такое. |
Да, есть такая идея. Но сначала подберем подходящие цвета, потыкаемся в эту - и если поймем, что это удобно, то я лично за такой подход. Минус - у меня не получилось настроить нормально анимацию putdown (Там моргает оверлей, не успевает измениться на тот что у инворлд иконки вовремя), пришлось ее отключить. |
Могу ещё предложить не делать это оверлеями, а кешировать иконки как со стенами делается. Тогда будет работать абсолютно также как с обычными иконками и итемстейтами... |
О, а получится как я сейчас делаю - красить только низ униформы, а оверлей не красить? |
Да, по идее, можно будет как угодно их собирать, хз. Буквально манипуляция с иконками и сохранение оных "на потом", чтобы реиспользовать. Хз насколько это оправдано для покраски одежды, к слову... Опять же, спроси Воласа, он лучше понимает и знает как это и зачем это. Мб скажет что это лишнее. Но я разочаровался в оверлеях и фильтрах из-за того что тау отменили переход на новый нативный getFlatIcon, который рендерит всё на клиенте. Наш костыльный гетФлатИкон убого работает со всякими оверлеями, фильтрами, масками... |
| . = ..() | ||
| fresh_laundered_until = world.time + 5 MINUTES | ||
|
|
||
| var/obj/item/clothing/dye_type = get_dye_type(w_color) |
There was a problem hiding this comment.
не уверен что понимаю что тут происходит
There was a problem hiding this comment.
вроде ты когда-то и писал, #9117 😆
не проблема, но вообще согласен
| icon_state = "black" | ||
| item_state = "blackf" | ||
| // add the colorless overlay | ||
| I.cut_overlays() |
There was a problem hiding this comment.
зачем удалять все предыдущие оверлеи
| /obj/item/clothing/under/color/update_icon() | ||
| ..() | ||
|
|
||
| // add the colorless overlay | ||
| //var/mutable_appearance/under_overlay = mutable_appearance(icon, "[icon_state]_overlay") | ||
| //under_overlay.appearance_flags = RESET_COLOR | ||
| //add_overlay(under_overlay) |
There was a problem hiding this comment.
если код не юзается зачем его оставлять
| . = ..() | ||
| update_world_icon() | ||
|
|
||
| // cut_overlay just isnt fast enough for this, unfortunately. |
There was a problem hiding this comment.
ну конечно, он же выполняется в оверлей контроллере скорее всего в следующий тик.
| update_world_icon() | ||
|
|
||
| // cut_overlay just isnt fast enough for this, unfortunately. | ||
| /obj/item/clothing/under/color/putdown_animation() |
There was a problem hiding this comment.
будто бы можно сделать какие-то лайфхаки с кешем и подтягиванием нужного готового спрайта прямо в анимации.
| /obj/item/clothing/under/color/update_world_icon() | ||
| ..() | ||
|
|
||
| // add the colorless overlay |
There was a problem hiding this comment.
зачем этот комментарий
|
@DarthSidiousPalpatine @RichardJones1 мне будто бы нравится идея с кешированием оверлея одежды, особенно учитывая что у нас ограниченное количество цветов. будто бы можно даже прямо призапекать это как делается со стенами. возможно стоит вам сколаборироваться над такой работой. |
Не имею понятия как она работает и где вообще ее обвязка, а у воласа спросить не могу, так что, РичардЖонес, вся надежда на тебя. Знал бы - каргопосылки бы "красились" в текстуру и сохранялись. |
Нюанс серверсайд рендеринга и генерации спрайтов блендом - они не попадают в rsc, клиенту нужно их отдельно выкачивать с сервера. Это не особо критично, но мне кажется лучше не абузить, если можно обойтись оверлеями и клиент-рендерингом. |
Вот только клиентсайд плохо работает с фотками, а если это связано с хуманами, то, считаю, должно работать отлично с фотками... Ну либо давайте уже перейдем на бьендопрок для клиентсайд рендеринга фоток... |
|
Причем тут фотки, если я про предложение о сервер-рендере и кэшировании одежды |
при том, что если на клиенте все делать оверлеями, фильтрами и пр. то плохо работают вещи, изменяющие иконку. оверлей на оверлее в одной функции, другая попытается рубашку с фильтрами порезать как иконку, третья попытается скомпоновать иконки в фотки и пр. И везде результат будет кринжовым. Имхо, учитывая, что одежда не всех цветов радуги и не в 256 тысячах оттенков, то лучше красить в стандартные цвета на сервере и кешировать... |
|
Данный ПР автоматически отмечен как застоявшийся по причине длительного отсутствия обновлений и обсуждения. Он будет закрыт через 7 дней, если никакой активности не будет проявлено. Если вы считаете, что ПР еще актуален, или что я (злобный робот) пристаю к вам зря - просто напишите любой комментарий. Попробуйте связаться с мейнтейнерами, если они по какой-то причине игнорируют ПР, или у вас есть вопросы. Спасибо за ваш вклад. |
|
|
||
| // if needed, this can easily be changed to /obj/item/clothing/under | ||
| // in case of adding support for /obj/item/clothing, this proc will require some tweaking | ||
| /obj/item/clothing/under/color/get_standing_overlay(mob/living/carbon/human/H, def_icon_path, sprite_sheet_slot, layer, bloodied_icon_state = null, icon_state_appendix = null) |
There was a problem hiding this comment.
склейка standing_overlay сейчас очень костыльная, какая-то часть кода униформы уже оказалась в родителе с проверкой на SPRITE_SHEET_UNIFORM, и потом тут еще раз проходимся и переприклеиваем все оверлеи.
Надо как-то сделать по другому, но я сходу не могу вникнуть и предложить лучший вариант.
There was a problem hiding this comment.
Может быть какой-то общий флаг для вещей с покраской через color, но там еще с rolldown что-то надо делать. Может надо изменить логику get_standing_overlay, делать не снизу вверх, а наоборот (сначала клеить что-то на уровне предмета, а потом в родительском проке).
Но это сейчас я просто тыкаю наугад.

Описание изменений
Продолжение #14220
Почему и что этот ПР улучшит
Респрайт униформ, теперь они работают через альфу и переменную color, один спрайт на все униформы.
Авторство
Sprites by WalterJe
Чеинжлог
🆑 WalterJe & Richard Jones