Merge branch 'fixes' into main/rendor-staging
[ryzomcore.git] / nel / src / gui / lua_manager.cpp
blob9bdb002a6e86bd15a9271ae55827305d68bd018f
1 // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This source file has been modified by the following contributors:
5 // Copyright (C) 2013 Laszlo KIS-ADAM (dfighter) <dfighter1985@gmail.com>
6 //
7 // This program is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU Affero General Public License as
9 // published by the Free Software Foundation, either version 3 of the
10 // License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU Affero General Public License for more details.
17 // You should have received a copy of the GNU Affero General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
21 #include "stdpch.h"
22 #include "nel/gui/lua_manager.h"
23 #include "nel/gui/lua_helper.h"
26 #ifdef HAVE_CONFIG_H
27 #include "config.h"
28 #endif
30 #ifdef DEBUG_NEW
31 #define new DEBUG_NEW
32 #endif
34 namespace NLGUI
37 bool CLuaManager::debugLua = false;
38 bool CLuaManager::editorMode = false;
39 CLuaManager* CLuaManager::instance = NULL;
41 CLuaManager::CLuaManager()
43 luaState = new NLGUI::CLuaState( debugLua );
46 CLuaManager::~CLuaManager()
48 if (luaState)
50 delete luaState;
51 luaState = NULL;
55 void CLuaManager::releaseInstance()
57 if (instance)
59 delete instance;
60 instance = NULL;
64 bool CLuaManager::executeLuaScript( const std::string &luaScript, bool smallScript )
66 if( editorMode )
67 return true;
69 try
71 if( smallScript )
72 luaState->executeSmallScript( luaScript );
73 else
74 luaState->executeScript( luaScript );
76 catch( const ELuaError &e )
78 std::string ryzom_version = RYZOM_VERSION;
79 if (!FINAL_VERSION || ryzom_version.find("Omega") == std::string::npos) // Omega version are the one used on live servers
81 nlwarning("--- LUA ERROR ---");
82 nlwarning(e.luaWhat().c_str());
83 std::vector<std::string> res;
84 NLMISC::explode(luaScript, std::string("\n"), res);
85 for(uint k = 0; k < res.size(); ++k)
87 nlwarning("%.05u %s", k, res[k].c_str());
89 nlwarning("--- ********* ---");
91 return false;
94 return true;
97 void CLuaManager::ResetLuaState()
99 if (luaState) delete luaState;
101 luaState = new CLuaState( debugLua );
104 void CLuaManager::forceGarbageCollect()
106 nlinfo("Collecting Garbaged LUA variables");
107 luaState->setGCThreshold( 0 );
108 nlinfo( NLMISC::toString( "Memory Used : %d Kb", luaState->getGCCount() ).c_str() );