diff options
Diffstat (limited to 'plugins/MirLua/src')
| -rw-r--r-- | plugins/MirLua/src/main.cpp | 18 | ||||
| -rw-r--r-- | plugins/MirLua/src/mlua.cpp | 3 | ||||
| -rw-r--r-- | plugins/MirLua/src/mlua.h | 1 | ||||
| -rw-r--r-- | plugins/MirLua/src/mlua_console.cpp | 25 | ||||
| -rw-r--r-- | plugins/MirLua/src/mlua_console.h | 15 | ||||
| -rw-r--r-- | plugins/MirLua/src/stdafx.h | 4 | 
6 files changed, 48 insertions, 18 deletions
diff --git a/plugins/MirLua/src/main.cpp b/plugins/MirLua/src/main.cpp index a747a6ea9e..64fc38f641 100644 --- a/plugins/MirLua/src/main.cpp +++ b/plugins/MirLua/src/main.cpp @@ -9,7 +9,6 @@ HANDLE g_hCommonFolderPath;  HANDLE g_hCustomFolderPath;
  CMLua *g_mLua;
 -HANDLE hConsole = NULL;
  PLUGININFOEX pluginInfo =
  {
 @@ -62,33 +61,18 @@ extern "C" int __declspec(dllexport) Load(void)  {
  	mir_getLP(&pluginInfo);
 -	if (db_get_b(NULL, MODULE, "ShowConsole", 0))
 -	{
 -		if (!AttachConsole(ATTACH_PARENT_PROCESS))
 -			if (AllocConsole())
 -			{
 -				freopen("CONOUT$", "w", stdout);
 -				hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
 -				SetConsoleTitle(_T("MirLua Console"));
 -			}
 -	}
 +	HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded);
  	g_hCommonFolderPath = FoldersRegisterCustomPathT("MirLua", Translate("Common scripts folder"), COMMON_SCRIPTS_PATHT);
  	g_hCustomFolderPath = FoldersRegisterCustomPathT("MirLua", Translate("Custom scripts folder"), CUSTOM_SCRIPTS_PATHT);
  	g_mLua = new CMLua();
 -	HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded);
 -
  	return 0;
  }
  extern "C" int __declspec(dllexport) Unload(void)
  {
 -	if (hConsole)
 -		CloseHandle(hConsole);
 -	FreeConsole();
 -
  	delete g_mLua;
  	return 0;
 diff --git a/plugins/MirLua/src/mlua.cpp b/plugins/MirLua/src/mlua.cpp index e76731e11b..c90d120006 100644 --- a/plugins/MirLua/src/mlua.cpp +++ b/plugins/MirLua/src/mlua.cpp @@ -25,12 +25,15 @@ void CMLua::Load()  	MUUID muidLast = MIID_LAST;
  	hScriptsLangpack = GetPluginLangId(muidLast, 0);
 +	console = new CMLuaConsole(L);
 +
  	CLuaModuleLoader::Load(L);
  	CLuaScriptLoader::Load(L);
  }
  void CMLua::Unload()
  {
 +	delete console;
  	if (L)
  		lua_close(L);
  	KillModuleMenus(hScriptsLangpack);
 diff --git a/plugins/MirLua/src/mlua.h b/plugins/MirLua/src/mlua.h index c792c32780..103512145e 100644 --- a/plugins/MirLua/src/mlua.h +++ b/plugins/MirLua/src/mlua.h @@ -5,6 +5,7 @@ class CMLua  {
  private:
  	lua_State *L;
 +	CMLuaConsole *console;
  	void Load();
  	void Unload();
 diff --git a/plugins/MirLua/src/mlua_console.cpp b/plugins/MirLua/src/mlua_console.cpp new file mode 100644 index 0000000000..75a51585b6 --- /dev/null +++ b/plugins/MirLua/src/mlua_console.cpp @@ -0,0 +1,25 @@ +#include "stdafx.h"
 +
 +CMLuaConsole::CMLuaConsole(lua_State *L)
 +	: L(L), hConsole(NULL)
 +{
 +	if (db_get_b(NULL, MODULE, "ShowConsole", 0))
 +	{
 +		if (!AttachConsole(ATTACH_PARENT_PROCESS))
 +		{
 +			if (AllocConsole())
 +			{
 +				freopen("CONOUT$", "w", stdout);
 +				hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
 +				SetConsoleTitle(_T("MirLua Console"));
 +			}
 +		}
 +	}
 +}
 +
 +CMLuaConsole::~CMLuaConsole()
 +{
 +	if (hConsole)
 +		CloseHandle(hConsole);
 +	FreeConsole();
 +}
\ No newline at end of file diff --git a/plugins/MirLua/src/mlua_console.h b/plugins/MirLua/src/mlua_console.h new file mode 100644 index 0000000000..6e82a22dd0 --- /dev/null +++ b/plugins/MirLua/src/mlua_console.h @@ -0,0 +1,15 @@ +#ifndef _LUA_CONSOLE_H_
 +#define _LUA_CONSOLE_H_
 +
 +class CMLuaConsole
 +{
 +private:
 +	lua_State *L;
 +	HANDLE hConsole;
 +
 +public:
 +	CMLuaConsole(lua_State *L);
 +	~CMLuaConsole();
 +};
 +
 +#endif //_LUA_CONSOLE_H_
\ No newline at end of file diff --git a/plugins/MirLua/src/stdafx.h b/plugins/MirLua/src/stdafx.h index ce3e7948c6..592640b3e6 100644 --- a/plugins/MirLua/src/stdafx.h +++ b/plugins/MirLua/src/stdafx.h @@ -32,14 +32,16 @@ extern "C"  #include "version.h"
  #include "resource.h"
 +class CMLuaConsole;
 +
  #include "mlua.h"
 +#include "mlua_console.h"
  #include "mlua_module_loader.h"
  #include "mlua_script_loader.h"
  #include "mlua_options.h"
  #define MODULE "MirLua"
 -
  extern CMLua *g_mLua;
  extern int hScriptsLangpack;
  | 
