Эволюция интерфейса
| |
connect | Дата: Четверг, 26.06.2014, 23:53 | Сообщение # 31 |
Полковник
Группа: Модераторы
Сообщений: 168
Репутация: 13
Статус: Offline
| Пока еще ничего интересного. Разбираю формулы движения по еллипсу, для получения красивой траектории.
|
|
| |
azl | Дата: Пятница, 27.06.2014, 18:39 | Сообщение # 32 |
Админ
Группа: Администраторы
Сообщений: 1310
Репутация: 13
Статус: Offline
| Сдается мне, ты полез в дебри не сделав основ.
Я набросал то, о чем тебе говорил.
Все бы ничего, но есть одна проблема, о которой я уже писал. Можно кликать за пределами изображений элементов и действие все равно произойдет, т.к. в нельзя указать форму TImage или участок, по которому можно кликать. Это, конечно, не большая проблема, но все же. Можно сделать элементы не в виде треугольников, а в виде прямоугольников и тогда проблема отпадет сама собой. Видимо, ты этот момент не учел, когда делал эскиз.
Сначала нужно сделать базу, а потом уже ее дорабатывать. Иначе можно просто отбить все желание, если ничего толкового не выйдет. Если что-то не получается, нужно оставить эту затею и попытаться сделать по-другому, либо вообще отказаться от чего-то.
На данном этапе у тебя есть неорганизованный набор идей и ты до конца не представляешь себе общую картину, мне кажется.
|
|
| |
connect | Дата: Пятница, 27.06.2014, 21:45 | Сообщение # 33 |
Полковник
Группа: Модераторы
Сообщений: 168
Репутация: 13
Статус: Offline
| Так тоже уже неплохо, но я имел в виду несколько иное. Те самые "треугольники" в моем представлении на самом деле являются целиковыми игровыми объектами, только повернутыми и убранными за границы окна. Отслеживать наведение и клики я собирался по маске. Т.е. у каждого игрового объекта есть массив из точек, образующий замкнутую фигуру (например прямоугольник). Мы проходим по объектам, сверяя координаты курсора на предмет нахождения его внутри этой маски. Плюс нам нужен параметр "Order", чтобы определять какой объект выше, а какой ниже.
|
|
| |
azl | Дата: Пятница, 27.06.2014, 23:37 | Сообщение # 34 |
Админ
Группа: Администраторы
Сообщений: 1310
Репутация: 13
Статус: Offline
| Ну я сделал из того, что есть. Т.е., взял готовую картинку и с ней орудовал. Это абсолютно нельзя брать за основу. Тут даже форма не на весь экран разворачивается, по той причине, что картинка будет растянута.
Цитата connect ( ) Те самые "треугольники" в моем представлении на самом деле являются целиковыми игровыми объектами, только повернутыми и убранными за границы окна. Что ты подразумеваешь по игровыми объектами? То, что ты называешь объектами, у меня это формы. Повернуть форму в Delphi нельзя, как, например, слой в Photoshop'е. Разве что монитор наклонить под определенным градусом. То же самое касается и объектов, таких как TImage и т.д. Есть возможность в пределах самого TImage разместить изображение под углом. Даже если разместить форму за пределами и оставить только ее часть с фрагментом изображения, не получится сделать эффект выезда формы по дуге. Также не нужно забывать, что карта - это не просто картинка. Там много других объектов. В моем случае - это TShape, которые показывают текущее местоположение и при клике по некоторым из которых появляются изображения замков. То же самое касается и листов игроков. Тут еще сложнее, поскольку используется еще больше объектов. Кроме того, что будет выезжать при клике по объекту Правила? Это целая книга.
Еще 1 момент. Даже если допустить, что можно сделать форму с эффектом выезда по дуге и возможностью расположить ее под нужным углом и т.д., будет открыто много форм, которые будут висеть в памяти. А это не есть хорошо.
Опять же, не стоит забывать об окнах, которые будут открыты во время игры. Если допустить, что объектами, родительской формой которых будет форма с изображением стола, будут какие-то компоненты и будет эффект выезда, они будут выезжать под уже открытые окна.
Мне кажется ты равняешься на возможности Photoshop, совмещая их с Delphi. Располагать объекты в Delphi, как слои в Photoshop'е, не получится. По крайней мере, стандартными средствами, так точно. Возможно, есть какие-то компоненты, которые чем-то помогут, но они не спасут, поскольку без форм тут не обойтись.
|
|
| |
connect | Дата: Суббота, 28.06.2014, 15:30 | Сообщение # 35 |
Полковник
Группа: Модераторы
Сообщений: 168
Репутация: 13
Статус: Offline
| Ну, отчего ж нельзя. Я знаю несколько способов ) например: делаем прозрачную форму, ее задник делаем картинкой. Картинка задника двигается - форма скрыта. Остановилась - форма появилась
|
|
| |
azl | Дата: Суббота, 28.06.2014, 18:27 | Сообщение # 36 |
Админ
Группа: Администраторы
Сообщений: 1310
Репутация: 13
Статус: Offline
| В таком случае нужно развивать то, что я сделал. Не нужно, чтобы постоянно висели формы. Кладем на стол TImage с фрагментом карты, как есть сейчас. При клике по этому изображению создается прозрачная форма, на которой в той же позиции размещена такая же часть изображения. И по таймеру изображение начинает двигаться. Это, что касается карты, когда форма будет развернута на весь экран. С правилами, думаю, тут ничего мудрить не нужно. Просто запускать, скажем, вордовский или pdf файл. А с листами игроков тут будет посложнее. Во-первых, в отличие от карты, он будет представлять собой не изображение, а форму с множеством компонентов, возможно, на фоне изображения. Если будет выезжать белый лист, а потом будет появляться форма - будет не совсем то. Во-вторых, тут нужно делать фиксированный размер формы, я думаю.
Вот несколько ссылок по данной теме http://prof-xaker.at.ua/load....1-0-575 http://www.cyberforum.ru/delphi-multimedia/thread664600.html http://www.programmersforum.ru/showthread.php?t=112369 http://delphiexpert.ru/delphi-....ya.html
Идея может и неплохая, но крайне геморройная, на мой взгляд.
|
|
| |
connect | Дата: Воскресенье, 29.06.2014, 22:09 | Сообщение # 37 |
Полковник
Группа: Модераторы
Сообщений: 168
Репутация: 13
Статус: Offline
| Вот тут исходник картинки (шрифт, фотошопный файл и пару текстур). https://www.dropbox.com/s/nm5tle4nxmfddkf/concept02.zip ~12mb
Добавлено (29.06.2014, 20:09) --------------------------------------------- Реализация моей идеи интерфейса воплотилась в небольшом движке 2d-рендера. Это сможет позволить тебе создавать дополнительные визуальные эффекты. Например проигрывать какую-нибудь анимацию во время боя. Ну не знаю.. брызги крови, порезы, пламя или еще что. Но движок пока еще не готов для демонстрации.
|
|
| |
azl | Дата: Воскресенье, 29.06.2014, 22:32 | Сообщение # 38 |
Админ
Группа: Администраторы
Сообщений: 1310
Репутация: 13
Статус: Offline
| Я понял. Тогда не буду надоедать лишними вопросами, а буду ждать. Тем более, что мне есть над чем работать.
|
|
| |
connect | Дата: Вторник, 01.07.2014, 01:37 | Сообщение # 39 |
Полковник
Группа: Модераторы
Сообщений: 168
Репутация: 13
Статус: Offline
| Первый proof of concept. https://www.dropbox.com/s/ltxdr9sez2nl4pt/azl2_01s.zip ~3.35mb
Что уже есть * Кэш изображений (использование одной картинки разными объектами) * Поддержка bmp, jpg, png форматов изображений * Отрисовка через back buffer для избежания моргания * Зацикленное заполнение формы изображением фона (tiled) * Возможность поворота игрового объекта * Возможность создавать задачу (пока только поворот) * Определение активного объекта по динамической маске * Возможность вешать события на объекты
Чего пока нет * Перемещения объектов по виртуальному столу * Работы с дочерними формами * Прозрачности
|
|
| |
azl | Дата: Вторник, 01.07.2014, 19:12 | Сообщение # 40 |
Админ
Группа: Администраторы
Сообщений: 1310
Репутация: 13
Статус: Offline
| Здорово получается, мне нравится.
|
|
| |
connect | Дата: Четверг, 03.07.2014, 13:15 | Сообщение # 41 |
Полковник
Группа: Модераторы
Сообщений: 168
Репутация: 13
Статус: Offline
| Сделал добавление объектов относительно привязки
// label texture mask anchors x y angle OBJ.Add('monster2', 'monster', '*', akLeftTop, 200, 150); OBJ.Add('paper3', 'paper', '*', akLeftBottom, 350, -200, 40);
А пока более ничего примечательного. В ближайших планах: перемещение объектов по столу и работа с формами. В силу незначительности, пример не прилагаю.
Добавлено (03.07.2014, 11:15) --------------------------------------------- Некоторые мои эксперименты по передвижению объекта: http://js.do/conn/cardmove
Сообщение отредактировал connect - Четверг, 03.07.2014, 00:10 |
|
| |
azl | Дата: Вторник, 15.07.2014, 00:33 | Сообщение # 42 |
Админ
Группа: Администраторы
Сообщений: 1310
Репутация: 13
Статус: Offline
| Немного заморочился с элементами нового дизайна. Поработал с регионами. Т.е., проблемы с кликом по TImage вне картинки, о которой я писал выше, теперь нет. При наведении курсора, изображения меняют яркость. Для примера повесил на пункт меню "Загрузить игру" форму с картинкой окна событий (Книга). Листы игроков сделал в виде листов из тетради в клеточку. Так будет правильнее и понятнее, а то смятые листы как-то не совсем в тему. В идеале не помешает имитация какой-то надписи ручкой на этих листах, а то не совсем ясно, что это за листочки. Кубики можно расположить в левой части экрана, где-то под картой, чтобы место не пустовало.
|
|
| |
connect | Дата: Вторник, 15.07.2014, 08:34 | Сообщение # 43 |
Полковник
Группа: Модераторы
Сообщений: 168
Репутация: 13
Статус: Offline
| А у меня тут на днях второй сын родился. Сам понимаешь, не до этого Как устаканится новый быт, продолжу.
По тесту: тетрадный лист - хорошо, подсветка - тоже.
ЗЫ: Насчет содержимого форм - их можно двигать, как угодно (повороты, искажения). Нужно только брать содержимое канвы FormX.Canvas, пихать его в текстуру игрового объекта (которая хранится в памяти как TBitmap), делать саму форму невидимой, а дальше вертеть картинку формы, как угодно.
Добавлено (15.07.2014, 06:34) --------------------------------------------- Пока сделал более грамотный обработчик событий без IF.. IF...
По принципу:
Код procedure onClick_menu_exit(Sender: integer); begin Form1.Close; end;
procedure TForm1.FormCreate(Sender: TObject); begin ... // label texture label mask anhcors x y angle event handler OBJ.Add('menu_exit', 'menu_exit_0', '*', akLeftTop, 600, 600, 0, onClick_menu_exit); ... end;
procedure TForm1.FormClick(Sender: TObject); var tobj : mObj; begin tobj := OBJ.Items[ OBJ.Selected ]; if ( Assigned(tobj.onClick) ) then tobj.onClick(i); end;
Сообщение отредактировал connect - Вторник, 15.07.2014, 08:38 |
|
| |
azl | Дата: Вторник, 15.07.2014, 11:06 | Сообщение # 44 |
Админ
Группа: Администраторы
Сообщений: 1310
Репутация: 13
Статус: Offline
| Поздравляю с рождением сына. Это великое событие!
Цитата connect ( ) Насчет содержимого форм - их можно двигать, как угодно (повороты, искажения). То, что сделал я, не позволяет это делать. Все эти формы - это TImage, спроектированные OnDesignTime, расположенные поверх регионов. Могу выложить исходник.
|
|
| |
connect | Дата: Вторник, 15.07.2014, 23:07 | Сообщение # 45 |
Полковник
Группа: Модераторы
Сообщений: 168
Репутация: 13
Статус: Offline
| Спасибо.
Да, было б интересно.
|
|
| |
|