Esempio n. 1
0
        public bool Inject(string gPath, string fPath, string mPath)
        {
            // 获取g.j文件内容
            string[]         g       = File.ReadAllLines(gPath);
            IList <Variable> globals = new List <Variable>();

            foreach (string code in g)
            {
                Variable v = new Variable(code);
                globals.Add(v);
            }

            // 获取f.j文件内容
            JassFile         f         = new JassFile(fPath);
            IList <Function> functions = f.Functions;

            // 获取m.j文件内容
            string[]      m         = File.ReadAllLines(mPath);
            List <string> mainCodes = new List <string>();

            mainCodes.AddRange(m);

            // 执行注入
            return(Inject(globals, functions, mainCodes));
        }
Esempio n. 2
0
        public bool ParseMapJass()
        {
            try
            {
                string    jPath      = @"scripts\war3map.j";
                MpqStream jassStream = MapFile.OpenFile(jPath);

                StreamReader   streader = new StreamReader(jassStream);
                IList <string> lines    = new List <string>();
                while (!streader.EndOfStream)
                {
                    lines.Add(streader.ReadLine());
                }
                logger.Info($"读取jass文件{lines.Count}行");

                JassFile = new JassFile(lines);
                JassFile.Parse();
                logger.Info($"解析jass完成,共计{JassFile.Globals.Variables.Count}个全局变量,{JassFile.Functions.Count}个函数");

                return(true);
            }
            catch (FileNotFoundException ex)
            {
                logger.Error("未找到jass文件:" + ex.Message);
            }
            return(false);
        }