SpringModEdit.Mod.ExecuteScript C# (CSharp) Method

ExecuteScript() public method

public ExecuteScript ( string script ) : List
script string
return List
        public List<ModSearchUnitResult> ExecuteScript(string script)
        {
            foreach (var s in Directory.GetFiles("../include/", "*.lua")) {
                try {
                    lua.DoFile(s);
                } catch (Exception ex) {
                    MessageBox.Show("Error in include " + s + ":\r\n" + ex.Message, "Include error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }

            List<ModSearchUnitResult> res = null;
            var ret = lua.DoString(script);
            if (ret != null && ret.Length > 0) {
                var rettab = ret[0] as LuaTable;
                if (rettab != null) {
                    res = new List<ModSearchUnitResult>();
                    foreach (DictionaryEntry de in rettab) if (Units[de.Value] != null) res.Add(new ModSearchUnitResult((LuaTable) Units[de.Value]));
                }
            }

            return res;
        }

Usage Example

コード例 #1
0
ファイル: FormMain.cs プロジェクト: sprunk/SpringRTS-Tools
        private void btnExecute_Click(object sender, EventArgs e)
        {
            try {
                scriptResults       = new FormChanges();
                scriptResults.Title = "Procedure result";
                var now = DateTime.Now;
                LuaFunctions.EchoEvents.Clear();
                var ret = mod.ExecuteScript(tbCommand.Text);

                foreach (var x in LuaFunctions.EchoEvents)
                {
                    scriptResults.TextBox.SelectionColor = x.color;
                    scriptResults.TextBox.SelectedText   = x.message.Replace("\n", "\r\n");
                }

                if (ret != null)
                {
                    lbResults.Items.Clear();
                    foreach (var ms in ret)
                    {
                        lbResults.Items.Add(ms);
                    }
                }
                if (scriptResults.TextBox.TextLength > 0)
                {
                    var ts = DateTime.Now - now;
                    scriptResults.TextBox.AppendText("\r\n -- Executed in  " + ts.Milliseconds + "ms");
                    scriptResults.TopMost = true;
                    scriptResults.Show();
                }
                ReloadTabs();
            } catch (Exception ex) {
                MessageBox.Show("Error in script:\r\n" + ex.Message, "Script error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }