ExtractTextFile() 공개 메소드

public ExtractTextFile ( string fileName ) : string
fileName string
리턴 string
예제 #1
0
        /// <summary>
        /// gets the list of dependencies from modinfo.lua
        /// </summary>
        string[] GetDependenciesFromLua(string archiveName, string fileName)
        {
            var modInfoFile = Archive.ExtractTextFile(archiveName, fileName);
            var results     = CLua.TraceDoString(L, 1, modInfoFile);

            return(results[0].GetLuaValues("depend").Select(v => v.ToString()).ToArray());
        }
예제 #2
0
        /// <summary>
        ///gets the list of dependencies from modinfo.tdf
        /// </summary>
        string[] GetDependenciesFromTdf(string archiveName, string fileName)
        {
            var modInfoText = Archive.ExtractTextFile(archiveName, fileName);

            Lua.lua_getglobal(L, "TDFparser");                                   // push the parser table on the stack
            Lua.lua_getfield(L, -1, "ParseText");                                // push the parse string function
            var modInfoTable = CLua.TraceCall(L, 2, new LuaString(modInfoText)); // load the tdf from string
            var modInfo      = modInfoTable[0].GetField("mod");

            // get all existing "dependN" fields
            var dependencies = new List <string>();
            var n            = 0;

            while (true)
            {
                var field = modInfo.GetField("depend" + n++);
                if (field != null)
                {
                    dependencies.Add(field.ToString());
                }
                else
                {
                    break;
                }
            }
            LuaValue.Pop(L, 1);
            return(dependencies.ToArray());
        }
예제 #3
0
        ///<summary>
        /// creates a lua state and registers the TDF parser
        ///</summary>
        public static IntPtr GetLuaState(string springPath)
        {
            if (Path.HasExtension(springPath))
            {
                throw new Exception("Invalid spring path");
            }
            var L = Lua.luaL_newstate();

            Lua.luaL_openlibs(L);
            var springContent   = Path.Combine(springPath, @"base\springcontent.sdz");
            var tdfParserString = Archive.ExtractTextFile(springContent, "gamedata/parse_tdf.lua");

            CLua.DoStringPushReturn(L, tdfParserString, new ConstantResults(1));
            Lua.lua_setglobal(L, "TDFParser");
            return(L);
        }
예제 #4
0
        static string GetTdfField(IntPtr L, string fieldName, string archivePath)
        {
            var archive = Archive.Open(archivePath);
            var tdfFile = FindModInfo(archive, "tdf");

            if (tdfFile != null)
            {
                var modInfoTable = GetTdfTableFromString(L, Archive.ExtractTextFile(archivePath, tdfFile));
                if (modInfoTable[0] is LuaNil)
                {
                    throw new Exception(String.Format("Error in file {0}: {1}", archivePath, modInfoTable[1]));
                }
                var modInfo = modInfoTable[0].GetField("mod");
                if (modInfo == null)
                {
                    return(null);
                }
                var field = modInfo.GetField(fieldName);
                if (field == null)
                {
                    return(null);
                }
                return(field.ToString());
            }
            var luaFile = FindModInfo(archive, "lua");

            if (luaFile != null)
            {
                var modinfo = Archive.ExtractTextFile(archivePath, luaFile);
                var result  = CLua.TraceDoString(L, 1, modinfo)[0].GetField(fieldName);
                if (result == null)
                {
                    return(null);
                }
                return(result.ToString());
            }
            return(null);
        }