From 96fdefb9ed7e7300084e333f4bef466f02303815 Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Sun, 10 Apr 2022 18:58:25 -0300 Subject: [PATCH] lua now runs on sub editor, added Game.GetEnabledContentPackages back for compatibility and printerror --- .../BarotraumaClient/ClientSource/Screens/MainMenuScreen.cs | 2 ++ .../ClientSource/Screens/SubEditorScreen.cs | 5 +++++ Barotrauma/BarotraumaShared/Lua/LuaSetup.lua | 6 ++++-- .../BarotraumaShared/SharedSource/Lua/LuaClasses/LuaGame.cs | 5 +++++ Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs | 2 ++ 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/MainMenuScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/MainMenuScreen.cs index 9d0f776da..52c7bc84b 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/MainMenuScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/MainMenuScreen.cs @@ -523,6 +523,8 @@ namespace Barotrauma #region Selection public override void Select() { + GameMain.Lua.Stop(); + if (WorkshopItemsToUpdate.Any()) { while (WorkshopItemsToUpdate.TryDequeue(out ulong workshopId)) diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/SubEditorScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/SubEditorScreen.cs index 6e6826302..e1c224954 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/SubEditorScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/SubEditorScreen.cs @@ -1042,12 +1042,15 @@ namespace Barotrauma GameSession gameSession = new GameSession(backedUpSubInfo, "", GameModePreset.TestMode, CampaignSettings.Empty, null); gameSession.StartRound(null, false); + (gameSession.GameMode as TestGameMode).OnRoundEnd = () => { Submarine.Unload(); GameMain.SubEditorScreen.Select(); }; + GameMain.Lua.Initialize(); + return true; } @@ -1316,6 +1319,8 @@ namespace Barotrauma public void Select(bool enableAutoSave = true) { + GameMain.Lua.Stop(); + base.Select(); GUI.PreventPauseMenuToggle = false; diff --git a/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua b/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua index f9ee2a206..7fac815e3 100644 --- a/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua +++ b/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua @@ -51,8 +51,11 @@ local function runFolder(folder, rootFolder, package) local s = search[i]:gsub("\\", "/") if endsWith(s, ".lua") then - executeProtected(s, rootFolder) print(string.format("%s: Executing %s", package.Name, getFileName(s))) + local ok, result = pcall(executeProtected, s, rootFolder) + if not ok then + printerror(result) + end end end @@ -103,7 +106,6 @@ for package in allPackages do end end - setmodulepaths(modulePaths) Hook.Add("stop", "luaSetup.stop", function () diff --git a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses/LuaGame.cs b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses/LuaGame.cs index 59f6a05a1..7184e3c81 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses/LuaGame.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses/LuaGame.cs @@ -211,6 +211,11 @@ namespace Barotrauma return error; } + public static ContentPackage[] GetEnabledContentPackages() + { + return ContentPackageManager.EnabledPackages.All.ToArray(); + } + public static ItemPrefab GetItemPrefab(string itemNameOrId) { ItemPrefab itemPrefab = diff --git a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs index ec258cfeb..6d3e1d4bd 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs @@ -282,6 +282,8 @@ namespace Barotrauma UserData.RegisterType(); UserData.RegisterType(); + lua.Globals["printerror"] = (Action)PrintError; + lua.Globals["setmodulepaths"] = (Action)SetModulePaths; lua.Globals["dofile"] = (Func)DoFile;