Skip to content

Comments

Unders Resprite v2#14383

Open
RichardJones1 wants to merge 4 commits intoTauCetiStation:masterfrom
RichardJones1:unders_resprite
Open

Unders Resprite v2#14383
RichardJones1 wants to merge 4 commits intoTauCetiStation:masterfrom
RichardJones1:unders_resprite

Conversation

@RichardJones1
Copy link
Contributor

@RichardJones1 RichardJones1 commented Sep 6, 2025

Описание изменений

image

Продолжение #14220

Почему и что этот ПР улучшит

Респрайт униформ, теперь они работают через альфу и переменную color, один спрайт на все униформы.

Авторство

Sprites by WalterJe

Чеинжлог

🆑 WalterJe & Richard Jones

  • image: Обновлены спрайты униформ.

@TauKitty
Copy link
Contributor

TauKitty commented Sep 6, 2025

Changelog status: ✔️

@TauKitty TauKitty requested a review from a team September 6, 2025 08:46
@RichardJones1
Copy link
Contributor Author

Альтернативно можем использовать этот список:
image

@RichardJones1
Copy link
Contributor Author

Забыли про инхенды, правда, поправим.

@DarthSidiousPalpatine
Copy link
Contributor

Такое бы со всей крашеной одеждой generic делать.

Кепки, боты, шарфы, шляпы, шапки, всякое такое.

@RichardJones1
Copy link
Contributor Author

Такое бы со всей крашеной одеждой generic делать.

Кепки, боты, шарфы, шляпы, шапки, всякое такое.

Да, есть такая идея. Но сначала подберем подходящие цвета, потыкаемся в эту - и если поймем, что это удобно, то я лично за такой подход. Минус - у меня не получилось настроить нормально анимацию putdown (Там моргает оверлей, не успевает измениться на тот что у инворлд иконки вовремя), пришлось ее отключить.

@DarthSidiousPalpatine
Copy link
Contributor

DarthSidiousPalpatine commented Sep 6, 2025

Такое бы со всей крашеной одеждой generic делать.
Кепки, боты, шарфы, шляпы, шапки, всякое такое.

Да, есть такая идея. Но сначала подберем подходящие цвета, потыкаемся в эту - и если поймем, что это удобно, то я лично за такой подход. Минус - у меня не получилось настроить нормально анимацию putdown (Там моргает оверлей, не успевает измениться на тот что у инворлд иконки вовремя), пришлось ее отключить.

Могу ещё предложить не делать это оверлеями, а кешировать иконки как со стенами делается. Тогда будет работать абсолютно также как с обычными иконками и итемстейтами...
Спроси у Воласа как это делается, но спроси в дискорде. Я на гите вон спрашивал пустоту - никто не ответил, так что спрашивай лично, коль у тебя есть к нему доступ.

@RichardJones1
Copy link
Contributor Author

Могу ещё предложить не делать это оверлеями, а кешировать иконки как со стенами делается. Тогда будет работать абсолютно также как с обычными иконками и итемстейтами...
Спроси у Воласа как это делается, но спроси в дискорде. Я на гите вон спрашивал пустоту - никто не ответил, так что спрашивай лично, коль у тебя есть к нему доступ.

О, а получится как я сейчас делаю - красить только низ униформы, а оверлей не красить?

@DarthSidiousPalpatine
Copy link
Contributor

DarthSidiousPalpatine commented Sep 6, 2025

О, а получится как я сейчас делаю - красить только низ униформы, а оверлей не красить?

Да, по идее, можно будет как угодно их собирать, хз.

Буквально манипуляция с иконками и сохранение оных "на потом", чтобы реиспользовать.

Хз насколько это оправдано для покраски одежды, к слову... Опять же, спроси Воласа, он лучше понимает и знает как это и зачем это. Мб скажет что это лишнее.

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

Наш костыльный гетФлатИкон убого работает со всякими оверлеями, фильтрами, масками...

. = ..()
fresh_laundered_until = world.time + 5 MINUTES

var/obj/item/clothing/dye_type = get_dye_type(w_color)
Copy link
Contributor

Choose a reason for hiding this comment

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

не уверен что понимаю что тут происходит

Copy link
Member

Choose a reason for hiding this comment

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

вроде ты когда-то и писал, #9117 😆

не проблема, но вообще согласен

icon_state = "black"
item_state = "blackf"
// add the colorless overlay
I.cut_overlays()
Copy link
Contributor

Choose a reason for hiding this comment

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

зачем удалять все предыдущие оверлеи

Comment on lines +49 to +55
/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)
Copy link
Contributor

Choose a reason for hiding this comment

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

если код не юзается зачем его оставлять

. = ..()
update_world_icon()

// cut_overlay just isnt fast enough for this, unfortunately.
Copy link
Contributor

Choose a reason for hiding this comment

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

ну конечно, он же выполняется в оверлей контроллере скорее всего в следующий тик.

update_world_icon()

// cut_overlay just isnt fast enough for this, unfortunately.
/obj/item/clothing/under/color/putdown_animation()
Copy link
Contributor

Choose a reason for hiding this comment

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

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

/obj/item/clothing/under/color/update_world_icon()
..()

// add the colorless overlay
Copy link
Contributor

Choose a reason for hiding this comment

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

зачем этот комментарий

@LudwigVonChesterfield
Copy link
Contributor

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

возможно стоит вам сколаборироваться над такой работой.

@DarthSidiousPalpatine
Copy link
Contributor

DarthSidiousPalpatine commented Sep 30, 2025

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

возможно стоит вам сколаборироваться над такой работой.

Не имею понятия как она работает и где вообще ее обвязка, а у воласа спросить не могу, так что, РичардЖонес, вся надежда на тебя.

Знал бы - каргопосылки бы "красились" в текстуру и сохранялись.

@volas
Copy link
Member

volas commented Oct 23, 2025

будто бы можно даже прямо призапекать это как делается со стенами.

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

@volas volas self-requested a review October 23, 2025 08:12
@DarthSidiousPalpatine
Copy link
Contributor

DarthSidiousPalpatine commented Oct 23, 2025

будто бы можно даже прямо призапекать это как делается со стенами.

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

Вот только клиентсайд плохо работает с фотками, а если это связано с хуманами, то, считаю, должно работать отлично с фотками...

Ну либо давайте уже перейдем на бьендопрок для клиентсайд рендеринга фоток...

@volas
Copy link
Member

volas commented Oct 23, 2025

Причем тут фотки, если я про предложение о сервер-рендере и кэшировании одежды

@DarthSidiousPalpatine
Copy link
Contributor

Причем тут фотки, если я про предложение о сервер-рендере и кэшировании одежды

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

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

Имхо, учитывая, что одежда не всех цветов радуги и не в 256 тысячах оттенков, то лучше красить в стандартные цвета на сервере и кешировать...

@github-actions
Copy link

Данный ПР автоматически отмечен как застоявшийся по причине длительного отсутствия обновлений и обсуждения. Он будет закрыт через 7 дней, если никакой активности не будет проявлено. Если вы считаете, что ПР еще актуален, или что я (злобный робот) пристаю к вам зря - просто напишите любой комментарий. Попробуйте связаться с мейнтейнерами, если они по какой-то причине игнорируют ПР, или у вас есть вопросы. Спасибо за ваш вклад.

@volas volas added Pinned ПРы с этим лэйблом будут игнорироваться Stale-ботом and removed Stalled PR labels Nov 18, 2025

// 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)
Copy link
Member

Choose a reason for hiding this comment

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

склейка standing_overlay сейчас очень костыльная, какая-то часть кода униформы уже оказалась в родителе с проверкой на SPRITE_SHEET_UNIFORM, и потом тут еще раз проходимся и переприклеиваем все оверлеи.

Надо как-то сделать по другому, но я сходу не могу вникнуть и предложить лучший вариант.

Copy link
Member

Choose a reason for hiding this comment

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

Может быть какой-то общий флаг для вещей с покраской через color, но там еще с rolldown что-то надо делать. Может надо изменить логику get_standing_overlay, делать не снизу вверх, а наоборот (сначала клеить что-то на уровне предмета, а потом в родительском проке).

Но это сейчас я просто тыкаю наугад.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Map Edit Pinned ПРы с этим лэйблом будут игнорироваться Stale-ботом Sprites

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants