Ejemplo n.º 1
0
		public LuaConsole()
		{
			_sortReverse = false;
			_lastColumnSorted = string.Empty;
			_luaList = new LuaFileList
			{
				ChangedCallback = SessionChangedCallback,
				LoadCallback = ClearOutputWindow
			};

			InitializeComponent();

			Closing += (o, e) =>
			{
				if (AskSaveChanges())
				{
					CloseLua();
					GlobalWin.DisplayManager.ClearLuaSurfaces();
				}
				else
				{
					e.Cancel = true;
				}
			};

			LuaListView.QueryItemText += LuaListView_QueryItemText;
			LuaListView.QueryItemBkColor += LuaListView_QueryItemBkColor;
			LuaListView.QueryItemImage += LuaListView_QueryItemImage;
			LuaListView.QueryItemIndent += LuaListView_QueryItemIndent;
			LuaListView.VirtualMode = true;

			LuaSandbox.SetLogger(this.ConsoleLog);
		}
Ejemplo n.º 2
0
		public LuaConsole()
		{
			_sortReverse = false;
			_lastColumnSorted = string.Empty;
			_luaList = new LuaFileList
			{
				ChangedCallback = SessionChangedCallback,
				LoadCallback = ClearOutputWindow
			};

			InitializeComponent();
			LuaImp = new EmuLuaLibrary(this);
			Closing += (o, e) =>
			{
				if (AskSave())
				{
					SaveConfigSettings();
				}
				else
				{
					e.Cancel = true;
				}
			};

			LuaListView.QueryItemText += LuaListView_QueryItemText;
			LuaListView.QueryItemBkColor += LuaListView_QueryItemBkColor;
			LuaListView.VirtualMode = true;

			TopMost = Global.Config.LuaSettings.TopMost;
		}
Ejemplo n.º 3
0
        public LuaConsole()
        {
            _sortReverse      = false;
            _lastColumnSorted = string.Empty;
            _luaList          = new LuaFileList
            {
                ChangedCallback = SessionChangedCallback,
                LoadCallback    = ClearOutputWindow
            };

            InitializeComponent();
            LuaImp   = new EmuLuaLibrary(this);
            Closing += (o, e) =>
            {
                if (AskSave())
                {
                    SaveConfigSettings();
                }
                else
                {
                    e.Cancel = true;
                }
            };

            LuaListView.QueryItemText    += LuaListView_QueryItemText;
            LuaListView.QueryItemBkColor += LuaListView_QueryItemBkColor;
            LuaListView.VirtualMode       = true;

            TopMost = Global.Config.LuaSettings.TopMost;
        }
Ejemplo n.º 4
0
        public LuaConsole()
        {
            _sortReverse      = false;
            _lastColumnSorted = string.Empty;
            _luaList          = new LuaFileList
            {
                ChangedCallback = SessionChangedCallback,
                LoadCallback    = ClearOutputWindow
            };

            InitializeComponent();

            Closing += (o, e) =>
            {
                if (AskSaveChanges())
                {
                    CloseLua();
                    GlobalWin.DisplayManager.ClearLuaSurfaces();
                }
                else
                {
                    e.Cancel = true;
                }
            };

            LuaListView.QueryItemText    += LuaListView_QueryItemText;
            LuaListView.QueryItemBkColor += LuaListView_QueryItemBkColor;
            LuaListView.VirtualMode       = true;

            LuaSandbox.SetLogger(this.ConsoleLog);
        }
Ejemplo n.º 5
0
        public Win32LuaLibraries(
            LuaFileList scriptList,
            LuaFunctionList registeredFuncList,
            IEmulatorServiceProvider serviceProvider,
            MainForm mainForm,
            DisplayManagerBase displayManager,
            InputManager inputManager,
            Config config,
            IEmulator emulator,
            IGameInfo game)
        {
            void EnumerateLuaFunctions(string name, Type type, LuaLibraryBase instance)
            {
                if (instance != null)
                {
                    _lua.NewTable(name);
                }
                foreach (var method in type.GetMethods())
                {
                    var foundAttrs = method.GetCustomAttributes(typeof(LuaMethodAttribute), false);
                    if (foundAttrs.Length == 0)
                    {
                        continue;
                    }
                    if (instance != null)
                    {
                        _lua.RegisterFunction($"{name}.{((LuaMethodAttribute) foundAttrs[0]).Name}", instance, method);
                    }
                    LibraryFunction libFunc = new(
                        name,
                        type.GetCustomAttributes(typeof(DescriptionAttribute), false).Cast <DescriptionAttribute>()
                        .Select(descAttr => descAttr.Description).FirstOrDefault() ?? string.Empty,
                        method
                        );
                    Docs.Add(libFunc);
#if DEBUG
                    // these don't catch object or LuaTable!
                    if (method.GetParameters().Any(static pi => pi.ParameterType == typeof(string) &&
                                                   !pi.CustomAttributes.Any(static a => typeof(LuaStringParamAttributeBase).IsAssignableFrom(a.AttributeType))))
Ejemplo n.º 6
0
        public LuaConsole()
        {
            Settings          = new LuaConsoleSettings();
            _sortReverse      = false;
            _lastColumnSorted = string.Empty;
            _luaList          = new LuaFileList
            {
                ChangedCallback = SessionChangedCallback,
                LoadCallback    = ClearOutputWindow
            };

            InitializeComponent();

            Closing += (o, e) =>
            {
                if (AskSaveChanges())
                {
                    SaveColumnInfo(LuaListView, Settings.Columns);

                    GlobalWin.DisplayManager.ClearLuaSurfaces();
                    LuaImp.GuiLibrary.DrawFinish();
                    CloseLua();
                }
                else
                {
                    e.Cancel = true;
                }
            };

            LuaListView.QueryItemText    += LuaListView_QueryItemText;
            LuaListView.QueryItemBkColor += LuaListView_QueryItemBkColor;
            LuaListView.QueryItemImage   += LuaListView_QueryItemImage;
            LuaListView.QueryItemIndent  += LuaListView_QueryItemIndent;
            LuaListView.VirtualMode       = true;

            //this is bad, in case we ever have more than one gui part running lua.. not sure how much other badness there is like that
            LuaSandbox.DefaultLogger = ConsoleLog;
        }
Ejemplo n.º 7
0
		public LuaConsole()
		{
			Settings = new LuaConsoleSettings();
			_sortReverse = false;
			_lastColumnSorted = string.Empty;
			_luaList = new LuaFileList
			{
				ChangedCallback = SessionChangedCallback,
				LoadCallback = ClearOutputWindow
			};

			InitializeComponent();

			Closing += (o, e) =>
			{
				if (AskSaveChanges())
				{
					SaveColumnInfo(LuaListView, Settings.Columns);
					CloseLua();
					GlobalWin.DisplayManager.ClearLuaSurfaces();
				}
				else
				{
					e.Cancel = true;
				}
			};

			LuaListView.QueryItemText += LuaListView_QueryItemText;
			LuaListView.QueryItemBkColor += LuaListView_QueryItemBkColor;
			LuaListView.QueryItemImage += LuaListView_QueryItemImage;
			LuaListView.QueryItemIndent += LuaListView_QueryItemIndent;
			LuaListView.VirtualMode = true;

			//this is bad, in case we ever have more than one gui part running lua.. not sure how much other badness there is like that
			LuaSandbox.DefaultLogger = ConsoleLog;
		}
Ejemplo n.º 8
0
        public Win32LuaLibraries(
            LuaFileList scriptList,
            LuaFunctionList registeredFuncList,
            IEmulatorServiceProvider serviceProvider,
            MainForm mainForm,
            DisplayManagerBase displayManager,
            InputManager inputManager,
            Config config,
            IEmulator emulator,
            IGameInfo game)
        {
            void EnumerateLuaFunctions(string name, Type type, LuaLibraryBase instance)
            {
                if (instance != null)
                {
                    _lua.NewTable(name);
                }
                foreach (var method in type.GetMethods())
                {
                    var foundAttrs = method.GetCustomAttributes(typeof(LuaMethodAttribute), false);
                    if (foundAttrs.Length == 0)
                    {
                        continue;
                    }
                    if (instance != null)
                    {
                        _lua.RegisterFunction($"{name}.{((LuaMethodAttribute) foundAttrs[0]).Name}", instance, method);
                    }
                    Docs.Add(new LibraryFunction(
                                 name,
                                 type.GetCustomAttributes(typeof(DescriptionAttribute), false).Cast <DescriptionAttribute>()
                                 .Select(descAttr => descAttr.Description).FirstOrDefault() ?? string.Empty,
                                 method
                                 ));
                }
            }

            if (true /*NLua.Lua.WhichLua == "NLua"*/)
            {
                _lua["keepalives"] = _lua.NewTable();
            }
            _th                 = new NLuaTableHelper(_lua, LogToLuaConsole);
            _displayManager     = displayManager;
            _inputManager       = inputManager;
            _mainForm           = mainForm;
            LuaWait             = new AutoResetEvent(false);
            PathEntries         = config.PathEntries;
            RegisteredFunctions = registeredFuncList;
            ScriptList          = scriptList;
            Docs.Clear();
            _apiContainer = ApiManager.RestartLua(serviceProvider, LogToLuaConsole, _mainForm, _displayManager, _inputManager, _mainForm.MovieSession, _mainForm.Tools, config, emulator, game);

            // Register lua libraries
            foreach (var lib in Client.Common.ReflectionCache.Types.Concat(EmuHawk.ReflectionCache.Types)
                     .Where(t => typeof(LuaLibraryBase).IsAssignableFrom(t) && t.IsSealed && ServiceInjector.IsAvailable(serviceProvider, t)))
            {
                bool addLibrary = true;
                var  attributes = lib.GetCustomAttributes(typeof(LuaLibraryAttribute), false);
                if (attributes.Any())
                {
                    addLibrary = VersionInfo.DeveloperBuild || ((LuaLibraryAttribute)attributes.First()).Released;
                }

                if (addLibrary)
                {
                    var instance = (LuaLibraryBase)Activator.CreateInstance(lib, this, _apiContainer, (Action <string>)LogToLuaConsole);
                    ServiceInjector.UpdateServices(serviceProvider, instance);

                    // TODO: make EmuHawk libraries have a base class with common properties such as this
                    // and inject them here
                    if (instance is ClientLuaLibrary clientLib)
                    {
                        clientLib.MainForm = _mainForm;
                    }
                    else if (instance is ConsoleLuaLibrary consoleLib)
                    {
                        consoleLib.Tools         = _mainForm.Tools;
                        _logToLuaConsoleCallback = consoleLib.Log;
                    }
                    else if (instance is GuiLuaLibrary guiLib)
                    {
                        // emu lib may be null now, depending on order of ReflectionCache.Types, but definitely won't be null when this is called
                        guiLib.CreateLuaCanvasCallback = (width, height, x, y) =>
                        {
                            var canvas = new LuaCanvas(EmulationLuaLibrary, width, height, x, y, _th, LogToLuaConsole);
                            canvas.Show();
                            return(_th.ObjectToTable(canvas));
                        };
                    }
                    else if (instance is TAStudioLuaLibrary tastudioLib)
                    {
                        tastudioLib.Tools = _mainForm.Tools;
                    }

                    EnumerateLuaFunctions(instance.Name, lib, instance);
                    Libraries.Add(lib, instance);
                }
            }

            _lua.RegisterFunction("print", this, typeof(Win32LuaLibraries).GetMethod(nameof(Print)));

            EmulationLuaLibrary.FrameAdvanceCallback = Frameadvance;
            EmulationLuaLibrary.YieldCallback        = EmuYield;

            EnumerateLuaFunctions(nameof(LuaCanvas), typeof(LuaCanvas), null);             // add LuaCanvas to Lua function reference table
        }
Ejemplo n.º 9
0
 public UnixLuaLibraries(LuaFileList scriptList, LuaFunctionList registeredFuncList, PathEntryCollection pathEntries)
 {
     PathEntries         = pathEntries;
     RegisteredFunctions = registeredFuncList;
     ScriptList          = scriptList;
 }
Ejemplo n.º 10
0
 public UnixLuaLibraries(LuaFileList scriptList, LuaFunctionList registeredFuncList)
 {
     RegisteredFunctions = registeredFuncList;
     ScriptList          = scriptList;
 }