Пользователи · Новые посты · Правила форума · Поиск по форуму · · · Регистрация
  • Страница 1 из 1
  • 1
Форум о визуальных новеллах » Для разработчиков » Ren'Py » инвентарь с Drag&Drop (почти реализовал, но нужны экзорцисты)
инвентарь с Drag&Drop

greatqwerty
Дата: Вторник, 26 Декабря 2017, 12:52 | Сообщение # 1
Пользователь
Сообщений: 2
Награды: 0
Репутация: 0
Замечания: 0%
В общем и целом в доках ренпая говорится, что вы можете с помощью драг & дропа замутить себе систему инвентаря. funny

Ну раз можно, значит сделаем, после недели кубаторивания и поиска инфы по форумам, получилось то, что получилось (прикреплено ниже), а после ещё недели попыток заставить это работать как положено, я с криком "ГОРЕТЬ В АДУ РАЗРАБАМ РЕНПАЯ", наткнулся на ваш чудесный сайт, собственно расказываю что было:

проект

1) Создал систему инвентаря, состоит из двух классов Container и Item
2) Всё это дело может между собой контачить
3) screen_container экран, в котором выясняется отображается один инветарь игрока или ещё с ним какой контейнер, их позиционирование
4) display_grids экран для отображения и перетаскивания контейнеров и итемсов



Проблемы:
1) если дроп не валидный (т.е. драг нужно вернуть где он был, snap) то он возвращается куда то не на свои координаты
2) если открыто два контейнера и я перетаскиваю вещь из одного в другой
а) если перетаскиваемая вещь была в конце контейнера (-1), всё ок, перетаскивается и занимает свое место как и надо
б) если перетаскиваемая вещь была в начале или середине, то она перетаскивалась нормально, НО вещь которая идёт следом за перенесённой, переносилась тоже, Но только визуально на экране, по факту она остаётся в нужном контейнере и с ней всё ок, если выйти из инвенторя и зайти, всё рисуется как надо

с 1 проблемой разобрался, но как то странно. Я вызывал экран инвентаря не show/call, а ShowMenu, перешёл на show, всё стало ок
что делать со 2 проблемой ума не приложу
а после того как поудалял с прожекта всё лишнее, так сказать готовил чтобы сюда выложить вернулась мать его и первая проблема!!!



тут явно без потусторонних сил не обошлось

позиция драгов берётся из item.xy в которой рассчитываются координаты относительно контейнера и прибавляется к container.xy, которая в свою очередь задаётся в экране container.align = (0.5, 0.5).
мне кажется что дело где то тут, почему то в один момент времени всё рассчитывается как надо, а в другой берутся координаты контейнера из другого условия, которое не должно срабатывать

как говорил автор статьи http://anivisual.net/blog/2017-10-06-314

Код, вложенный в оператор python, выполняется в контексте экрана. Кроме того, важно помнить, что такой код выполняется каждый раз, когда отрабатывает код экрана – а код экрана может отрабатывать не только при его явном вызове через show. Поэтому следите за возможными побочными эффектами этого срабатывания. Пока вы не смотрите, ваш вложенный код уже десятый раз присвоил переменной значение!

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

похоже мой случай


Сообщение отредактировал greatqwerty - Вторник, 26 Декабря 2017, 14:08

greatqwerty
Дата: Вторник, 26 Декабря 2017, 12:59 | Сообщение # 2
Пользователь
Сообщений: 2
Награды: 0
Репутация: 0
Замечания: 0%
походу, ни кто кроме меня самого себе не поможет, чую надо делать свой displayable с контейнером итемсами и блекджеком

Сообщение отредактировал greatqwerty - Четверг, 28 Декабря 2017, 11:08

dobby
Дата: Пятница, 29 Декабря 2017, 11:43 | Сообщение # 3
Проверенный
Сообщений: 47
Награды: 0
Репутация: 0
Замечания: 0%
пока не поздно переходи на юнити) там с этим делом в разы проще
Форум о визуальных новеллах » Для разработчиков » Ren'Py » инвентарь с Drag&Drop (почти реализовал, но нужны экзорцисты)
  • Страница 1 из 1
  • 1
Поиск: