Merge branch 'main' into blocks_meta
This commit is contained in:
commit
b06bae6546
@ -26,14 +26,31 @@
|
||||
|
||||
# Общие атрибуты элементов
|
||||
|
||||
- `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").
|
||||
- `position-func` - поставщик позиции элемента (два числа), вызываемый при изменении размера контейнера, в котором находится элемент, либо при добавлении элемента в контейнер. Может быть вызван до вызова on_hud_open.
|
||||
- `size-func` - поставщик размера элемента (два числа), вызываемый при изменении размера контейнера, в котором находится элемент, либо при добавлении элемента в контейнер. Может быть вызван до вызова on_hud_open.
|
||||
- `onclick` - lua функция вызываемая при нажатии на элемент.
|
||||
- `ondoubleclick` - 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 наведение на элемент и все под-элементы будет игнорироваться.
|
||||
|
||||
# Атрибуты шаблонов
|
||||
|
||||
- `if` при значениях ('', 'false', 'nil') элемент будет проигнорирован, включая под-элементы.
|
||||
- `ifnot` то же, что и `if`, но с обратным условием.
|
||||
|
||||
# Общие атрибуты контейнеров
|
||||
|
||||
@ -46,47 +63,69 @@
|
||||
|
||||
В число панелей также входят кнопки.
|
||||
- `max-length` - максимальная длина, на которую растягивается панель до начала скроллинга (если scrollable = true). Тип: число
|
||||
- `orientation` - ориентация панели: horizontal/vertical.
|
||||
|
||||
# Основные элементы
|
||||
|
||||
## Кнопка `button`
|
||||
## Кнопка - *button*
|
||||
|
||||
Внутренний текст - текст кнопки.
|
||||
|
||||
- `text-align` - выравнивание текста ("left", "center" или "right"). Тип: строка.
|
||||
- `onclick` - lua функция вызываемая при нажатии на кнопку.
|
||||
|
||||
## Изображение `image`
|
||||
## Флажок - *checkbox*
|
||||
|
||||
- `checked` - определяет состояние отметки.
|
||||
- `supplier` - поставщик состояния отметки (вызывается каждый кадр)
|
||||
- `consumer` - lua функция-приемник состояния отметки. Вызывается только при завершении ввода
|
||||
## Метка - *label*
|
||||
|
||||
- `valign` - вертикальное выравнивание текста: top/center/bottom
|
||||
- `supplier` - поставщик текста (вызывается каждый кадр)
|
||||
- `autoresize` - автоматическое изменение размера элемента (по-умолчанию - false). Не влияет на размер шрифта.
|
||||
- `multiline` - разрешает отображение многострочного текста.
|
||||
- `text-wrap` - разрешает автоматический перенос текста (работает только при multiline: "true")
|
||||
|
||||
## Изображение - *image*
|
||||
|
||||
- `src` - имя изображения в папке textures без указания расширения. Тип: строка. Например `gui/error`
|
||||
|
||||
# Текстовое поле `textbox`
|
||||
## Текстовое поле - *textbox*
|
||||
|
||||
Внутренний текст - изначально введенный текст
|
||||
|
||||
- `placeholder` - текст подстановки (используется текстовое поле пусто)
|
||||
- `supplier` - поставщик текста (вызывается каждый кадр)
|
||||
- `consumer` - lua функция-приемник введенного текста. Вызывается только при завершении ввода
|
||||
|
||||
## Ползунок `trackbar`
|
||||
- `autoresize` - автоматическое изменение размера элемента (по-умолчанию - false). Не влияет на размер шрифта.
|
||||
- `multiline` - разрешает отображение многострочного текста.
|
||||
- `text-wrap` - разрешает автоматический перенос текста (работает только при multiline: "true")
|
||||
- `editable`- определяет возможность редактирования текста.
|
||||
- `error-color` - цвет при вводе некорректных данных (текст не проходит проверку валидатора). Тип: RGBA цвет.
|
||||
- `validator` - lua функция, проверяющая текст на корректность. Принимает на вход строку, возвращает true если текст корректен.
|
||||
- `onup` - lua функция вызываемая при нажатии стрелки вверх.
|
||||
- `ondown` - lua функция вызываемая при нажатии стрелки вниз.
|
||||
## Ползунок - *trackbar*
|
||||
|
||||
- `min` - минимальное значение. Тип: число. По-умолчанию: 0
|
||||
- `max` - максимальное значение. Тип: число. По-умолчанию: 1
|
||||
- `value` - изначальное значение. Тип: число. По-умолчанию: 0
|
||||
- `step` - размер деления ползунка. Тип: число. По-умолчанию: 1
|
||||
- `track-width` - ширина указателя (в делениях). Тип: число. По-умолчанию: 1
|
||||
- `track-width` - ширина указателя (в пикселях). Тип: число. По-умолчанию: 12
|
||||
- `track-color` - цвет указателя при наведении курсора. Тип: RGBA цвет.
|
||||
- `consumer` - lua функция-приемник установленного значения
|
||||
- `supplier` - lua функция-поставщик значения
|
||||
|
||||
# Элементы инвентаря
|
||||
|
||||
## Инвентарь `inventory`
|
||||
## Инвентарь - *inventory*
|
||||
|
||||
Элемент является контейнером. На данный момент не имеет специфических атрибутов.
|
||||
|
||||
> [!WARNING]
|
||||
> Расположение инвентарей управляется движком и не может быть изменено свойствами pos, margin и т.д.
|
||||
|
||||
## Одиночный слот `slot`
|
||||
## Одиночный слот - *slot*
|
||||
|
||||
Элемент должен находиться внутри `inventory` элемента, без посредников.
|
||||
- `index` - индекс слота инвентаря. (Нумерация с 0)
|
||||
@ -95,7 +134,7 @@
|
||||
- `updatefunc` - lua событие вызываемое при изменении содержимого слота
|
||||
- `onrightclick` - lua событие вызываемое при использовании ПКМ. Передается id инвентаря и индекс слота
|
||||
|
||||
## Решетка слотов `slots-grid`
|
||||
## Сетка слотов - *slots-grid*
|
||||
|
||||
Элемент должен находиться внутри `inventory` элемента, без посредников.
|
||||
- `start-index` - индекс первого слота
|
||||
|
||||
@ -223,7 +223,8 @@ void EngineController::reconfigPacks(
|
||||
|
||||
std::stringstream ss;
|
||||
for (const auto& id : packsToRemove) {
|
||||
if (content->getPackRuntime(id)->getStats().hasSavingContent()) {
|
||||
auto runtime = content->getPackRuntime(id);
|
||||
if (runtime && runtime->getStats().hasSavingContent()) {
|
||||
if (hasIndices) {
|
||||
ss << ", ";
|
||||
}
|
||||
@ -234,13 +235,22 @@ void EngineController::reconfigPacks(
|
||||
|
||||
runnable removeFunc = [=]() {
|
||||
if (controller == nullptr) {
|
||||
auto manager = engine->createPacksManager(fs::path(""));
|
||||
manager.scan();
|
||||
std::vector<std::string> names = engine->getBasePacks();
|
||||
for (auto& name : packsToAdd) {
|
||||
names.push_back(name);
|
||||
try {
|
||||
auto manager = engine->createPacksManager(fs::path(""));
|
||||
manager.scan();
|
||||
std::vector<std::string> names = PacksManager::getNames(engine->getContentPacks());
|
||||
for (const auto& id : packsToAdd) {
|
||||
names.push_back(id);
|
||||
}
|
||||
for (const auto& id : packsToRemove) {
|
||||
manager.exclude(id);
|
||||
names.erase(std::find(names.begin(), names.end(), id));
|
||||
}
|
||||
names = manager.assembly(names);
|
||||
engine->getContentPacks() = manager.getAll(names);
|
||||
} catch (const contentpack_error& err) {
|
||||
throw std::runtime_error(std::string(err.what())+" ["+err.getPackId()+"]");
|
||||
}
|
||||
engine->getContentPacks() = manager.getAll(names);
|
||||
} else {
|
||||
auto world = controller->getLevel()->getWorld();
|
||||
auto wfile = world->wfile.get();
|
||||
|
||||
@ -22,12 +22,12 @@ LevelController::LevelController(EngineSettings& settings, std::unique_ptr<Level
|
||||
}
|
||||
|
||||
void LevelController::update(float delta, bool input, bool pause) {
|
||||
player->update(delta, input, pause);
|
||||
glm::vec3 position = player->getPlayer()->hitbox->position;
|
||||
level->loadMatrix(position.x, position.z,
|
||||
settings.chunks.loadDistance.get() +
|
||||
settings.chunks.padding.get() * 2);
|
||||
chunks->update(settings.chunks.loadSpeed.get());
|
||||
player->update(delta, input, pause);
|
||||
|
||||
// erease null pointers
|
||||
level->objects.erase(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user