コード例 #1
0
        public string GetDecompiledText(UndertaleCode code, GlobalDecompileContext context = null)
        {
            string output = "GetDecompiledText(): " + code?.ToString();

            Console.Write(output);
            return(output);
        }
コード例 #2
0
        public string GetDecompiledText(string codeName, GlobalDecompileContext context = null)
        {
            string output = "GetDecompiledText(): " + codeName;

            Console.Write(output);
            return(output);
        }
コード例 #3
0
        public void ReplaceTextInGML(UndertaleCode code, string keyword, string replacement, bool caseSensitive = false, bool isRegex = false, GlobalDecompileContext context = null)
        {
            EnsureDataLoaded();

            string passBack = "";
            string codeName = code.Name.Content;
            GlobalDecompileContext DECOMPILE_CONTEXT = context is null ? new(Data, false) : context;

            if (!Data.ToolInfo.ProfileMode)
            {
                try
                {
                    passBack = GetPassBack((code != null ? Decompiler.Decompile(code, DECOMPILE_CONTEXT) : ""), keyword, replacement, caseSensitive, isRegex);
                    code.ReplaceGML(passBack, Data);
                }
                catch (Exception exc)
                {
                    throw new Exception("Error during GML code replacement:\n" + exc.ToString());
                }
            }
            else
            {
                try
                {
                    string path = Path.Combine(ProfilesFolder, Data.ToolInfo.CurrentMD5, "Temp", codeName + ".gml");
                    if (File.Exists(path))
                    {
                        passBack = GetPassBack(File.ReadAllText(path), keyword, replacement, caseSensitive, isRegex);
                        File.WriteAllText(path, passBack);
                        code.ReplaceGML(passBack, Data);
                    }
                    else
                    {
                        try
                        {
                            if (context is null)
                            {
                                passBack = GetPassBack((code != null ? Decompiler.Decompile(code, new GlobalDecompileContext(Data, false)) : ""), keyword, replacement, caseSensitive, isRegex);
                            }
                            else
                            {
                                passBack = GetPassBack((code != null ? Decompiler.Decompile(code, context) : ""), keyword, replacement, caseSensitive, isRegex);
                            }
                            code.ReplaceGML(passBack, Data);
                        }
                        catch (Exception exc)
                        {
                            throw new Exception("Error during GML code replacement:\n" + exc.ToString());
                        }
                    }
                }
                catch (Exception exc)
                {
                    throw new Exception("Error during writing of GML code to profile:\n" + exc.ToString() + "\n\nCode:\n\n" + passBack);
                }
            }
        }
コード例 #4
0
        public string GetDecompiledText(UndertaleCode code, GlobalDecompileContext context = null)
        {
            GlobalDecompileContext DECOMPILE_CONTEXT = context is null ? new(Data, false) : context;

            try
            {
                return(code != null?Decompiler.Decompile(code, DECOMPILE_CONTEXT) : "");
            }
            catch (Exception e)
            {
                return("/*\nDECOMPILER FAILED!\n\n" + e.ToString() + "\n*/");
            }
        }
コード例 #5
0
    /// <inheritdoc/>
    public void ReplaceTextInGML(UndertaleCode code, string keyword, string replacement, bool caseSensitive = false, bool isRegex = false, GlobalDecompileContext context = null)
    {
        if (code == null)
        {
            throw new ArgumentNullException(nameof(code));
        }

        EnsureDataLoaded();

        string passBack = "";
        GlobalDecompileContext decompileContext = context is null ? new(Data, false) : context;

        if (!Data.ToolInfo.ProfileMode)
        {
            try
            {
                passBack = GetPassBack(Decompiler.Decompile(code, decompileContext), keyword, replacement, caseSensitive, isRegex);
                code.ReplaceGML(passBack, Data);
            }
            catch (Exception exc)
            {
                throw new Exception("Error during GML code replacement:\n" + exc);
            }
        }
        else if (Data.ToolInfo.ProfileMode)
        {
            try
            {
                try
                {
                    if (context is null)
                    {
                        passBack = GetPassBack(Decompiler.Decompile(code, new GlobalDecompileContext(Data, false)), keyword, replacement, caseSensitive, isRegex);
                    }
                    else
                    {
                        passBack = GetPassBack(Decompiler.Decompile(code, context), keyword, replacement, caseSensitive, isRegex);
                    }
                    code.ReplaceGML(passBack, Data);
                }
                catch (Exception exc)
                {
                    throw new Exception("Error during GML code replacement:\n" + exc);
                }
            }
            catch (Exception exc)
            {
                throw new Exception("Error during writing of GML code to profile:\n" + exc + "\n\nCode:\n\n" + passBack);
            }
        }
    }
コード例 #6
0
        public void ReplaceTextInGML(UndertaleCode code, string keyword, string replacement, bool case_sensitive = false, bool isRegex = false, GlobalDecompileContext context = null)
        {
            EnsureDataLoaded();

            string passBack = "";
            string codeName = code.Name.Content;
            GlobalDecompileContext DECOMPILE_CONTEXT = context is null ? new(Data, false) : context;

            if (Data.ToolInfo.ProfileMode == false || Data.GMS2_3)
            {
                try
                {
                    passBack = GetPassBack((code != null ? Decompiler.Decompile(code, DECOMPILE_CONTEXT) : ""), keyword, replacement, case_sensitive, isRegex);
                    code.ReplaceGML(passBack, Data);
                }
                catch (Exception exc)
                {
                    throw new Exception("Error during GML code replacement:\n" + exc.ToString());
                }
            }
            else if (Data.ToolInfo.ProfileMode && !Data.GMS2_3)
            {
                try
                {
                    try
                    {
                        if (context is null)
                        {
                            passBack = GetPassBack((code != null ? Decompiler.Decompile(code, new GlobalDecompileContext(Data, false)) : ""), keyword, replacement, case_sensitive, isRegex);
                        }
                        else
                        {
                            passBack = GetPassBack((code != null ? Decompiler.Decompile(code, context) : ""), keyword, replacement, case_sensitive, isRegex);
                        }
                        code.ReplaceGML(passBack, Data);
                    }
                    catch (Exception exc)
                    {
                        throw new Exception("Error during GML code replacement:\n" + exc.ToString());
                    }
                }
                catch (Exception exc)
                {
                    throw new Exception("Error during writing of GML code to profile:\n" + exc.ToString() + "\n\nCode:\n\n" + passBack);
                }
            }
        }
コード例 #7
0
        public void DecompileAllScripts()
        {
            GlobalDecompileContext context = new GlobalDecompileContext(data, true);

            Parallel.ForEach(data.Code, (code) =>
            {
                //Console.WriteLine(code.Name.Content);
                try
                {
                    Decompiler.Decompile(code, context);
                }
                catch (Exception e)
                {
                    throw new Exception("Failed to decompile script " + code.Name.Content, e);
                }
            });
        }
コード例 #8
0
 public string GetDecompiledText(string codeName, GlobalDecompileContext context = null)
 {
     return(GetDecompiledText(Data.Code.ByName(codeName), context));
 }
コード例 #9
0
        public void ReplaceTextInGML(string codeName, string keyword, string replacement, bool case_sensitive = false, bool isRegex = false, GlobalDecompileContext context = null)
        {
            UndertaleCode code = Data.Code.ByName(codeName);

            if (code is null)
            {
                throw new ScriptException($"No code named \"{codeName}\" was found!");
            }

            ReplaceTextInGML(code, keyword, replacement, case_sensitive, isRegex, context);
        }
コード例 #10
0
 public void ReplaceTextInGML(UndertaleCode code, string keyword, string replacement, bool caseSensitive = false, bool isRegex = false, GlobalDecompileContext context = null)
 {
     Console.Write("ReplaceTextInGML(): " + code.ToString() + ", " + keyword + ", " + replacement + ", " + caseSensitive.ToString() + ", " + isRegex.ToString() + ", " + context?.ToString());
 }