From 587098193330b42f9b6ea82967944002d3752025 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 6 Jun 2024 14:00:00 +0300 Subject: [PATCH 1/3] fix: player physics when chunks reload --- src/logic/LevelController.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/logic/LevelController.cpp b/src/logic/LevelController.cpp index 479eff16..4e965f72 100644 --- a/src/logic/LevelController.cpp +++ b/src/logic/LevelController.cpp @@ -22,12 +22,12 @@ LevelController::LevelController(EngineSettings& settings, std::unique_ptrupdate(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( From 7cbacba0c60d4ac2d83ea1e197bc2334c68a35b6 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 6 Jun 2024 14:15:50 +0300 Subject: [PATCH 2/3] fix: EngineController::reconfigPacks --- src/logic/EngineController.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/logic/EngineController.cpp b/src/logic/EngineController.cpp index 8a2be95e..b9f36bb2 100644 --- a/src/logic/EngineController.cpp +++ b/src/logic/EngineController.cpp @@ -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 names = engine->getBasePacks(); - for (auto& name : packsToAdd) { - names.push_back(name); + try { + auto manager = engine->createPacksManager(fs::path("")); + manager.scan(); + std::vector 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(); From 87082c2cb63330868fbb46632768f8bdf39e1be1 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 6 Jun 2024 15:19:45 +0300 Subject: [PATCH 3/3] =?UTF-8?q?update=20doc/ru/5.XML-=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BA=D0=B0-=D0=B8=D0=BD=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D1=84=D0=B5=D0=B9=D1=81=D0=B0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/ru/5.XML-разметка-интерфейса.md | 59 ++++++++++++++++++++++++----- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/doc/ru/5.XML-разметка-интерфейса.md b/doc/ru/5.XML-разметка-интерфейса.md index 17f4e701..93c23c93 100644 --- a/doc/ru/5.XML-разметка-интерфейса.md +++ b/doc/ru/5.XML-разметка-интерфейса.md @@ -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` - индекс первого слота