При хостинг поддержке Интернет-сообщества VBIOS CS-Mapping.com.ua
Вернуться   CS-Mapping.com.ua > Forum > Разработка игр > Xash3D Engine
Ник
Пароль
Регистрация Правила форума FAQ Пользователи Администрация Календарь Поиск За 24 часа Пометить все разделы прочитанными

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.05.2017, 00:47  #1
a1batross
a1batross
Старшина
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 19
Сообщения: 408


По умолчанию MainUI C++ Beta

Тихо и незаметно я закончил переносить меню Xash3D на кресты.
Поэтому выкладываю menu.dll скомпилированной шестой штудией специально для оригинального Ксаша. Учтите, что меню всё-таки писалось под нужды форка, и поэтому меню для настройки сенсорного управления, геймпада и обхода NAT остались и естественно ничего не делают в оригинальном Ксаше.

Что дал переход на C++ и ООП:
* Копипасты стало меньше.
* ООП дал возможность реализовать простую оконную систему по принципу: корневое меню и с окнами сверху. Для примера: мессаджбокс -- отдельное окно с трёмя контролами внутри.
* Реализация ивент системы.
Например, чтобы задать какое-то действие
* Для всех "изменяемых" контролов упрощена работа с кварами.
* Бинарник стал больше. Наверное, если удалить всё то, что относится к форку, может разницы в два раза не будет.
* В большинстве случаев схожие по функционалу меню можно объединить. Например, так были объеденены меню загрузки и сохранения меню
и интернет и локальных игр.
* Писать стало проще. Правда. ;)

Среди моих личных нововведений и исправлений:
* В мессаджбоксах можно подсвечивать какую-нибудь из кнопок.
* Сверившись с WON халфой, исправил подсвечивание кнопок.
* Анимации перехода используют баннер, если он присутствует. И больше нет глюка, когда анимация не попадает в настоящее местоположение баннера новой страницы меню.
* Кнопочка Update открывает страницу с релизами форка, если мод не имеет своего Update URL. :D
* Новый контрол Switch.
* Добавил парсер SCR из форка, но он не используется в данный момент.
* Слайдеры не глючат больше с минимумом и максимумом отличными от 0.0f и 1.0f, соответственно.
* Так же включены изменения из форка: кнопочка Disconnect, исправление "растянутого" бэкграунда для Steam бэкграундов.

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

Обновление от 13.05.17:
* Добавил SCR парсер. Меню читает settings.scr и user.scr и на основе них строит меню.
Настройки сервера открываются по кнопке Adv settings в меню создании сервера, а настройки игрока по кнопке Adv settings в меню Customize.
* Слайдеры теперь адекватно реагируют на перемещение и перетаскиваются ровно посередине.
* Есть диалог прогресса загрузки сервера или подключения к серверу.
ВАЖНО понимать, что поддерживается это движком только в экспериментальных версиях форка. Скачать их можно отсюда. Устанавливается экспериментальная версия поверх последнего релиза форка, который можно скачать здесь.

Обновление от 18.06.17:
* Добавлен шрифт-рендер. Используется везде в меню, так что любой текст есть его демонстрация.
* Добавлена возможность написания кастомных анимаций между страницами меню.
* Продвинутое позиционирование текста.
* ui_borderclip для дебага итемов.
Квары настроек шрифта:
  • ui_menufont -- шрифт меню
  • ui_confont -- шрифт а-ля консольный
  • ui_blursmallfont, ui_blurmedfont, ui_blurbigfont -- настройка размытия разных размеров шрифтов
  • ui_italicsmallfont, ui_italicmedfont, ui_italicbigfont -- курсив для разных размеров шрифта меню

Билд от 05.09.2017:

Вмержил в главную ветку всё то, что было сделано в рамках кастомного меню для paranoia.

Изменения:
* Новый контрол: CMenuTable для организации таблиц. На данный момент на него переведены все таблицы в стандартном меню.
* Крайне базовая и ограниченная поддержка RES файлов от VGUI2.
Пример окна использующего RES файл CDKeyEntryDialog, исключая логику.
https://github.com/FWGS/mainui_cpp/...r/menus/Zoo.cpp
* Добавлены именованные контролы и ивенты в рамках поддержки RES файлов.
* Добавлена утилита просмотра активных окон(ui_show_window_stack).
* Исправления для поддержки пререлизного движка Xash3D.
* Исправления CMenuField с variable-width шрифтами.
* Исправления ввода кириллицей.
* Переписана WON-style анимация.
* Удалены демонстрационные квары меню.
* Прочие исправления, в которых всё равно вряд ли кто заинтересован.

Загрузить DLL-ку можно во вложении, переименовав txt в dll..
Исходный код: https://github.com/FWGS/mainui_cpp
[ Вложения ]
Тип файла: txt menu.txt (264.0 Кбайт, 17 просмотров)

Последний раз редактировалось a1batross, 05.09.2017 в 23:15.
a1batross вне форума Ответить с цитированием
Старый 03.05.2017, 02:02  #2
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,101


По умолчанию

[ Цитата ] Что дал переход на C++ и ООП:
* Копипасты стало меньше.
* Бинарник стал больше
Дядя Миша вне форума Ответить с цитированием
Старый 03.05.2017, 02:23  #3
FiEctro
FiEctro
Регистрация: 28.07.2006
Адрес: Эквестрия
Возраст: 26
Сообщения: 16,377


По умолчанию

Афтар молодец за проделанную работу.
FiEctro вне форума Ответить с цитированием
Старый 03.05.2017, 02:26  #4
a1batross
a1batross
Старшина
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 19
Сообщения: 408


По умолчанию

2 Дядя Миша:
Возможно, это ещё из-за увеличенного количества функций. Если раньше все кнопки управлялись одним коллбэком на все возможные ивенты, то здесь это не так.
a1batross вне форума Ответить с цитированием
Старый 11.05.2017, 02:21  #5
a1batross
a1batross
Старшина
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 19
Сообщения: 408


По умолчанию

Так как MainUI C++ функционально дорос до своего предка, то теперь в него добавляются новые фичи.

Как расширение в форке mittorn-ом реализован прогрессбар во время подключения к серверу:
ConnectionProgress

А я тем временем дописал поддержку листов в парсере SCR и вывел всё это красивенько в меню.
ScriptMenu

Пора уже отказываться от уродливого моноширонного встроенного шрифта. >_<

UPD: А ещё переносить из cs16client парсер VGUI2-шных файлов переводов. Надо только от STL отвязать, ибо тянуть весь STL ради одного std::unordered_map(которого ещё и нет в сосущих компиляторах, хотя можно заменить на std::map) как-то дороговато.

Последний раз редактировалось a1batross, 11.05.2017 в 02:38.
a1batross вне форума Ответить с цитированием
Старый 11.05.2017, 02:44  #6
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,101


По умолчанию

[ Цитата ] Пора уже отказываться от уродливого моноширонного встроенного шрифта. >_<
Это шрифт из Quake3 :)
То что он встроенный делу не вредит, наоборот - он показывается, если все другие шрифты отсутствуют. Надо его заменить на variable-width.
Дядя Миша вне форума Ответить с цитированием
Старый 11.05.2017, 02:48  #7
a1batross
a1batross
Старшина
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 19
Сообщения: 408


По умолчанию

2 Дядя Миша:
у меня появилась мысль, чтобы поверх записать размеры букв встроенного шрифта. Нужен будет моноширинный -- эти размеры будут просто игнорироваться.
a1batross вне форума Ответить с цитированием
Старый 11.05.2017, 05:00  #8
Qwertyus
Qwertyus
Подполковник
Регистрация: 13.08.2009
Сообщения: 1,160


По умолчанию

В WON HL есть такая особенность, что все строчки интерфейса имеют внутреннее стандартное цифровое значение. За счёт этого есть возможность указать для любой строки альтернативное значение текста в файле strings.lst. Соответственно, при необходимости с помощью этого файла в модах меняется текст для любой строки. Либо можно сделать перевод всего меню на другой язык, просто отредактировав данный файл. В меню Ксаша линковка есть только на несколько строчек (меняется текст только в самом первом экране). Исходники WON-меню при этом имеются, так что доделать поддержку замены строк вполне реально.

Ещё в меню Ксаша режет глаз то, что подсказки ко всем пунктам идут со смещением. Текст строки с подсказкой расположен как бы на строчку выше, чем нужно. Также неполноценно реализована поддержка прокрутки в меню настройки клавиш. Это постоянное смещение выделенной строки с клавишей в самый низ списка. И необходимость навести мышь на зону окна с клавишами для того, чтобы прокрутка колёсиком мыши работала. Всё это делает неудобным управление в меню при использовании виртуальных тачконтроллов, а не реальной мыши. Также меню не реагирует на нажатие клавиши Enter на нумпаде, нужно жать только большой Enter.

Ну и ещё в WON была возможность сортировать выбирать способ сортировки содержимого списков по типу Excel. Например, сейвы можно сортировать по времени сохранения или по имени, тыкнув в нужный пункт в заголовке. Список модов можно сортировать по любому из критериев (имя, размер, версия и т. п.).

И было бы неплохо добавить пункт "Продолжить игру" сразу же при запуске игры в случае наличия ранее сделанных сейвов. Чтобы при нажатии пункта сразу же запускался последний имеющийся сейв вместо необходимости открывать окно сейвов.

Ну и я уже собственно предлагал заменить расширение файла, с которым Ксаш делает сохранения. По типу .save вместо .sav. Это нужно, чтобы сохранения GoldSource не перезаписывались сохранениями Ксаша и наоборот (в случае переноса папки мода из обычного ХЛ в Ксаш, например). Это полезно при тестировании, когда кидаешь папку мода туда-сюда, чтобы сравнить те или иные моменты в игре. Заодно можно будет просто убрать из отображения сохранения ГС вместо присвоения им подписи Unsupported, т. к. от этого проку никакого, кроме как возможность увидеть, что эти сохранения есть и удалить их из меню.

Последний раз редактировалось Qwertyus, 11.05.2017 в 05:04.
Qwertyus вне форума Ответить с цитированием
Старый 11.05.2017, 08:01  #9
mittorn
mittorn
Старший лейтенант
Регистрация: 22.04.2010
Сообщения: 823


По умолчанию

2 Qwertyus:
Так ты используй реальный тачконтрол. Я look_filter сделал, думаю, что проблема дёрганого тача ушла. Это аналог m_filter, но для всего ввода.

mittorn, подумав, добавил 11.05.2017 в 08:06
Если изменить расширение сохранения, то исчезнут уже имеющиеся сохранения. И вообще это надо тогда изменить и в оригинальном ксаше. Стоит ли оно того?
Чтоб не перезаписывать конфиги и сохранения форком можно использовать rodir

Последний раз редактировалось mittorn, 11.05.2017 в 08:08.
mittorn вне форума Ответить с цитированием
Старый 11.05.2017, 13:01  #10
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,101


По умолчанию

[ Цитата ] В меню Ксаша линковка есть только на несколько строчек
Ну мне лениво было их все прописывать
[ Цитата ] И было бы неплохо добавить пункт "Продолжить игру"
нет такой картинки к сожалению, а то бы давно уже.
[ Цитата ] Это нужно, чтобы сохранения GoldSource не перезаписывались сохранениями Ксаша и наоборот
Ну включай соображалку, если Ксаш в состоянии различать голдсорсовские сейвы даже при наличии одинакового расширения, значит точно так же можно сделать запрет на их отображение\перезапись. Не буду я менять расширение.
Дядя Миша вне форума Ответить с цитированием
Старый 11.05.2017, 14:12  #11
a1batross
a1batross
Старшина
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 19
Сообщения: 408


По умолчанию

2 Дядя Миша:
Есть картинка Resume game, но она немного другого смысла. :(

Вот кстати баг с перезаписыванием можно частично исправить в меню. Да и между прочим меню и так спрашивает подтверждения о перезаписи.
a1batross вне форума Ответить с цитированием
Старый 11.05.2017, 14:52  #12
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,101


По умолчанию

Самое смешное, что у Вальвы даже команда "reload" есть, вот как раз для продолжения игры с последнего сейва. А кнопку почему-то не сделали.
Дядя Миша вне форума Ответить с цитированием
Старый 11.05.2017, 15:41  #13
GNU/Hurt
GNU/Hurt
Забаненный
Регистрация: 05.03.2014
Сообщения: 749


По умолчанию

2 a1batross:
А у вас сейчас умеет рисовать интерфейс при наличии отсутствия bints_main.bmp и всего прочего?
GNU/Hurt вне форума Ответить с цитированием
Старый 11.05.2017, 17:08  #14
a1batross
a1batross
Старшина
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 19
Сообщения: 408


По умолчанию

2 GNU/Hurt:
не-а. Единственное то, что я потихоньку пишу генератор этих кнопок на основе ImageMagick, ибо весь фотошоп тянуть ради одного скрипта -- жирновато(хоть это у меня всё и есть, конечно).

Можно и в рантайме это делать, но это когда-нибудь совсем потом.
a1batross вне форума Ответить с цитированием
Старый 11.05.2017, 19:08  #15
FiEctro
FiEctro
Регистрация: 28.07.2006
Адрес: Эквестрия
Возраст: 26
Сообщения: 16,377


По умолчанию

Может стоит посмотреть в сторону меню стимовской версии? Там нет таких заморочек с графикой меню.
FiEctro вне форума Ответить с цитированием
Старый 11.05.2017, 19:12  #16
Cybermax
Cybermax
Генерал
Регистрация: 11.03.2008
Сообщения: 2,334
Замечания: 11


По умолчанию

[ Цитата ] Сообщение от FiEctro: Может стоит посмотреть в сторону меню стимовской версии? Там нет таких заморочек с графикой меню.

2 FiEctro: несколько раз об этом намекали. Нравится won меню и все тут.
Cybermax вне форума Ответить с цитированием
Старый 11.05.2017, 19:54  #17
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,101


По умолчанию

Не надо намекать - берите и делайте сами. Есть три варианта
1. ты чего-то хочешь, берёшь и сам делаешь
2. ты чего-то хочешь, засылаешь денег и тебе делают
3. ты чего-то хочешь. но денег не засылаешь, и ноешь годами
Вот в России особенно распространена третья модель поведения. Поэтому мы все так и живём.
Дядя Миша вне форума Ответить с цитированием
Старый 11.05.2017, 20:40  #18
FiEctro
FiEctro
Регистрация: 28.07.2006
Адрес: Эквестрия
Возраст: 26
Сообщения: 16,377


По умолчанию

2 Дядя Миша:
Распространенная в России модель поведения это путать реквесты с донатами :bigsmile:
FiEctro вне форума Ответить с цитированием
Старый 11.05.2017, 20:56  #19
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,101


По умолчанию

реквесты без донатов это нытье
Дядя Миша вне форума Ответить с цитированием
Старый 11.05.2017, 21:42  #20
mittorn
mittorn
Старший лейтенант
Регистрация: 22.04.2010
Сообщения: 823


По умолчанию

2 Дядя Миша: а реквесты с донатами - уже заказы

mittorn, подумав, добавил 11.05.2017 в 21:47
2 FiEctro: можно сделать переключаемое меню. Но для этого надо написать это стимовое меню, это намного сложнее чем допилить картиночки для WON.
Для такого меню нужно:
1. Рендер шрифтов
2. Иерархическая система на подобии панелей vgui
3. Система схем как в vgui
4. Куча контроллов
5. Относительные координаты
6. Всё должно строиться динамически как в vgui
Можно взять для этих целей и vgui конечно, благо есть почти работоспособный декомпил, но его тоже надо допиливать. Сейчас там не работает даже скролл. А оригинал от valve нормально работает только на шинде.

mittorn, подумав, добавил 11.05.2017 в 21:49
А, ещё забыл. Нужен более продвинутый интерфейс взаимодействия с движком чтобы рисовать, например, консольку

Последний раз редактировалось mittorn, 11.05.2017 в 21:49.
mittorn вне форума Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 18:31.


Designed by FT-502, TRUP@C. Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2017 by CS-Mapping.com.ua Community