mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
7.7 KiB
7.7 KiB
Библиотека app
Библиотека для высокоуровневого управления работой движка, доступная только в режиме сценария или теста.
Имя сценария/теста без пути и расширения доступен как app.script. Путь к файлу можно получить как:
local filename = "script:"..app.script..".lua"
Так как управляющий сценарий может не принадлежать ни одному из паков, он не относиться к своему паку и имеет собственное пространство имён, в котором доступны все глобальные функции и таблицы, а также библиотека app.
Содержание:
Методы для работы с:
Основные процессы движка
-- Выполняет один такт основного цикла движка.
app.tick()
-- Ожидает указанное время в секундах, выполняя основной цикл движка.
app.sleep(time: number)
-- Завершает выполнение движка, выводя стек вызовов для ослеживания места вызова функции.
app.quit()
-- Ожидает истинности утверждения (условия), проверяемого функцией,
-- выполняя основной цикл движка.
app.sleep_until(
-- функция, проверяющее условия завершения ожидания
predicate: function() -> boolean,
-- максимальное количество тактов цикла движка, после истечения которых
-- будет брошено исключение "max ticks exceed"
[опционально] max_ticks: int = 1e9,
-- максимальное длительность ожидания в секундах.
-- (работает с системным временем, включая test-режим)
[опционально] timeout: number = 1e9
)
Контент-паки
-- Проверяет, загружен ли контент.
app.is_content_loaded() -> boolean
-- Возвращает текущую конфигурацию контента (список id паков в порядке загрузки)
app.get_content() -> table<string>
-- Загружает контент на основе текущей конфигурации.
-- Не может быть использован, если контент уже загружен (см. app.reset_content).
app.load_content()
-- Выгружает весь контент, сбрасывая до единственного пака ядра (`core`).
app.reset_content(
-- Паки, для которых не будут сброшены модули, ивенты и окружение
[опционально] non_reset_packs: table
)
-- Обновляет конфигурацию паков, проверяя её корректность (зависимости и доступность паков).
-- Автоматически добавляет и упорядочивает паки в соответствии с зависимостями.
-- Для удаления ВСЕХ паков из конфигурации можно использовать `pack.get_installed()`
app.reconfig_packs(
-- добавляемые паки
add_packs: table,
-- удаляемые паки
remove_packs: table
)
-- Обновляет конфигурацию паков, автоматически удаляя лишние, добавляя отсутствующие в прошлой конфигурации.
-- Использует app.reconfig_packs.
app.config_packs(
-- ожидаемый набор паков (без учёта зависимостей)
packs: table
)
Миры
-- Создаёт новый мир и открывает его.
app.new_world(
-- название мира, пустая строка приведёт к созданию безымянного мира
name: string,
-- зерно генерации
seed: string,
-- название генератора
generator: string
-- id локального игрока
[опционально] local_player: int = 0
)
-- Удаляет мир по названию.
app.delete_world(name: string)
-- Открывает мир по названию.
app.open_world(name: string)
-- Переоткрывает мир.
app.reopen_world()
-- Сохраняет мир.
app.save_world()
-- Закрывает мир.
app.close_world(
-- сохранить мир перед закрытием
[опционально] save_world: boolean = false
)
Свойства и настройки движка
-- Возвращает мажорную и минорную версии движка.
app.get_version() -> int, int
-- Возвращает значение настройки.
-- Бросает исключение, если настройки не существует.
app.get_setting(name: string) -> any
-- Устанавливает значение настройки.
-- Бросает исключение, если настройки не существует.
app.set_setting(name: string, value: any)
-- Возвращает таблицу с информацией о настройке.
-- Бросает исключение, если настройки не существует.
app.get_setting_info(name: string) -> table
-- Переводит окно на передний план и устанавливает фокус ввода.
app.focus()
Точки входа и пути
-- Создаёт файловую систему в памяти.
app.create_memory_device(
-- имя точки входа
name: string
)
-- Возвращает список источников контента (путей), в порядке убывания приоритета.
app.get_content_sources() -> table<string>
-- Устанавливает список источников контента (путей). Указывается в порядке убывания приоритета.
app.set_content_sources(sources: table<string>)
-- Сбрасывает список источников контента.
app.reset_content_sources()
Под-экземпляры
-- Создаёт headless-экземпляр движка с текущим проектом и указанным сценарием.
-- Возвращает id экземпляра. Число живых под-экземпляров, на данный момент, ограничено одним.
app.start_background_instance(
-- файл сценария
app_script: string,
-- файл лога
output_file: string | nil
) -> int
-- Проверяет, жив ли под-экземпляр движка.
app.is_instance_alive(handle: int) -> boolean
-- Останавливает под-экземпляр движка.
-- Возвращает true если экземпляр был жив в момент вызова.
app.terminate_instance(handle: int) -> boolean