Beispiel #1
0
        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);
        }
Beispiel #2
0
        [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;
            }
        }