Beispiel #1
0
        static public LoadedVariables LoadVariablesFile()
        {
            var result = new LoadedVariables();
            var file   = UnityWrapper.LoadTextFileAsString("March22/VARIABLES");

            if (file == null || file == "")
            {
                UnityWrapper.LogError("Failed to load \"Resources/March22/VARIABLES.txt\"! You should have one even if you aren't using it!");
                return(result);
            }

            if (file[file.Length - 1] != '\n')
            {
                file += '\n';
            }
            var varLines = SplitByChar('\n', ref file);

            file                = "";
            result.variables    = new string[varLines.Count];
            result.variableData = new string[varLines.Count];

            for (int i = 0; i < varLines.Count; i++)
            {
                var currentLine = varLines[i];
                currentLine = currentLine.Trim(' ', '\n', '\r');
                if (currentLine.Length < 4)
                {
                    continue;
                }

                List <string> splitStr = new List <string>();
                SplitString(ref currentLine, ref splitStr, "===");
                for (int n = 0; n < splitStr.Count; n++)
                {
                    splitStr[n] = splitStr[n].Trim(' ', '\n', '\r');
                }
                if (splitStr.Count < 2)
                {
                    continue;
                }

                result.variables[i]    = splitStr[0];
                result.variableData[i] = splitStr[1];
            }

            return(result);
        }
Beispiel #2
0
        static public M22.Script.Script CompileScript(string filename)
        {
            var result = new M22.Script.Script();

            LoadedVariables loadedVars = LoadVariablesFile();

            //var file = File.ReadAllText(filename, Encoding.UTF8);
            var file = UnityWrapper.LoadTextFileAsString(filename);

            if (file.Length == 0)
            {
                UnityWrapper.LogError("Failed to load script file: " + filename);
                return(result);
            }

            var scriptLines = SplitByChar('\n', ref file);

            file = "";

            //List<string> CURRENT_LINE_SPLIT = new List<string>();
            int scriptPos = 0;

            for (int i = 0; i < scriptLines.Count; i++)
            {
                string currScriptLine = scriptLines[i];

                for (int n = 0; n < loadedVars.variables.Length; n++)
                {
                    if (loadedVars.variables[n] != null)
                    {
                        string tempStr = "[[" + loadedVars.variables[n] + "]]";
                        currScriptLine = currScriptLine.Replace(tempStr, loadedVars.variableData[n]);
                    }
                }

                M22.line_c tempLine_c = CompileLine(ref currScriptLine, i); // ref can't be an index so have to copy then copy back
                scriptLines[i] = currScriptLine;
                //if(tempLine_c.m_lineType == LINETYPE.NULL_OPERATOR)
                result.AddLine(tempLine_c);
                scriptPos++;
            }

            result.ClearNullOperators();

            return(result);
        }