VoxelEngine/doc/ru/xml-ui-layouts.md
2025-11-26 00:00:48 +03:00

16 KiB
Raw Permalink Blame History

XML разметка интерфейса

См. также ui элементы в скриптинге.

Специфические типы

2D вектор - пара чисел, разделенная запятой. Примеры:

  • "500,200"
  • "0.4,53.01"
  • "0,0"

3D вектор - три числа, разделенная запятой. Примеры:

  • "60,30,53"
  • "0.4,0.1,0.753"

4D вектор - четыре числа, разделенная запятой. Примеры:

  • "10,5,10,3"
  • "0.1,0.5,0.0,0.0"

RGBA цвет - на данный момент доступна только HEX запись. Примеры:

  • "#FF8000" - оранжевый непрозрачный
  • "#FFFFFF80" - белый полупрозрачный
  • "#000000FF" - черный непрозрачный

Общие атрибуты элементов

  • enabled - при значении false блокирует элемент, в отличие от interactive, обозначая это состояние визуально.
  • id - идентификатор элемента. Тип: строка.
  • pos - позиция элемента. Тип: 2D вектор.
  • size - размер элемента. Тип: 2D вектор.
  • context - указывает контекст перевода для @-строк.
  • color - цвет элемента. Тип: RGBA цвет.
  • hover-color - цвет элемента при наведении курсора. Тип: RGBA цвет.
  • pressed-color - цвет элемента при нажатии на элемент. Тип: RGBA цвет.
  • margin - внешний отступ элемента. Тип: 4D вектор. Порядок: "left,top,right,bottom"
  • visible - видимость элемента. Тип: логический ("true"/"false").
  • min-size - минимальный размер элемента. Тип: 2D вектор.
  • position-func - поставщик позиции элемента (два числа), вызываемый при изменении размера контейнера, в котором находится элемент, либо при добавлении элемента в контейнер. Может быть вызван до вызова on_hud_open.
  • size-func - поставщик размера элемента (два числа), вызываемый при изменении размера контейнера, в котором находится элемент, либо при добавлении элемента в контейнер. Может быть вызван до вызова on_hud_open.
  • onclick - lua функция вызываемая при нажатии на элемент.
  • ondoubleclick - lua функция вызываемая при двойном нажатии на элемент.
  • onfocus - lua функция вызываемая при фокусировке на элемент.
  • ondefocus - lua функция вызываемая при потере фокуса элеметом.
  • onmouseover - lua функция вызываемая при входе курсора в элемент.
  • onmouseover - lua функция вызываемая при выходе курсора из элемента.
  • tooltip - текст всплывающей подсказки
  • tooltip-delay - задержка появления всплывающей подсказки
  • gravity - автоматическое позиционирование элемента в контейнере. (Не работает в автоматических контейнерах, как panel). Значения: top-left, top-center, top-right, center-left, center-center, center-right, bottom-left, bottom-center, bottom-right.
  • z-index - определяет порядок элементов, при большем значении будет перекрывать элементы с меньшим.
  • interactive - при значении false наведение на элемент и все под-элементы будет игнорироваться.
  • cursor - курсор, отображаемый при наведении на элемент (arrow/text/pointer/crosshair/ew-resize/ns-resize/...).

Атрибуты шаблонов

  • if при значениях ('', 'false', 'nil') элемент будет проигнорирован, включая под-элементы.
  • ifnot то же, что и if, но с обратным условием.

Общие атрибуты контейнеров

В число контейнеров также входят панели и кнопки.

  • scrollable - возможность скроллинга. Тип: логический.
  • scroll-step - шаг скроллинга. Тип: целочисленный.

Общие атрибуты панелей

В число панелей также входят кнопки.

  • padding - внутренний отступ элемента. Тип: 4D вектор. Порядок: "left,top,right,bottom"
  • max-length - максимальная длина, на которую растягивается панель до начала скроллинга (если scrollable = true). Тип: число.
  • min-length - минимальная длина панели. Тип: число.
  • orientation - ориентация панели: horizontal/vertical.
  • interval - пространство между элементами. Тип: число.

Основные элементы

Контейнер - container

Примитивный контейнер. Используйте статические позиции / gravity / скрипт для позиционирования элементов.

Панель - panel

Простая панель. Располагает элементы в порядке, определяемом атрибутом orientation, подгоняя ширину (вертикальная) или высоту (горизонтальная) к своим.

Разделитель - splitbox

Панель управляющая размерами и позицией двух элементов. Позволяет пользователю двигать разделитель, меняя размер элементов.

  • split-pos - начальная позиция разделителя от 0.0 до 1.0.

Кнопка - button

Внутренний текст - текст кнопки.

  • text-align - выравнивание текста ("left", "center" или "right"). Тип: строка.

Флажок - checkbox

  • checked - определяет состояние отметки.
  • supplier - поставщик состояния отметки (вызывается каждый кадр)
  • consumer - lua функция-приемник состояния отметки.

Метка - label

  • valign - вертикальное выравнивание текста: top/center/bottom
  • supplier - поставщик текста (вызывается каждый кадр)
  • autoresize - автоматическое изменение размера элемента (по-умолчанию - false). Не влияет на размер шрифта.
  • multiline - разрешает отображение многострочного текста.
  • text-wrap - разрешает автоматический перенос текста (работает только при multiline: "true")
  • markup - язык разметки текста ("md" - Markdown).

Изображение - image

  • src - имя изображения в папке textures без указания расширения. Тип: строка. Например gui/error
  • region - под-регион изображения x1, y1, x2, y2 от 0.0, 0.0 (левый верхний угол), 1.0, 1.0 (правый нижний угол)

Холст - canvas

  • Нет дополнительных свойств

Текстовое поле - textbox

Внутренний текст - изначально введенный текст

  • placeholder - текст подстановки (используется если текстовое поле пусто)
  • hint - текст, отображаемый, если текстовое поле пусто (не отправляется в consumer, sub-consumer и validator).
  • supplier - поставщик текста (вызывается каждый кадр)
  • consumer - lua функция-приемник введенного текста. Вызывается только при завершении ввода
  • sub-consumer - lua функция-приемник вводимого текста. Вызывается во время ввода или удаления текста.
  • oncontrolkey - lua функция вызываемая для сочетаний вида (Ctrl + ?). На вход подаётся числовой код второй клавиши. Код клавиши для сравнения можно получить через input.keycode("имя_клавиши")
  • autoresize - автоматическое изменение размера элемента (по-умолчанию - false). Не влияет на размер шрифта.
  • multiline - разрешает отображение многострочного текста.
  • text-wrap - разрешает автоматический перенос текста (работает только при multiline: "true")
  • editable- определяет возможность редактирования текста.
  • line-numbers - включает отображение номеров строк.
  • keep-line-selection - продолжать отображать выбранную строку при потере фокуса.
  • error-color - цвет при вводе некорректных данных (текст не проходит проверку валидатора). Тип: RGBA цвет.
  • text-color - цвет текста. Тип: RGBA цвет.
  • validator - lua функция, проверяющая текст на корректность. Принимает на вход строку, возвращает true если текст корректен.
  • onup - lua функция вызываемая при нажатии стрелки вверх.
  • ondown - lua функция вызываемая при нажатии стрелки вниз.
  • syntax - подстветка синтаксиса ("lua" - Lua).
  • markup - язык разметки текста ("md" - Markdown).

Ползунок - trackbar

  • min - минимальное значение. Тип: число. По-умолчанию: 0
  • max - максимальное значение. Тип: число. По-умолчанию: 1
  • value - изначальное значение. Тип: число. По-умолчанию: 0
  • step - размер деления ползунка. Тип: число. По-умолчанию: 1
  • track-width - ширина указателя (в пикселях). Тип: число. По-умолчанию: 12
  • track-color - цвет указателя при наведении курсора. Тип: RGBA цвет.
  • consumer - lua функция-приемник установленного значения
  • sub-consumer - lua функция-приемник промежуточных значений (используйте для обновления текста при change-on-release="true")
  • supplier - lua функция-поставщик значения
  • change-on-release - Вызов функции-приемника (consumer) происходит только тогда, когда пользователь отпускает указатель. Тип: логический. По-умолчанию: false

Рамка встраивания - iframe

Контейнер для встраивания внешнего документа. Масштабирует содержимое под свой размер.

  • src - id документа в формате пак:имя (пак/layouts/имя.xml)

Меню выбора - select

Раскрывающийся список. Опции описываются под-элементами option, атрибут value которых содержит значение, внутренний текст - текст отображаемый в UI.

Пример описания списка:

<select selected="entity" width="200" 
        onselect="function(opt) print(opt) end">
    <option value="block">Блок</option>
    <option value="item">Предмет</option>
    <option value="entity">Сущность</option>
</select>
  • width - минимальная ширина содержимого. По-умолчанию: 100.
  • selected - изначально выбранное значение. По-умолчанию: "".
  • onselect - функция, в которую передаётся выбранное пользователем значение

Элементы инвентаря

Инвентарь - inventory

Элемент является контейнером. На данный момент не имеет специфических атрибутов.

Warning

Расположение инвентарей управляется движком и не может быть изменено свойствами pos, margin и т.д.

Одиночный слот - slot

Элемент должен находиться внутри inventory элемента, без посредников.

  • index - индекс слота инвентаря. (Нумерация с 0)
  • item-source - включает поведение подобное панели контента. Тип: логический
  • sharefunc - lua событие вызываемое при использовании ЛКМ + Shift. Передается id инвентаря и индекс слота
  • updatefunc - lua событие вызываемое при изменении содержимого слота
  • onrightclick - lua событие вызываемое при использовании ПКМ. Передается id инвентаря и индекс слота
  • taking - возможность взять предмет из слота.
  • placing - возможность положить предмет в слот.

Сетка слотов - slots-grid

Элемент должен находиться внутри inventory элемента, без посредников.

  • start-index - индекс первого слота
  • rows - число рядов (не указывается, если указано cols).
  • cols - число столбцов (не указывается, если указано rows).
  • count - общее число слотов (не указывается, если указаны rows и cols).
  • interval - интервал между слотами. Тип: число.
  • padding - отступ вокруг решетки слотов. Тип: число. (атрибут будет удален)
  • sharefunc - lua событие вызываемое при использовании ЛКМ + Shift. Передается id инвентаря и индекс слота
  • updatefunc - lua событие вызываемое при изменении содержимого слота
  • onrightclick - lua событие вызываемое при использовании ПКМ. Передается id инвентаря и индекс слота
  • taking - возможность взять предмет из слота.
  • placing - возможность положить предмет в слот.