Иконка ресурса

GExt - The GUI extension 1.4.0-ALPHA

Нет прав для скачивания
Версия(и) Minecraft
1.7.10-1.15
Давно уже была мысль сделать что-то подобное. Во многих проектах приходится делать одно и то же - так почему бы не обобщить GUI-компоненты под единым API, подумал я... И сделал.

GExt - это движок для создания полноценных внутриигровых интерфейсов(уровня самостоятельных программ). Он предоставляет API и основные его реализации. Больше никакого GL-кода в интерфейсах. ООПшно и сердито.

GitHub Wiki(English)

Основные возможности:
  • Единое API графических компонентов
  • Модульная сборка всех компонентов как главная идеология библиотеки. Чёткое разделение ответственности за логические части функционирования интерфейса. За счёт этого сложные компоненты можно собирать из более мелких. Так, например, панель GPanel - это инструмент композиции, которому можно установить любой обработчик прокрутки - графический компонент, обрабатывающий ввод мыши и рисующий скроллбары, если нужно. Такой подход улучшает читаемость кода и позволяет сконцентрироваться на решении маленькой задачи в каждый конкретный момент времени
  • Удобное создание каждого компонента через фабрики. Код максимально короткий и читаемый
  • Полная абстракция рисования. Гарантируется, что криво написанный рендер одного компонента не может сломать работу другого. Кроме того, ваше рисование не зависит от координат компонента в контейнере! Можно считать, что функция draw получает систему координат, связанную с вашим компонентом. Не важно, что вы натворите в своей функции рисования - матрица преобразований на выходе из неё будет сброшена
  • Интегрированная обрезка кадра, используя glScissor. Все компоненты по умолчанию обрезаются до своей ширины и высоты, заявленной в реализации API
  • Инструменты компоновки(композиции). Они же контейнеры. Это компоненты с одной целью - содержать в себе и определённым образом располагать другие компоненты
  • Контекстные меню. Определяйте действия для компонентов, доступные по ПКМ
  • Иерархический 'проброс' в эти компоненты основных событий ввода - мышка нажата, отпущена, передвинута и т.п., нажата клавиша на клавиатуре. Тем же образом передаются события наведения(hover), изменения размеров окна(resize), проверки обновлений и обновления(update) и прочее. Ну и, конечно, отрисовки компонента
  • Слушатели(Listener). Можно реализовать в своем компоненте интерфейс IListener и управлять своим состоянием в зависимости от состояния цели. Да, прямо у себя, не залезая в основной контейнер
  • Продвинутая работа с элементами интерфейса. Класс StyleMap представляет из себя то, что может нарисовать кнопку, скроллбар, фон, иконку любого размера! Кроме того, это позволяет делать несколько стилей графических интерфейсов, меняя всего одну текстуру в ресурсах
  • Платформонезависимый код. Можно легко и быстро реализовать API адаптеров под абсолютно любую платформу, при этом основной код библиотеки трогать не придётся
В составе библиотеки идёт множество основных(по моему мнению) составных частей GUI. Со временем будет дополняться. Кроме того, вы всегда можете форкнуть и дописать компонент, которого вам так не хватает :)

К сожалению, пока что нет собранных версий библиотеки - придётся клонить репозиторий и собирать из исходников. После обновления 1.4 планируется публикация на Maven Central.

Туториал по использованию[IN PROGRESS]
Автор
Quarter
Скачивания
85
Просмотры
2,197
Первый выпуск
Обновление
Оценка
5.00 звёзд 4 оценок

Последние обновления

  1. 1.4.0-ALPHA

    Альфа-версия первого публичного релиза. Предлагается потестить и зарепортить баги. Что было...
  2. 1.3-ADAPTERS

    The great adapters update Долгожданное обновление, добавляющее поддержку новых и старых версий...
  3. 1.2.0-FINAL

    GuiLib доведён до рабочего состояния. Теперь обрезка всех компонентов работает правильно, более...

Последние рецензии

Очень важная работа
Хотелось бы увидеть пару примеров с использованием либы, а так 5
Quarter
Quarter
Добавлено :)
Молодец. Давно было пора дать интерфейсам ООП стиль
Начинание очень хорошее и актуальное) 5 звезд за это
Концепция модульности позволит делать сложные интерфейсы
А адаптеры позволят коду юзера работать на любых версиях майна)
Название надо бы выбрать более уникальное, чтобы гуглилось и вообще узнавалось
Сверху