Функционал стартовой версии (0.544a):
Drag'n'Drop — основной функционал нашего инвентаря. При старте драга, в глобальные переменные записываются координаты нахождения итема до его переноски, таким образом, если инвентарь будет занят, либо итем будет размещен вне инвентаря, он будет возвращен на свое прежнее место. В самом процессе драга (Is Dragging) мы будем отрисовывать прозрачную белую подсветку. Она будет становиться видимой, когда мы можем расположить итем в инвентаре. И, наконец, окончательная стадия драга — On Drag, она же самая сложная. Высчитывает допустимость размещения итема в инвентаре, определяет по сектору координаты размещения и изменяет значения глобальных переменных.
Динамический массив — вне зависимости от размера массива вы можете быть уверены, что все будет работать правильно. Абсолютно все условия ориентированы на размер массива, а не фиксированные координаты.
Размещения по сетке — если итем успешно кладется в инвентарь, то он будет автоматически выравнен по сетке. Размер итема должен быть кратен размеру сектора, который используется в массиве (из него состоит сам инвентарь). Это позволяет иметь итему динамическое размещение. Не важно, какие у него размеры: 32х32 или 128х32.
Debug — подробнейшая система отладки. Она включает в себя координаты курсора, последний пиксель массива (координаты окончания массива, то есть координаты последнего спрайта массива), а также координаты углов (топ-лево, топ-право, низ-лево, низ-право) и определение сектора.
Я буду обновлять время от времени этот исходник, обозначая версии. Возможно, это будет расширение функционала, оптимизация кода или же банальная правка багов.
ОБНОВЛЕНИЯ
:
v. 0.8:
- Реализовано INI-сохранение/загрузка информации об итемах. Сейчас это размер (ширина/высота) и координаты.
v. 0.71:
- Итемы при перетаскивании всегда будут оставаться поверх других (автор: skey)
v. 0.7:
- События переписаны с нуля, исходник стал более понятен, комментарии более внятными и по делу.
- Изменениям подвергся принцип проверки координат. На изображении показан старый вариант (слева) и новый (справа). Количество условий сократилось вдвое.
- Debug режим теперь можно включить/отключать:
- Работа теперь идет с семьями, перемещение каждого из члена семьи происходит корректно.
- Добавлены проверки на нахождение другого итема в расположенных секторах.
- Смена цвета выделения при нахождении итема в инвентаре.
v. 0.55:
- Добавлено небольшое количество комментариев: к отладке, формированию массива, нахождению координат углов спрайта и его принадлежности к сектору. Остальные комментарии будут добавлены после оптимизации кода, если таковая будет.
- Сетка, которая перемещается под итемом теперь сразу отобажает в какие секторы будет помещен итем (автор идеи: KaMiKaZa)