public override Lua NewLua() { var lua = base.NewLua(); LuaRegistrationHelper.Enumeration <GameState>(lua); // Make methods globally accessible (without prepending the class name) LuaRegistrationHelper.TaggedStaticMethods(lua, typeof(Program)); LuaRegistrationHelper.TaggedStaticMethods(lua, typeof(Settings)); LuaRegistrationHelper.TaggedInstanceMethods(lua, GuiManager); lua["Settings"] = Settings.Current; lua["State"] = CurrentState; lua["Session"] = CurrentSession; lua["Presenter"] = CurrentPresenter; lua["Universe"] = CurrentPresenter.Universe; // Boolean flag to indicate if the game is running a mod lua["IsMod"] = (ContentManager.ModDir != null); return(lua); }
[TestMethod] public void Enumeration() { using (var lua = new Lua()) { lua.DoString( @"function test1(table) assert(table.A == 0) assert(table.B == 1) assert(table.C == 2) assert(table.D == 3) assert_count(table, 4) end function assert_count(table, expected_count) local count = 0 for k in pairs(table) do count = count + 1 end assert(count == expected_count) end " ); LuaRegistrationHelper.Enumeration <Enumeration_Target1>(lua); using (var table = LuaRegistrationHelper.NewEnumeration <Enumeration_Target1>(lua)) lua["Target1"] = table; lua.DoString("test1(Enumeration_Target1); test1(Target1)"); lua.DoString( @"function test2(table) assert(table.A == 5) assert(table.S == 6) assert(table.D == 7) assert(table.F == 8) assert_count(table, 4) end " ); LuaRegistrationHelper.Enumeration <Enumeration_Target2>(lua); using (var table = LuaRegistrationHelper.NewEnumeration <Enumeration_Target2>(lua)) lua["Target2"] = table; lua.DoString("test2(Enumeration_Target2); test2(Target2)"); } }
public DialogRenderer(GuiManager manager, Dialog dialog, Point location = new Point(), Lua lua = null) { _manager = manager; DialogModel = dialog; DialogRender = dialog.GenerateRender(_manager.DialogManager); _location = location; _lua = lua; LayoutHelper(); _manager.DialogManager.Engine.DeviceReset += LayoutHelper; if (lua != null) { #region Register Lua variables and functions // Register all controls as direct variables when possible foreach (var control in dialog.Controls) { if (!string.IsNullOrEmpty(control.Name)) { try { _lua[control.Name] = control; } catch (LuaException) {} } } _lua["Me"] = this; LuaRegistrationHelper.Enumeration <Render.MsgBoxType>(_lua); LuaRegistrationHelper.Enumeration <Render.MsgBoxResult>(_lua); #endregion dialog.ScriptFired += LuaExecute; } }