From bfbfe59f9be12a1c6fe88948ce8f32857e5cd1d0 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Fri, 8 Aug 2025 21:36:53 +0300 Subject: [PATCH] add gui.root & add 'app' library to project scripts --- doc/en/scripting/builtins/libgui.md | 6 ++++++ doc/ru/scripting/builtins/libgui.md | 6 ++++++ res/project_script.lua | 2 +- res/scripts/stdlib.lua | 1 + src/logic/scripting/scripting.cpp | 6 ++++++ 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/doc/en/scripting/builtins/libgui.md b/doc/en/scripting/builtins/libgui.md index cf6839db..cbcca4ce 100644 --- a/doc/en/scripting/builtins/libgui.md +++ b/doc/en/scripting/builtins/libgui.md @@ -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 diff --git a/doc/ru/scripting/builtins/libgui.md b/doc/ru/scripting/builtins/libgui.md index aea2f44a..a9bffe48 100644 --- a/doc/ru/scripting/builtins/libgui.md +++ b/doc/ru/scripting/builtins/libgui.md @@ -100,3 +100,9 @@ gui.load_document( ``` Загружает UI документ с его скриптом, возвращает имя документа, если успешно загружен. + +```lua +gui.root: Document +``` + +Корневой UI документ diff --git a/res/project_script.lua b/res/project_script.lua index 0da3b54d..9158f361 100644 --- a/res/project_script.lua +++ b/res/project_script.lua @@ -17,7 +17,7 @@ local function configure_menu() end return w, h end - _GUI_ROOT.root:add( + gui.root.root:add( "", controller) menubg = _GUI_ROOT.menubg diff --git a/res/scripts/stdlib.lua b/res/scripts/stdlib.lua index c5d48faf..68b9e4f6 100644 --- a/res/scripts/stdlib.lua +++ b/res/scripts/stdlib.lua @@ -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 = {} diff --git a/src/logic/scripting/scripting.cpp b/src/logic/scripting/scripting.cpp index 04db321e..00d18668 100644 --- a/src/logic/scripting/scripting.cpp +++ b/src/logic/scripting/scripting.cpp @@ -143,6 +143,12 @@ std::unique_ptr 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(L, std::move(env));