Skip to content

Commit

Permalink
xrScriptEngine: remove GlobalEnv.ScriptEngine dependency.
Browse files Browse the repository at this point in the history
  • Loading branch information
nitrocaster committed Nov 14, 2015
1 parent 7651718 commit d7aff22
Show file tree
Hide file tree
Showing 16 changed files with 269 additions and 136 deletions.
2 changes: 1 addition & 1 deletion src/xrEngine/x_ray.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ static void InitEngineExt()
Engine.External.Initialize();
// once all libraries got loaded, instantiate and initialize script engine
GlobalEnv.ScriptEngine = xr_new<CScriptEngine>();
GlobalEnv.ScriptEngine->init();
GlobalEnv.ScriptEngine->init(XRay::ScriptExporter::Export);
}

struct path_excluder_predicate
Expand Down
10 changes: 6 additions & 4 deletions src/xrGame/Level_load.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,12 +138,14 @@ bool CLevel::Load_GameSpecific_After()

if (!g_dedicated_server) {
// loading scripts
ai().script_engine().remove_script_process(ScriptProcessor::Level);

auto &scriptEngine = ai().script_engine();
scriptEngine.remove_script_process(ScriptProcessor::Level);
shared_str scripts;
if (pLevel->section_exist("level_scripts") && pLevel->line_exist("level_scripts","script"))
ai().script_engine().add_script_process(ScriptProcessor::Level,xr_new<CScriptProcess>("level",pLevel->r_string("level_scripts","script")));
scripts = pLevel->r_string("level_scripts","script");
else
ai().script_engine().add_script_process(ScriptProcessor::Level,xr_new<CScriptProcess>("level",""));
scripts = "";
scriptEngine.add_script_process(ScriptProcessor::Level, scriptEngine.CreateScriptProcess("level", scripts));
}

BlockCheatLoad();
Expand Down
2 changes: 1 addition & 1 deletion src/xrGame/alife_simulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ void restart_all ()
destroy_lua_wpn_params ();
MainMenu()->DestroyInternal (true);
xr_delete (g_object_factory);
ai().script_engine().init ();
ai().script_engine().init (XRay::ScriptExporter::Export); // XXX: reset node 'done' flags before export

#ifdef DEBUG
ai().moving_objects().clear ();
Expand Down
18 changes: 11 additions & 7 deletions src/xrGame/game_sv_base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -440,18 +440,22 @@ void game_sv_GameState::Create (shared_str &options)
if (!g_dedicated_server)
{
// loading scripts
ai().script_engine().remove_script_process(ScriptProcessor::Game);
auto &scriptEngine = ai().script_engine();
scriptEngine.remove_script_process(ScriptProcessor::Game);
string_path S;
FS.update_path (S,"$game_config$","script.ltx");
CInifile *l_tpIniFile = xr_new<CInifile>(S);
R_ASSERT (l_tpIniFile);

if( l_tpIniFile->section_exist( type_name() ) )
if (l_tpIniFile->r_string(type_name(),"script"))
ai().script_engine().add_script_process(ScriptProcessor::Game,xr_new<CScriptProcess>("game",l_tpIniFile->r_string(type_name(),"script")));
else
ai().script_engine().add_script_process(ScriptProcessor::Game,xr_new<CScriptProcess>("game",""));

if (l_tpIniFile->section_exist(type_name()))
{
shared_str scripts;
if (l_tpIniFile->r_string(type_name(), "script"))
scripts = l_tpIniFile->r_string(type_name(), "script");
else
scripts = "";
scriptEngine.add_script_process(ScriptProcessor::Game, scriptEngine.CreateScriptProcess("game", scripts));
}
xr_delete (l_tpIniFile);
}

Expand Down
5 changes: 3 additions & 2 deletions src/xrScriptEngine/script_debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,10 @@ LRESULT CScriptDebugger::DebugMessage(UINT nMsg, WPARAM wParam, LPARAM lParam)

BOOL CScriptDebugger::Active() { return m_bIdePresent; }

CScriptDebugger::CScriptDebugger()
CScriptDebugger::CScriptDebugger(CScriptEngine *scriptEngine)
{
m_threads = xr_new<CDbgScriptThreads>(this);
this->scriptEngine = scriptEngine;
m_threads = xr_new<CDbgScriptThreads>(scriptEngine, this);
m_callStack = xr_new<CScriptCallStack>(this);
m_lua = xr_new<CDbgLuaHelper>(this);
ZeroMemory(m_curr_connected_mslot,sizeof(m_curr_connected_mslot));
Expand Down
3 changes: 2 additions & 1 deletion src/xrScriptEngine/script_debugger.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class XRSCRIPTENGINE_API CScriptDebugger
void UnPrepareLua(lua_State *l, int idx);
BOOL PrepareLuaBind();

CScriptDebugger();
CScriptDebugger(CScriptEngine *scriptEngine);
virtual ~CScriptDebugger();

void Go();
Expand Down Expand Up @@ -85,6 +85,7 @@ class XRSCRIPTENGINE_API CScriptDebugger
bool TranslateIdeMessage(CMailSlotMsg *);
void SendMessageToIde(CMailSlotMsg &);

CScriptEngine *scriptEngine;
CDbgScriptThreads *m_threads;
CDbgLuaHelper *m_lua;
CScriptCallStack *m_callStack;
Expand Down
6 changes: 3 additions & 3 deletions src/xrScriptEngine/script_debugger_threads.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
u32 CDbgScriptThreads::Fill()
{
u32 res = 0;
if (!GlobalEnv.ScriptEngine)
if (!scriptEngine)
return res;
CScriptProcess* sp = GlobalEnv.ScriptEngine->script_process(ScriptProcessor::Game);
CScriptProcess* sp = scriptEngine->script_process(ScriptProcessor::Game);
if (sp)
res += FillFrom(sp);
sp = GlobalEnv.ScriptEngine->script_process(ScriptProcessor::Level);
sp = scriptEngine->script_process(ScriptProcessor::Level);
if (sp)
res += FillFrom(sp);
return res;
Expand Down
7 changes: 6 additions & 1 deletion src/xrScriptEngine/script_debugger_threads.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,16 @@ struct lua_State;
class XRSCRIPTENGINE_API CDbgScriptThreads
{
private:
CScriptEngine *scriptEngine;
xr_vector<SScriptThread> m_threads;
public:
CScriptDebugger *m_debugger;

CDbgScriptThreads(CScriptDebugger *d) { m_debugger = nullptr; }
CDbgScriptThreads(CScriptEngine *scriptEngine, CScriptDebugger *debugger)
{
this->scriptEngine = scriptEngine;
m_debugger = debugger;
}
~CDbgScriptThreads() {};
u32 FillFrom(CScriptProcess *);
u32 Fill();
Expand Down
Loading

0 comments on commit d7aff22

Please sign in to comment.