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