add gui.root & add 'app' library to project scripts

This commit is contained in:
MihailRis 2025-08-08 21:36:53 +03:00
parent e6812371ec
commit bfbfe59f9b
5 changed files with 20 additions and 1 deletions

View File

@ -103,3 +103,9 @@ gui.load_document(
```
Loads a UI document with its script, returns the name of the document if successfully loaded.
```lua
gui.root: Document
```
Root UI document

View File

@ -100,3 +100,9 @@ gui.load_document(
```
Загружает UI документ с его скриптом, возвращает имя документа, если успешно загружен.
```lua
gui.root: Document
```
Корневой UI документ

View File

@ -17,7 +17,7 @@ local function configure_menu()
end
return w, h
end
_GUI_ROOT.root:add(
gui.root.root:add(
"<image id='menubg' src='gui/menubg' size-func='DATA.resize_menu_bg' "..
"z-index='-1' interactive='true'/>", controller)
menubg = _GUI_ROOT.menubg

View File

@ -189,6 +189,7 @@ end
_GUI_ROOT = Document.new("core:root")
_MENU = _GUI_ROOT.menu
menu = _MENU
gui.root = _GUI_ROOT
--- Console library extension ---
console.cheats = {}

View File

@ -143,6 +143,12 @@ std::unique_ptr<IProjectScript> scripting::load_project_script(
auto L = lua::get_main_state();
auto source = io::read_string(script);
auto env = create_environment(nullptr);
lua::pushenv(L, *env);
if (lua::getglobal(L, "__vc_app")) {
lua::setfield(L, "app");
}
lua::pop(L);
lua::loadbuffer(L, *env, source, script.name());
lua::call(L, 0);
return std::make_unique<LuaProjectScript>(L, std::move(env));