/// <summary> /// 글로벌 필드의 배열에 있는 문자열을 경로로 삼아 각각 스크립트 파일 실행, 결과 테이블을 얻어와 dictionary에 넣는다. /// </summary> /// <param name="globalName"></param> /// <param name="tableList"></param> ScriptTableList LoadScriptTableArray(string globalName) { var tableList = new ScriptTableList(); foreach(var entry in m_engine.Globals.Get(globalName).Table.Values) { tableList.AddScriptTable(new ScriptTable(m_engine.DoFile(entry.String).Table)); } return tableList; }
/// <summary> /// 초기화 /// </summary> public void Initialize() { try { m_engine = new Script(); // 엔진 인스턴스 초기화 m_engine.Options.DebugPrint = (s) => // lua의 print 아웃풋 설정 { Debug.Log("[LUA Print] " + s); }; m_engine.DoFile(c_entryScript); // 시작 스크립트 실행 // Lua 테이블 가져오기 m_tablePlayer = LoadSingleScriptTable(c_field_playerScript); m_tableEmperor = LoadSingleScriptTable(c_field_emperorScript); m_tableIndivdualList = LoadScriptTableArray(c_field_individualScripts); m_tableFactionList = LoadScriptTableArray(c_field_factionScripts); m_tableActivityList = LoadScriptTableArray(c_field_activityScripts); m_tableItemList = LoadScriptTableArray(c_field_itemScripts); m_tableEventList = LoadScriptTableArray(c_field_eventScripts); m_gameTable = DynValue.NewTable(m_engine).Table; // 게임 오브젝트 테이블 m_engine.Globals["Game"] = m_gameTable; } catch(ScriptRuntimeException ex) { HandleScriptError(ex); } }