doom2d.org

Главная база плоских морпехов
It is currently 07 Dec 2023, 10:26

All times are UTC + 3 hours




Post new topic Reply to topic  [ 22 posts ]  Go to page 1, 2  Next
Author Message
PostPosted: 30 Sep 2017, 16:36 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
Code:
[16:28:54] <Jabberwock> вот у тебя карта 1600*1600
[16:29:23] <Jabberwock> ты в нее копируешь объект из карты 4000*4000
[16:30:14] <binarymaster> сейчас объекты вставляются из буфера с абсолютным смещением?
[16:30:16] <Jabberwock> он расположен по координатам  3600*200
[16:30:31] <Jabberwock> и он вставляется за картой. и хер его найдешь
[16:30:40] <binarymaster> ну я и говорю
[16:30:49] <binarymaster> надо сделать опцию "относительное смещение при вставке"
[16:30:55] <Jabberwock> может быть, сделать проверку, чтобы он вставлялся относительно центра экрана?
[16:31:17] <binarymaster> или не опцию, а прямо сразу так, да
[16:31:48] <binarymaster> багрепорты / фичреквесты такие уже есть?
[16:31:57] <binarymaster> если есть, прошу сослаться на них, если нет - создать)
[16:32:11] <Jabberwock> нет времени писать нормальный реквест, я сейчас просто лог скопирую
[16:32:18] <binarymaster> окай

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 30 Sep 2017, 17:06 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 6593
Location: Владивосток
Не надо опцию. То, что вставляется по абсолютному смещению - это конкретная недоработка.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 30 Sep 2017, 18:26 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
Надо вставлять по дефолту по центру экрана и по ctrl-shift-v с абсолютным смещением.
Но БЕЗ этого дебильного сдвига на 16х16рх.

Абсолютное смещение иногда очень полезно.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 30 Sep 2017, 19:20 
Offline
Приколист
User avatar

Joined: 24 Jan 2012, 15:18
Posts: 1424
Location: Москва
Jabberwock wrote:
Надо вставлять по дефолту по центру экрана и по ctrl-shift-v с абсолютным смещением.
Но БЕЗ этого дебильного сдвига на 16х16рх.

Абсолютное смещение иногда очень полезно.
Сделал всё именно так, кроме одного - он будет вставлять относительно текущей позиции со смещением 32x32, т.е. не по центру экрана. Думаю так будет удобнее в случае с большими конструкциями.

http://repo.or.cz/d2df-editor.git/commitdiff/9303e084844dfe5532c67b13570e6bf036a57141

_________________
by Stas'M


Top
 Profile  
 
PostPosted: 01 Oct 2017, 15:52 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
А если по центру, но центр совмещать с центром вставленной группы объектов?
В случае если размер вставленной группы объектов превышает размер вьюпорта редактора, делать, как у тебя сейчас.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 01 Oct 2017, 16:10 
Offline
Приколист
User avatar

Joined: 24 Jan 2012, 15:18
Posts: 1424
Location: Москва
Jabberwock wrote:
А если по центру, но центр совмещать с центром вставленной группы объектов.
В случае если размер вставленной группы объектов превышает размер вьюпорта редактора, делать, как у тебя сейчас.
Слишком много проверок придётся делать, а экраны у всех разные. Кому-то вставка по центру может показаться неудобной (например мне).

_________________
by Stas'M


Top
 Profile  
 
PostPosted: 01 Oct 2017, 23:31 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
Как хочешь, непринципиальный вопрос. Но было бы похоже на поведение фотошопа.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 21 Oct 2018, 15:58 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:57
Posts: 3987
Location: Киров
Блин, как же неудобно стало. Верните старый вариант. Вот сделал панельку 4*4, сместил её на 4 пикселя вниз и 4 пикселя вправо. Копирую, чтоб поставить эту панельку в таком же положении на другое место, при Ctrl+V положение сбивается, при Ctrl+Shift+V он ставится на то же место, то есть один в один и не понятно, что дубликат сделался, так можно случайно насоздавать одну и ту же панель по несколько раз и не понять этого. Раньше вставка со смещением на 16 пикселей вниз и влево намного понятней и удобней была.

_________________
Давай, картечью демонов
Размажем по стене.
Давай, берсерком выпустим
Весь ливер сатане!

Сделайте нормальный огнемёт! :evil:


Top
 Profile  
 
PostPosted: 23 Oct 2018, 03:47 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
Ар, а как лучше? Смещать по Ctrl-V на 16 px?

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 23 Oct 2018, 06:19 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:57
Posts: 3987
Location: Киров
Ну можно и по Ctrl+Shift+V

_________________
Давай, картечью демонов
Размажем по стене.
Давай, берсерком выпустим
Весь ливер сатане!

Сделайте нормальный огнемёт! :evil:


Top
 Profile  
 
PostPosted: 23 Oct 2018, 15:30 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
Ctrl+Shift+V нужно именно для вставки по тем же координатам. Это очень нужная функция.

Например, ты делаешь сложную карту. В процессе вырезаешь какую-то часть объектов в середине, чтобы они тебе не мешали, исправляешь там, например, фоновые текстуры и вставляешь вырезанное точно на то же самое место.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 23 Oct 2018, 15:54 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:57
Posts: 3987
Location: Киров
Так это не сложно сделать с num4, num8. Тем более эта вставка сразу выделена. А вот небольшое смещение куда более часто используется.

_________________
Давай, картечью демонов
Размажем по стене.
Давай, берсерком выпустим
Весь ливер сатане!

Сделайте нормальный огнемёт! :evil:


Top
 Profile  
 
PostPosted: 23 Oct 2018, 16:53 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
Тобой. У меня наоборот.
Попробуй придумать решение, которое устроит всех, я сейчас не могу этим заняться.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 23 Oct 2018, 19:22 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:57
Posts: 3987
Location: Киров
Хорошо, ctrl+v. Если вставляемый объект со смещением вниз и влево по 16 пикселей попадает в видимое поле у редактора, то он создаётся там, если объект за полем видимости, то как сейчас сделано (в верхнем левом углу экрана)
Причём, чтоб работало как раньше, то есть копируется уже новый объект после вставки. В результате которой создаётся лесенка влево вниз.

_________________
Давай, картечью демонов
Размажем по стене.
Давай, берсерком выпустим
Весь ливер сатане!

Сделайте нормальный огнемёт! :evil:


Top
 Profile  
 
PostPosted: 23 Oct 2018, 19:23 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
Наверное, норм.
Только уточню - в верхнем левом углу с привязкой к сетке 16х16.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 23 Oct 2018, 19:33 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:57
Posts: 3987
Location: Киров
Jabberwock wrote:
Наверное, норм.
Только уточню - в верхнем левом углу с привязкой к сетке 16х16.
Может быть в верхнем правом? Да, хорошо бы, чтоб смещение тоже сохранялось при вставке в любом случае. То есть сдвинул я объект на 3 пикселя вниз и 2 влево. Так при вставке он будет создан в (32+2;32+3)

_________________
Давай, картечью демонов
Размажем по стене.
Давай, берсерком выпустим
Весь ливер сатане!

Сделайте нормальный огнемёт! :evil:


Top
 Profile  
 
PostPosted: 03 Sep 2023, 16:09 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 6593
Location: Владивосток
Увы, Стас перенёс эту тему в "Выполненные" раньше, чем были учтены недоработки.
Но вчера Джа напомнил мне про вот этот косяк, и я решил его наконец-то поправить. А в поисках причины проблемы обнаружил эту тему.

ar888» Вот сделал панельку 4*4, сместил её на 4 пикселя вниз и 4 пикселя вправо. Копирую, чтоб поставить эту панельку в таком же положении на другое место, при Ctrl+V положение сбивается
Надеюсь, что поправил. Проверь, пожалуйста.
https://repo.or.cz/d2df-editor.git/commit/c65e1ff1d13495a265aacb8e42954a7a731edec2

ar888» Если вставляемый объект со смещением вниз и влево по 16 пикселей попадает в видимое поле у редактора, то он создаётся там, если объект за полем видимости, то как сейчас сделано (в верхнем левом углу экрана)
Это было сложновато делать, я пока что сделал попроще. Если в буфере обмена лишь один объект, то он вставится по своим координатам с прибавлением к ним шага сетки. Если же несколько, то они возникнут в левом верхнем углу камеры. Тоже проверь это, пожалуйста.
https://repo.or.cz/d2df-editor.git/commit/1ce8d00ce0f8da0afff7b341a361f0993f33e810

Решение далековато от правильного, потому что единичный объект мог быть скопирован с другой карты или вообще текстом извне (маловероятно, но всё же). Кроме того, вставка нескольких объектов рядом с изначальными всё же может быть довольно полезной. Но для того, чтобы сделать всё по уму, нужно добиться следующих целей:

  • внутренний буфер обмена редактора не должен пересоздаваться при каждом копировании и вставке;
  • нужно отслеживать ситуацию, когда данные были скопированы извне редактора (в т.ч. из другого его экземпляра), и в этом случае очищать внутренний буфер;
  • представление данных в буфере обмена внутри самого редактора не должно постоянно перегоняться из двоичной формы в текстовую и обратно;
  • структурам объектов карты нужно запилить методы записи в TStream чтобы сделать всё Delphi-идиоматично.

Пишу себе на будущее, чтобы запилить когда появится время разобраться. Сходу въехать толком не получилось.

Некоторые ссылки для себя будущего:

Not reacting to clipboard change - windows
Clipboard - Lazarus wiki
How to check if clipboard changed ? Please help!! - delphi
How to test for empty clipboard? - delphi
Copy a dynamic array to and from the Clipboard - delphi
Use Delphi Pascal to detect when the Windows clipboard is changed | How to
winapi - How to capture the clipboard changes from Lazarus? - Stack Overflow
delphi - Intercepting pastefromclipboard message outside of the TMemo, TEdit control - Stack Overflow
delphi - TApplicationEvents.OnMessage does not capture the WM_CLIPBOARDUPDATE message - Stack Overflow
Мониторинг изменений буфера обмена в Lazarus под Windows - Lazarus - Каталог статей - Программирование и анализ электрических цепей
Clipboard. Наблюдение за буфером обмена Windows. - Delphi - Киберфорум


Что до видимого поля, то это переусложение. Достаточно того, чтобы самый верхний левый из скопированных объектов своим углом попадал в поле видимости.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 04 Sep 2023, 03:01 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
ЧД» вообще текстом извне (маловероятно, но всё же)
Я постоянно работаю со вставкой текстом, это важный момент.

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

Есть такие нюансы.
1. Когда в скопированном участке есть, например, ТочкаДМ, и она находится в левом-верхнем углу, выравнивание по сетке идет по верхнему-левому углу этой ТочкиДМ.
А между тем области, монстры и итемы в том месте, откуда ты их копируешь, совершенно необязательно выравняны по сетке.
Поэтому при выравнивании, если в скопированном есть панели, надо снапать вставленное к сетке по панелям, игнорируя монстров, итемы и области.

2. Сейчас вставку сделали по запросу Ара: когда объект один - он вставляется на свое же место со смещением в один шаг сетки.
Когда их два и более - он вставляется в верхний угол карты.
Оказалось, что когда вставленное появляется то под курсором, то в верхнем левом углу, это сбивает фокус восприятия (по крайней мере мне).
Предлагаю вставлять всегда в верхнем левом углу. А для вставки со сдвигом добавить команду Duplicate - Ctrl-D, которая вообще не задействует буфер обмена.

3. Еще одна проблема вставки, старая. Монстры меняют направление взгляда по V, и поэтому копипаста делает с ними всякие веселые вещи. Можно исправить это, перебиндив кнопку разворота монстра на I (Invert).

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 04 Sep 2023, 13:05 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 6593
Location: Владивосток
Jabberwock» Я постоянно работаю со вставкой текстом, это важный момент.
Но едва ли ты через неё гоняешь одиночные объекты.

Jabberwock» Поэтому при выравнивании, если в скопированном есть панели, надо снапать вставленное к сетке по панелям, игнорируя монстров, итемы и области.
Не так. Это был косяк, я просто не учёл, что координаты верхнего левого угла всего копируемого участка могут принадлежать не одному и тому же объекту, а разным.
Вроде поправил, проверь.
https://repo.or.cz/d2df-editor.git/commit/d1d8c51b133bc9571156ea9aef7eef3b979c0025

Jabberwock» Предлагаю вставлять всегда в верхнем левом углу. А для вставки со сдвигом добавить команду Duplicate - Ctrl-D, которая вообще не задействует буфер обмена.
Потом. То, что сейчас - это так или иначе временное решение, я же писал выше.

Jabberwock» Можно исправить это, перебиндив кнопку разворота монстра на I (Invert).
Тоже сделал.
https://repo.or.cz/d2df-editor.git/commit/abe1987b6df0ba80f06e3defe3ccc79b9b3c061d
Все причастные - обновите это в документации, пожалуйста.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 06 Sep 2023, 05:07 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
» Но едва ли ты через неё гоняешь одиночные объекты.
Нет, конечно, не одиночные, а целые карты.

» Вроде поправил, проверь.
Выравнивание по сетке вроде бы исправилось, по крайней мере, я не смог его сломать. Прекрасно.

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

» Тоже сделал.
Про I - отлично.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 22 posts ]  Go to page 1, 2  Next

All times are UTC + 3 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
doom2d.org, since 2007