From d3e0625ef4f9b9ec47ed6d8ee4170fdd2b9720c9 Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Mon, 14 Feb 2022 16:19:53 -0300 Subject: [PATCH] Lua is automatically initialized when entering singleplayer campaigns (doesn't include submarine editor) and roundStart && roundEnd hooks now work in CL Lua --- Barotrauma/BarotraumaClient/ClientSource/GameMain.cs | 1 + .../BarotraumaClient/ClientSource/Networking/GameClient.cs | 2 -- .../BarotraumaClient/ClientSource/Screens/MainMenuScreen.cs | 4 ++++ Barotrauma/BarotraumaShared/Lua/LuaSetup.lua | 4 ++++ .../SharedSource/GameSession/GameSession.cs | 6 ++++++ 5 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs b/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs index 0d14f8297..afe9f013f 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs @@ -1101,6 +1101,7 @@ namespace Barotrauma MainMenuScreen.Select(); GameSession = null; + GameMain.Lua.Stop(); } public void ShowCampaignDisclaimer(Action onContinue = null) diff --git a/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs b/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs index e475bf881..db3882907 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs @@ -1761,8 +1761,6 @@ namespace Barotrauma.Networking AddChatMessage($"ServerMessage.HowToCommunicate~[chatbutton]={GameMain.Config.KeyBindText(InputType.Chat)}~[radiobutton]={GameMain.Config.KeyBindText(InputType.RadioChat)}", ChatMessageType.Server); - GameMain.Lua.hook.Call("roundStart", new object[] { }); - yield return CoroutineStatus.Success; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/MainMenuScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/MainMenuScreen.cs index 5b5f36a44..053376261 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/MainMenuScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/MainMenuScreen.cs @@ -1202,6 +1202,8 @@ namespace Barotrauma GameMain.GameSession.CrewManager.AddCharacterInfo(characterInfo); } ((SinglePlayerCampaign)GameMain.GameSession.GameMode).LoadNewLevel(); + + GameMain.Lua.Initialize(); } private void LoadGame(string saveFile) @@ -1220,6 +1222,8 @@ namespace Barotrauma //TODO //GameMain.LobbyScreen.Select(); + + GameMain.Lua.Initialize(); } #region UI Methods diff --git a/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua b/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua index 194ecbb30..ac84e7f18 100644 --- a/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua +++ b/Barotrauma/BarotraumaShared/Lua/LuaSetup.lua @@ -91,4 +91,8 @@ end setmodulepaths(modulePaths) +Hook.Add("stop", "luaSetup.stop", function () + print("Stopping Lua...") +end) + Hook.Call("loaded") \ No newline at end of file diff --git a/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameSession.cs b/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameSession.cs index f1c9f4762..c26a39e80 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameSession.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameSession.cs @@ -460,6 +460,8 @@ namespace Barotrauma GUI.PreventPauseMenuToggle = false; HintManager.OnRoundStarted(); + + GameMain.Lua.hook.Call("roundStart"); #endif } @@ -686,6 +688,10 @@ namespace Barotrauma { RoundEnding = true; +#if CLIENT + GameMain.Lua.hook.Call("roundEnd"); +#endif + try { IEnumerable crewCharacters = GetSessionCrewCharacters();