diff --git a/Barotrauma/BarotraumaClient/ClientSource/Lua/LuaClasses.cs b/Barotrauma/BarotraumaClient/ClientSource/Lua/LuaClasses.cs index 6acf5e72a..f130568c7 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Lua/LuaClasses.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Lua/LuaClasses.cs @@ -25,6 +25,9 @@ namespace Barotrauma TickBox = UserData.CreateStatic(); Image = UserData.CreateStatic(); ListBox = UserData.CreateStatic(); + ScrollBar = UserData.CreateStatic(); + + Screen = UserData.CreateStatic(); Anchor = UserData.CreateStatic(); Alignment = UserData.CreateStatic(); @@ -40,6 +43,8 @@ namespace Barotrauma } } + public static object Screen; + public static object RectTransform; public static object LayoutGroup; public static object Button; @@ -50,6 +55,7 @@ namespace Barotrauma public static object TickBox; public static object Image; public static object ListBox; + public static object ScrollBar; public static object Pivot; public static object Anchor; diff --git a/Barotrauma/BarotraumaClient/ClientSource/PlayerInput.cs b/Barotrauma/BarotraumaClient/ClientSource/PlayerInput.cs index d2ca4d04b..db4d8159b 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/PlayerInput.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/PlayerInput.cs @@ -171,7 +171,7 @@ namespace Barotrauma } } - public static class PlayerInput + public class PlayerInput { static MouseState mouseState, oldMouseState; static MouseState latestMouseState; //the absolute latest state, do NOT use for player interaction @@ -502,6 +502,8 @@ namespace Barotrauma allowInput = true; } + GameMain.Lua.hook.Call("keyUpdate", new object[] { deltaTime }); + oldMouseState = mouseState; mouseState = latestMouseState; UpdateVariable(); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs index a179926ae..172e8f313 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs @@ -92,6 +92,7 @@ namespace Barotrauma if (GameMain.GameSession != null) GameMain.GameSession.AddToGUIUpdateList(); Character.AddAllToGUIUpdateList(); + base.AddToGUIUpdateList(); } public override void Draw(double deltaTime, GraphicsDevice graphics, SpriteBatch spriteBatch) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs index ca96a5f29..e14924cf9 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaClasses.cs @@ -80,6 +80,14 @@ namespace Barotrauma } } + public GameScreen GameScreen + { + get + { + return GameMain.GameScreen; + } + } + public void OverrideTraitors(bool o) { overrideTraitors = o; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaCustomConverters.cs b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaCustomConverters.cs index 73a78c061..a48c88daf 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaCustomConverters.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaCustomConverters.cs @@ -17,13 +17,24 @@ namespace Barotrauma RegisterAction(); RegisterAction(); - #if CLIENT Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Function, typeof(GUIButton.OnClickedHandler), v => { var function = v.Function; - return (GUIButton.OnClickedHandler)((GUIButton a, object b) => new LuaResult(function.Call(a, b)).Bool()); + return (GUIButton.OnClickedHandler)((GUIButton a, object b) => new LuaResult(LuaSetup.luaSetup.CallFunction(function, a, b)).Bool()); + }); + + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Function, typeof(GUITextBox.OnTextChangedHandler), v => + { + var function = v.Function; + return (GUITextBox.OnTextChangedHandler)((GUITextBox a, string b) => new LuaResult(LuaSetup.luaSetup.CallFunction(function, a, b)).Bool()); + }); + + Script.GlobalOptions.CustomConverters.SetScriptToClrCustomConversion(DataType.Function, typeof(GUITextBox.OnEnterHandler), v => + { + var function = v.Function; + return (GUITextBox.OnEnterHandler)((GUITextBox a, string b) => new LuaResult(LuaSetup.luaSetup.CallFunction(function, a, b)).Bool()); }); #endif } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs index 8ac6b0b01..a6471b555 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Lua/LuaSetup.cs @@ -14,6 +14,8 @@ using System.Reflection; #if CLIENT using Microsoft.Xna.Framework.Graphics; +using EventInput; +using Microsoft.Xna.Framework.Input; #endif namespace Barotrauma @@ -165,13 +167,21 @@ namespace Barotrauma return DynValue.Nil; return UserData.Create(o); - } - public object CallFunction(object function, object[] arguments) + public object CallFunction(object function, params object[] arguments) { - return lua.Call(function, arguments); + try + { + return lua.Call(function, arguments); + } + catch (Exception e) + { + HandleLuaException(e); + } + + return null; } public void SetModulePaths(string[] str) @@ -235,6 +245,7 @@ namespace Barotrauma luaScriptLoader = null; luaSetup = null; + } public void Initialize() @@ -341,6 +352,10 @@ namespace Barotrauma UserData.RegisterType(); UserData.RegisterType(); + UserData.RegisterType(); + UserData.RegisterType(); + UserData.RegisterType(); + AddCallMetaMember(UserData.RegisterType()); AddCallMetaMember(UserData.RegisterType()); AddCallMetaMember(UserData.RegisterType()); @@ -350,7 +365,7 @@ namespace Barotrauma AddCallMetaMember(UserData.RegisterType()); AddCallMetaMember(UserData.RegisterType()); AddCallMetaMember(UserData.RegisterType()); - + #if SERVER #elif CLIENT @@ -361,9 +376,12 @@ namespace Barotrauma UserData.RegisterType(); UserData.RegisterType(); UserData.RegisterType(); + UserData.RegisterType(); + UserData.RegisterType(); + UserData.RegisterType(); + UserData.RegisterType(); AddCallMetaMember(UserData.RegisterType()); - AddCallMetaMember(UserData.RegisterType()); AddCallMetaMember(UserData.RegisterType()); AddCallMetaMember(UserData.RegisterType()); @@ -374,9 +392,12 @@ namespace Barotrauma AddCallMetaMember(UserData.RegisterType()); AddCallMetaMember(UserData.RegisterType()); AddCallMetaMember(UserData.RegisterType()); + AddCallMetaMember(UserData.RegisterType()); + + #endif lua = new Script(CoreModules.Preset_SoftSandbox); - + lua.Options.DebugPrint = PrintMessage; lua.Options.ScriptLoader = luaScriptLoader; @@ -447,10 +468,9 @@ namespace Barotrauma #elif CLIENT lua.Globals["GUI"] = new LuaGUI(this); lua.Globals["Sprite"] = UserData.CreateStatic(); - + lua.Globals["Keys"] = UserData.CreateStatic(); + lua.Globals["PlayerInput"] = UserData.CreateStatic(); #endif - - // obsolete lua.Globals["CreateVector2"] = (Func)CreateVector2; lua.Globals["CreateVector3"] = (Func)CreateVector3;