Sidebar

MainUI C++ Beta

  • Наступило лето и у нас стартовал конкурс с призовым фондом в $120!
    "De-Make It!" Summer Contest.

a1batross

Umu~!
06.01.2015
672
27
28
Награды
0
21
Москва
xash.su
MainUI C++ Beta

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

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

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

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

Оффтоп

Оффтоп

Оффтоп

Обновление от 8.11.2018:

Прочитать изменения и загрузить DLL-ку можно во вложении по ссылке на ответ в этой теме:

Всегда свежая сборка тут: https://github.com/FWGS/xash3d-deploy/tree/menudll_orig-latest

Исходный код: https://github.com/FWGS/mainui_cpp
 
Последнее редактирование:
  • Like
Reactions: xDShot

FiEctro

Супер Модератор
Команда форума
Супер Модератор
28.07.2006
17 140
343
83
Награды
2
27
Эквестрия
  • Золотая медаль 213
  • Neh
Афтар молодец за проделанную работу.
 

a1batross

Umu~!
06.01.2015
672
27
28
Награды
0
21
Москва
xash.su
2 Дядя Миша:
Возможно, это ещё из-за увеличенного количества функций. Если раньше все кнопки управлялись одним коллбэком на все возможные ивенты, то здесь это не так.
 

a1batross

Umu~!
06.01.2015
672
27
28
Награды
0
21
Москва
xash.su
Так как MainUI C++ функционально дорос до своего предка, то теперь в него добавляются новые фичи.

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

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

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

UPD: А ещё переносить из cs16client парсер VGUI2-шных файлов переводов. Надо только от STL отвязать, ибо тянуть весь STL ради одного std::unordered_map(которого ещё и нет в сосущих компиляторах, хотя можно заменить на std::map) как-то дороговато.
 
Последнее редактирование:
Команда форума
VIP
28.03.2010
15 328
252
83
Награды
4
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Пора уже отказываться от уродливого моноширонного встроенного шрифта. >_<
Это шрифт из Quake3 :)
То что он встроенный делу не вредит, наоборот - он показывается, если все другие шрифты отсутствуют. Надо его заменить на variable-width.
 

a1batross

Umu~!
06.01.2015
672
27
28
Награды
0
21
Москва
xash.su
2 Дядя Миша:
у меня появилась мысль, чтобы поверх записать размеры букв встроенного шрифта. Нужен будет моноширинный -- эти размеры будут просто игнорироваться.
 

Qwertyus

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

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

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

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

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

mittorn

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

[ADDED=mittorn]1494475574[/ADDED]
Если изменить расширение сохранения, то исчезнут уже имеющиеся сохранения. И вообще это надо тогда изменить и в оригинальном ксаше. Стоит ли оно того?
Чтоб не перезаписывать конфиги и сохранения форком можно использовать rodir
 
Последнее редактирование:
Команда форума
VIP
28.03.2010
15 328
252
83
Награды
4
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
В меню Ксаша линковка есть только на несколько строчек
Ну мне лениво было их все прописывать
И было бы неплохо добавить пункт "Продолжить игру"
нет такой картинки к сожалению, а то бы давно уже.
Это нужно, чтобы сохранения GoldSource не перезаписывались сохранениями Ксаша и наоборот
Ну включай соображалку, если Ксаш в состоянии различать голдсорсовские сейвы даже при наличии одинакового расширения, значит точно так же можно сделать запрет на их отображение\перезапись. Не буду я менять расширение.
 
  • Like
Reactions: xDShot

a1batross

Umu~!
06.01.2015
672
27
28
Награды
0
21
Москва
xash.su
2 Дядя Миша:
Есть картинка Resume game, но она немного другого смысла. :(

Вот кстати баг с перезаписыванием можно частично исправить в меню. Да и между прочим меню и так спрашивает подтверждения о перезаписи.
 
Команда форума
VIP
28.03.2010
15 328
252
83
Награды
4
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Самое смешное, что у Вальвы даже команда "reload" есть, вот как раз для продолжения игры с последнего сейва. А кнопку почему-то не сделали.
 

GNU/Hurt

Ma&#239;t&#233;
05.03.2014
1 092
23
38
Награды
0
2 a1batross:
А у вас сейчас умеет рисовать интерфейс при наличии отсутствия bints_main.bmp и всего прочего?
 

a1batross

Umu~!
06.01.2015
672
27
28
Награды
0
21
Москва
xash.su
2 GNU/Hurt:
не-а. Единственное то, что я потихоньку пишу генератор этих кнопок на основе ImageMagick, ибо весь фотошоп тянуть ради одного скрипта -- жирновато(хоть это у меня всё и есть, конечно).

Можно и в рантайме это делать, но это когда-нибудь совсем потом.
 

FiEctro

Супер Модератор
Команда форума
Супер Модератор
28.07.2006
17 140
343
83
Награды
2
27
Эквестрия
  • Золотая медаль 213
  • Neh
Может стоит посмотреть в сторону меню стимовской версии? Там нет таких заморочек с графикой меню.
 

Cybermax

Супер Модератор
Команда форума
Супер Модератор
11.03.2008
2 590
28
48
Награды
0
FiEctro сказал(а):
Может стоит посмотреть в сторону меню стимовской версии? Там нет таких заморочек с графикой меню.
2 FiEctro: несколько раз об этом намекали. Нравится won меню и все тут.
 
Команда форума
VIP
28.03.2010
15 328
252
83
Награды
4
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Не надо намекать - берите и делайте сами. Есть три варианта
1. ты чего-то хочешь, берёшь и сам делаешь
2. ты чего-то хочешь, засылаешь денег и тебе делают
3. ты чего-то хочешь. но денег не засылаешь, и ноешь годами
Вот в России особенно распространена третья модель поведения. Поэтому мы все так и живём.
 

FiEctro

Супер Модератор
Команда форума
Супер Модератор
28.07.2006
17 140
343
83
Награды
2
27
Эквестрия
  • Золотая медаль 213
  • Neh
2 Дядя Миша:
Распространенная в России модель поведения это путать реквесты с донатами :bigsmile:
 

mittorn

Active member
22.04.2010
1 225
19
38
Награды
0
2 Дядя Миша: а реквесты с донатами - уже заказы

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

[ADDED=mittorn]1494524968[/ADDED]
А, ещё забыл. Нужен более продвинутый интерфейс взаимодействия с движком чтобы рисовать, например, консольку
 
Последнее редактирование:

Донат - Операционные расходы

Итого
1 121.00 $
Цель
1 300.00 $
Донат завершается:

Доноры Красавчики

Новые сообщения

Пользователи онлайн

Нет пользователей онлайн.