Пример #1
0
 public bool CompileAndRun(string code)
 {
     try
     {
         var codeDriver = (CodeDriver)Activator.CreateInstance(typeof(CodeDriver));
         if (MainForm.Instance.PulseCheckbox.Checked)
         {
             Pulsator.Pulse(PulseFlags.All);
         }
         //FateManager.Update();
         return(codeDriver.CompileAndRun(code));
     }
     catch (Exception ex)
     {
         RebornConsole.Log(Colors.Red, ex.ToString());
         Logging.Write(ex);
         return(false);
     }
 }
Пример #2
0
        private void CompileAndRun()
        {
            if (RebornConsoleSettings.Instance.TabIndex == 0)
            {
                // C#
                try
                {
                    btnCompile.BackColor = RebornConsole.CodeDriver.CompileAndRun(csharpCode.Text) ? System.Drawing.Color.White : System.Drawing.Color.Red;
                    RebornConsoleSettings.Instance.CSharpSniplets[RebornConsoleSettings.Instance.CSharpSelectedIndex] = csharpCode.Text;
                }
                catch (Exception ex)
                {
                    RebornConsole.Log(Colors.Red, ex.ToString());
                }
            }
            else
            {
                //LUA
                try
                {
                    Pulsator.Pulse(PulseFlags.All);
                    var tmp = luaCode.Text;
                    if (tmp.Contains("{T}"))
                    {
                        tmp = tmp.Replace("{T}", ff14bot.Core.Target.LuaString);
                    }

                    foreach (var value in Lua.GetReturnValues(tmp))
                    {
                        RebornConsole.Log(value);
                    }
                }
                catch (Exception ex)
                {
                    RebornConsole.Log(Colors.Red, ex.ToString());
                }
            }
        }
Пример #3
0
 private void button1_Click(object sender, EventArgs e)
 {
     RebornConsole.ClearLog();
 }
Пример #4
0
        // returns true if compiled sucessfully
        public bool CompileAndRun(string input)
        {
            if (Input != input || FrameLockChecked != MainForm.Instance.FrameLockCheckBox.Checked)
            {
                Input            = input;
                FrameLockChecked = MainForm.Instance.FrameLockCheckBox.Checked;

                using (CSharpCodeProvider provider = CodeProvider.Value)
                {
                    CompilerParameters options = new CompilerParameters();
                    // most recent assembly

                    Assembly myAssembly = AppDomain.CurrentDomain.GetAssemblies()
                                          .Where(a => a.GetName().Name.Contains(RebornConsole.Instance.Name))
                                          .OrderByDescending(a => new FileInfo(a.Location).CreationTime).FirstOrDefault();

                    options.ReferencedAssemblies.Add(myAssembly.Location);
                    foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
                    {
                        if (!asm.GetName().Name.Contains(RebornConsole.Instance.Name) && !asm.IsDynamic)
                        {
                            options.ReferencedAssemblies.Add(asm.Location);
                        }
                    }

                    options.GenerateExecutable      = false;
                    options.IncludeDebugInformation = true;
                    options.TempFiles      = new TempFileCollection(RebornConsole.TempFolder, false);
                    options.OutputAssembly = string.Format("{0}\\CodeAssembly{1:N}.dll", RebornConsole.TempFolder, Guid.NewGuid());
                    //options.CompilerOptions = "/d:DEBUG /optimize /unsafe";
                    options.CompilerOptions = "/optimize /unsafe";

                    var sb = new StringBuilder();
                    sb.Append(MainForm.Instance.FrameLockCheckBox.Checked ? PrefixWithFrameLock : Prefix);
                    sb.Append(input);
                    sb.Append(Postfix);
                    Results = provider.CompileAssemblyFromSource(options, sb.ToString());
                }
            }

            if (Results.Errors.HasErrors)
            {
                var errorMessage  = new StringBuilder();
                var errLineOffset = Prefix.Count(c => c == '\n');
                foreach (CompilerError error in Results.Errors)
                {
                    errorMessage.AppendFormat("{0}) {1}\n", error.Line - errLineOffset, error.ErrorText);
                }
                RebornConsole.Log(Colors.Red, errorMessage.ToString());
                return(false);
            }
            Type driverType = Results.CompiledAssembly.GetType("Driver");

            try
            {
                driverType.InvokeMember("Run", BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public, null, null, null);
            }
            catch (Exception e)
            {
                RebornConsole.Log(Colors.OrangeRed, e.ToString());
            }

            return(true);
        }