suez #10001 9 февраля 2017 Да там параша с говнокодом, у меня не было времени делать в виде норм проекта с разбивкой на файлы и так далее, в итоге в кодпене слепил кое-как.http://codepen.io/suez/pen/d384022e01dfb27d1a31a5345a7b3168 Из-за днд (который очевидно меняет дом) и особенностей виртуал дом в связке с реактом (которые очевидно против изменения дом не их способами) я ебался с багами. В итоге в какой-то момент плюнул на все и просто начал юзать .cancel() у dragula метод для отмены изменений дом по окончании дроп ивента (но при этом уже получал на руки индексы всей перемещенной еботы, что позволило менять все посредством реакта).Я если честно был вполне готов что меня забракуют на этом этапе, так как то что я там налепил рандомно это вообще хуита в рамках норм кода, но так как это лишь тестовое, то думаю все забили хуй и остались довольны тем, что все в конце концов работает (ну и я запилил пару-тройку фич сверху, которые не просили, аля удаление по дропу в область, сохранение в localStorage и че то еще).Не очень удобно что переносить таски надо вверх другой колонки, при большом списке тасков в одной колонке и например нулём в другой, тебе придётся тыкать таск, а потом прокручивать вверх что бы перетащить в другую колонку. Ну это так к слову. Ну как бы ясен хуй что там можно допиливать еще миллион лет. Я сделал чтобы можно было в пустую еботу дропать, установив min-height для контейнера, а про такое даже не думал (а решается использованием флексбоксов скорее всего) http://codepen.io/suez/ - they see me bydlocoding, they hatin. Поделиться сообщением Ссылка на сообщение
CriErr #10002 9 февраля 2017 (изменено) Вопрос крайне дурацкий, но я чет не могу одной строкой решить.Есть сетка n*n с кастомным n. Храню елементы сетки одним массивом (мульти не предлагать, считайте что нет такой технологии)Найти координаты по индексу не проблемаx = Index % GridSize.X;y = Index / GridSize.Y;но только для квадрата, а вот если сетка n*m с кастомными n и m я не знаю как доставать Y.Как вообще такое делают? Изменено 9 февраля 2017 пользователем CriErr Поделиться сообщением Ссылка на сообщение
TheDeadSkin #10003 9 февраля 2017 а что собственно меняется от того что n != m? допустим вот формула позиции в 1д массиве по координатам pos = Mx + y =>y = pos % M = (Mx + y) % M = (Mx % M + y%M) %M = (0 + y%M) = y % M x = pos / M = (Mx + y) / M = Mx/M + y/M = x + y/M тк M это размерность оси y, то y < M => y/M = 0 и y%M = y => обе формулы рабочие Поделиться сообщением Ссылка на сообщение
CriErr #10004 9 февраля 2017 (изменено) мб я не верно это все делаю с самого начала.x слева на правоy сверху внизлог выглядит вот так при итерации массива 0-8 для 3*3LogTemp:Warning: X : 0; Y : 0; : Grid 0LogTemp:Warning: X : 1; Y : 0; : Grid 1LogTemp:Warning: X : 2; Y : 0; : Grid 2LogTemp:Warning: X : 0; Y : 1; : Grid 3LogTemp:Warning: X : 1; Y : 1; : Grid 4LogTemp:Warning: X : 2; Y : 1; : Grid 5LogTemp:Warning: X : 0; Y : 2; : Grid 6LogTemp:Warning: X : 1; Y : 2; : Grid 7LogTemp:Warning: X : 2; Y : 2; : Grid 8а вот так для 3*4LogTemp:Warning: X : 0; Y : 0; : Grid 0 +LogTemp:Warning: X : 1; Y : 0; : Grid 1LogTemp:Warning: X : 2; Y : 0; : Grid 2LogTemp:Warning: X : 0; Y : 0; : Grid 3 +LogTemp:Warning: X : 1; Y : 1; : Grid 4 +LogTemp:Warning: X : 2; Y : 1; : Grid 5LogTemp:Warning: X : 0; Y : 1; : Grid 6LogTemp:Warning: X : 1; Y : 1; : Grid 7 +LogTemp:Warning: X : 2; Y : 2; : Grid 8 +LogTemp:Warning: X : 0; Y : 2; : Grid 9LogTemp:Warning: X : 1; Y : 2; : Grid 10LogTemp:Warning: X : 2; Y : 2; : Grid 11 + что за хуйня почему второй оффтоп не работает? Изменено 9 февраля 2017 пользователем CriErr Поделиться сообщением Ссылка на сообщение
TheDeadSkin #10005 9 февраля 2017 (изменено) честно говоря - неебупроверь правильно ли ты юзаешь размерности, т.е. не перепутал ли N, M (ака GridSize.X. .Y)потому что метод 100% рабочий в первую очередь проследи чтоб элемент который ты считаешь модулем был тем же размерность которого умножует второй т.е. x = [0...N-1]; y = [0...M-1] значит что pos = Mx + yтогдаx = pos / M; y = pos % M; или же pos = Ny + xи тогдаx = pos % N; y = pos / N; Изменено 9 февраля 2017 пользователем TheDeadSkin Поделиться сообщением Ссылка на сообщение
PochtiKakLoda #10006 9 февраля 2017 (изменено) мб я не верно это все делаю с самого начала.x слева на правоy сверху внизлог выглядит вот так при итерации массива 0-8 для 3*3LogTemp:Warning: X : 0; Y : 0; : Grid 0LogTemp:Warning: X : 1; Y : 0; : Grid 1LogTemp:Warning: X : 2; Y : 0; : Grid 2LogTemp:Warning: X : 0; Y : 1; : Grid 3LogTemp:Warning: X : 1; Y : 1; : Grid 4LogTemp:Warning: X : 2; Y : 1; : Grid 5LogTemp:Warning: X : 0; Y : 2; : Grid 6LogTemp:Warning: X : 1; Y : 2; : Grid 7LogTemp:Warning: X : 2; Y : 2; : Grid 8а вот так для 3*4LogTemp:Warning: X : 0; Y : 0; : Grid 0 +LogTemp:Warning: X : 1; Y : 0; : Grid 1LogTemp:Warning: X : 2; Y : 0; : Grid 2LogTemp:Warning: X : 0; Y : 0; : Grid 3 +LogTemp:Warning: X : 1; Y : 1; : Grid 4 +LogTemp:Warning: X : 2; Y : 1; : Grid 5LogTemp:Warning: X : 0; Y : 1; : Grid 6LogTemp:Warning: X : 1; Y : 1; : Grid 7 +LogTemp:Warning: X : 2; Y : 2; : Grid 8 +LogTemp:Warning: X : 0; Y : 2; : Grid 9LogTemp:Warning: X : 1; Y : 2; : Grid 10LogTemp:Warning: X : 2; Y : 2; : Grid 11 + что за хуйня почему второй оффтоп не работает? мне кажется ты какой-то велосипед хочешь сделаетьтебе надо выбрать любой квадрат и из его координат найти его row/column? или из row/column найти координаты в чем проблема найти ширину/высоту каждого квадрата (countOfSquaresInWidth / gridWidth, countOfSquaresInHeight / gridHeight )по индексу просто умножить и вот тебе x, y координаты недавно делал такое cellWidth = (Mathf.Abs(deviceSize.x) + Mathf.Abs(boardRightX)) / BoardCellWidth; // BoardCellWidth - количество в ширину клеток // BoardCellHeight - количество в высоту boardCellHeight = Mathf.RoundToInt(deviceSize.y * 2 / cellWidth); cellHeight = Mathf.Abs(deviceSize.y * 2) / boardCellHeight; // стартовая позиция для начала создания cellSpawnStartingPosition = new Vector3(-deviceSize.x + cellWidth / 2, deviceSize.y - cellHeight / 2); for (int row = 0; row < boardCellHeight; row++) { for (int column = 0; column < BoardCellWidth; column++) { /// spawn cell at positionToSpawn.... positionToSpawn.x += cellWidth; } positionToSpawn.y -= cellHeight; positionToSpawn.x = cellSpawnStartingPosition.x; } } можешь даже занести эти координаты в контейнер клетки, не надо будет считать Изменено 9 февраля 2017 пользователем PochtiKakLoda Поделиться сообщением Ссылка на сообщение
CriErr #10007 9 февраля 2017 @@TheDeadSkinкартинка в оффтопе, левый верхний рисунок 4*3 а вся математика по периметру делит и модулит на 3? когда индекс 7 вызывается для 4*3 с кодом : x = Index / GridSize.X; y = Index % GridSize.Y;x = 7/4 = 1y = 7%3 = 1то же самое у индекса 4x = 4/4 = 1y = 4%3 = 1тупо неверная математика у меня, мне нужно по меньшему индексу считать или как?@@PochtiKakLoda а мне и нужен велосипед, нужен GridManager с дохуя функционала, итерация по масиву один из них и мне нужна конверция индекс масива в координаты на сетке чтоб потом координаты сетки конвертировать в координаты в мире для любого размера блоков, точки отсчета и положения этого всего в пространстве и спаунить туда уже уже игровые объекты. Поделиться сообщением Ссылка на сообщение
PochtiKakLoda #10008 9 февраля 2017 @@CriErr так те помогло то что я выше написал? вроде все шо тебе надо есть, массив клеток создаешь с row, column, создаешь поле в классе для screenCoordinates, worldCoordinates, которые автоматически в методе конвертируются Поделиться сообщением Ссылка на сообщение
CriErr #10009 9 февраля 2017 массив будет, допустим 1000*1000 (МИЛЛИОН!)2/3 из которых NULL, в итоге 10-12мегабайт, а то что не NULL указывает на настоящие объекты, так что я не могу(NULL же) да и нет смысла хранить настоящую позицию в мире да в сетке в каждом объекте если по идее ее можно достать простой математикой. Поделиться сообщением Ссылка на сообщение
PochtiKakLoda #10010 9 февраля 2017 (изменено) массив будет, допустим 1000*1000 (МИЛЛИОН!)2/3 из которых NULL, в итоге 10-12мегабайт, а то что не NULL указывает на настоящие объекты, так что я не могу(NULL же) да и нет смысла хранить настоящую позицию в мире да в сетке в каждом объекте если по идее ее можно достать простой математикой. если элемента не существует зачем добавлять его в массив? пропусти через continue и динамический массив ествественно)не понятно что ты хочешь короче, опять же я тебе сказал что МОЖНО записать это в класса можешь в рантайме просто вычислить ширину высоту клетки и как я уже говорил indexX * width, indexY * height, твои координаты Изменено 9 февраля 2017 пользователем PochtiKakLoda Поделиться сообщением Ссылка на сообщение
CriErr #10011 9 февраля 2017 массив будет, допустим 1000*1000 (МИЛЛИОН!)2/3 из которых NULL, в итоге 10-12мегабайт, а то что не NULL указывает на настоящие объекты, так что я не могу(NULL же) да и нет смысла хранить настоящую позицию в мире да в сетке в каждом объекте если по идее ее можно достать простой математикой. если элемента не существует зачем добавлять его в массив? пропусти через continue и динамический массив ествественно)не понятно что ты хочешь короче, опять же я тебе сказал что МОЖНО записать это в класса можешь в рантайме просто вычислить ширину высоту клетки и как я уже говорил indexX * width, indexY * height, твои координаты а как ты знаешь что его нет? вот тебе нужно проверить всех соседей одной клетки, как ты их будешь проверять? Поделиться сообщением Ссылка на сообщение
TheDeadSkin #10012 9 февраля 2017 тупо неверная математика у меня, мне нужно по меньшему индексу считать или как? не по меньшему, а по одному и тому же, тому который ты юзаешь для определения позиции изначальноpos = M*x + yв этом случае pos не содержит инфы об N глянь ещё раз формулы что я постил, разверность всегда одинакова, тоесть /M %M или /N %N, но не /N %M Поделиться сообщением Ссылка на сообщение
PochtiKakLoda #10013 9 февраля 2017 массив будет, допустим 1000*1000 (МИЛЛИОН!)2/3 из которых NULL, в итоге 10-12мегабайт, а то что не NULL указывает на настоящие объекты, так что я не могу(NULL же) да и нет смысла хранить настоящую позицию в мире да в сетке в каждом объекте если по идее ее можно достать простой математикой. если элемента не существует зачем добавлять его в массив? пропусти через continue и динамический массив ествественно)не понятно что ты хочешь короче, опять же я тебе сказал что МОЖНО записать это в класса можешь в рантайме просто вычислить ширину высоту клетки и как я уже говорил indexX * width, indexY * height, твои координаты а как ты знаешь что его нет? вот тебе нужно проверить всех соседей одной клетки, как ты их будешь проверять? я не могу понять зачем тебе таблица в миллион элементов, в которой 2/3 null элементы? что это за таблица такая, для чего используется? Поделиться сообщением Ссылка на сообщение
TheDeadSkin #10014 9 февраля 2017 левый верхний рисунок 4*3 а вся математика по периметру делит и модулит на 3?глянь ещё раз тут y = pos % M = (Mx + y) % M = (Mx % M + y%M) %M = (0 + y%M) = y % M x = pos / M = (Mx + y) / M = Mx/M + y/M = x + y/Mосновное условие что M в формуле Mx+y это то же самое М что и для модуль/деление операцийиначе ты получаешь мусор который не несёт инфы Mx%N + y%N не даёт ничегоMx/N + y/N тоже Поделиться сообщением Ссылка на сообщение
CriErr #10015 9 февраля 2017 тупо неверная математика у меня, мне нужно по меньшему индексу считать или как? не по меньшему, а по одному и тому же, тому который ты юзаешь для определения позиции изначальноpos = M*x + yв этом случае pos не содержит инфы об N глянь ещё раз формулы что я постил, разверность всегда одинакова, тоесть /M %M или /N %N, но не /N %M я смотрю на формулы, но я вообще не понимаю твоей арифметики модулей, я понимаю что происходит, но почему так хз.завтра пересмотрю на свежую голову.а сейчас я просто сделал все по х и все заработало, подход говно конечно но спс тебе за результат. массив будет, допустим 1000*1000 (МИЛЛИОН!)2/3 из которых NULL, в итоге 10-12мегабайт, а то что не NULL указывает на настоящие объекты, так что я не могу(NULL же) да и нет смысла хранить настоящую позицию в мире да в сетке в каждом объекте если по идее ее можно достать простой математикой. если элемента не существует зачем добавлять его в массив? пропусти через continue и динамический массив ествественно)не понятно что ты хочешь короче, опять же я тебе сказал что МОЖНО записать это в класса можешь в рантайме просто вычислить ширину высоту клетки и как я уже говорил indexX * width, indexY * height, твои координаты а как ты знаешь что его нет? вот тебе нужно проверить всех соседей одной клетки, как ты их будешь проверять? я не могу понять зачем тебе таблица в миллион элементов, в которой 2/3 null элементы? что это за таблица такая, для чего используется? стратегия допустим, с громадной сеткой и объектами на ней, перемещающимися офк.самый простой доступ к любой клетке в любой момент, по моему мнениюэто иметь массив со всеми елементами и математику конвертации чего угодно во что угодно.сейчас я сделают это, а потом буду уже рефакторить и балансить size vs speed vs cache miss Поделиться сообщением Ссылка на сообщение
TheDeadSkin #10016 9 февраля 2017 (изменено) я смотрю на формулы, но я вообще не понимаю твоей арифметики модулей, я понимаю что происходит, но почему так хз.ключ к ответу кроется в формуле которая определяет 1Д координату по 2Д коордитане pos = Mx + yМ это обязательно размерность у, т.е. у принимает значения от 0 до М-1, только так мы имеем уникальность этой 1Д координаты Мх это смещение от начала "х раз" на "М ячеек"у это смещение на "у ячеек" в х-овом блоке вот та же ситуация, только всё "выпрямлено" х получается делением на М с округлением всегда вниз потому что 0 <= y <= M-1, тут думаю очевидноу получается модулем по М по той же самое причине при фиксированом у, изменение х значит что ячейки с этим значением у будут смещаться ровно на М М % М = 0=>хМ % М = 0=>(у + хМ) % М = у Изменено 9 февраля 2017 пользователем TheDeadSkin Поделиться сообщением Ссылка на сообщение
DonKihot #10018 9 февраля 2017 Кто-нибудь изучал React? Зачем нужен Redux? Поделиться сообщением Ссылка на сообщение
Lorde - Sober ll #10019 9 февраля 2017 не знаю зачем тебе иметь дело с ублюдошным жсом, и с реактом я знаком только в псевдотеории, номогу продать почем купилреакт это компоненты с состояниямиа редукс позволит тебе обмениваться состояниями между компонентаминапример у тебя есть компонент в виде списка товаров, а возле каждого товара есть кнопка купить, у которой может быть состояние "куплено" или "продается"и в то же время у тебя есть второй компонент в виде корзины товаров, которому нужно знать, например, какое количество товаров ты купил и на какую сумму жду что кто-нибудь прошареный ворвется have courage and be kind 😈🫀💋 🩸👣🤌🏿🦄 🐝✨ ⚡️ ☄️❣️ 💕 💞❤️😈 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 💖 Поделиться сообщением Ссылка на сообщение
TheWorldSpinningForYa #10020 10 февраля 2017 Чтобы хранить все состояния приложения в одном месте - сторе, а не по компонентам Поделиться сообщением Ссылка на сообщение