Перейти к содержанию

Drop Policy

Drop policy отвечает на простой вопрос: что делать, если игрок отпустил предмет не туда, куда его можно положить напрямую.

Например:

  • слот занят
  • слот не подходит по правилам
  • в слоте уже полный стек
  • предмет отпустили не на слот, а на область инвентаря

Основные варианты

Настройка Что делает
Reject Отклоняет перенос. Предмет возвращается туда, откуда его взяли.
FindAlternative Ищет другой подходящий слот.
Swap Пробует обменять переносимый предмет с предметом в занятом слоте.

Если слот занят

Policy Поведение
Reject Ничего не переносится.
FindAlternative Система ищет другой слот, куда предмет можно положить.
Swap Система пробует обменять предметы местами.

Если выбранный слот подходит, policy не мешает переносу: предмет кладётся в этот слот.

Если предмет отпустили на область инвентаря

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

Для этого используется PlacementCandidateOrderer:

Orderer Поведение
Natural Использует естественный порядок слотов.
MergeFirst Сначала пробует объединить со стеками.
EmptyFirst Сначала пробует пустые слоты.
MergeOnly Пробует только объединение со стеками.
EmptyOnly Пробует только пустые слоты.

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

Частичный перенос

PartialTransferMode определяет, можно ли перенести только часть предметов из стека.

Значение Поведение
Allow Переносит столько, сколько помещается. Остаток возвращается обратно.
RequireFull Если весь стек не помещается, перенос отменяется.

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

Поиск другого слота внутри того же инвентаря

AllowSameInventoryAlternativePlacement важно при перемещении предмета внутри одного и того же инвентаря.

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

Если настройка выключена, такой drop не будет превращаться в “найди куда-нибудь ещё”. Предмет останется на месте, если выбранный слот не подходит.

Swap

Swap нужен для обмена двух предметов местами.

Он срабатывает только для одного переносимого предмета и конкретного занятого слота. Если игрок тащит несколько предметов на один занятый слот, batch-swap отклоняется до изменений.

Что выбрать

Нужно поведение Выберите
Строго класть только в выбранный слот Reject
Разрешить “положи куда-нибудь подходяще” FindAlternative
Разрешить обмен с занятым слотом Swap
Разрешить перенос части стека PartialTransferMode.Allow
Запретить частичные переносы PartialTransferMode.RequireFull

См. также: