/// <summary> /// Executes the script /// </summary> public ScriptReturnData ExecuteScript() { srd = new ScriptReturnData(); var sf = new ScriptFunctions( srd, DataPath, PluginsPath, OMOD.GetFramework(), ScriptRunnerFunctions); switch (type) { case ScriptType.obmmScript: return(OBMMScriptHandler.Execute( OMOD.GetFramework(), script, DataPath, PluginsPath, ScriptRunnerFunctions)); case ScriptType.Python: throw new NotImplementedException(); case ScriptType.cSharp: DotNetScriptHandler.ExecuteCS(script, sf); break; case ScriptType.vb: DotNetScriptHandler.ExecuteVB(script, sf); break; } return(srd); }
internal static ScriptReturnData ExecuteScript(string script, string dataPath, string pluginsPath, IScriptFunctions scriptFunctions) { Utils.Info("Starting script execution..."); if (string.IsNullOrWhiteSpace(script)) { Utils.Error("Script is empty! Returning empty ScriptReturnData"); return(new ScriptReturnData()); } ScriptType type; if ((byte)script[0] >= (byte)ScriptType.Count) { type = ScriptType.OBMMScript; } else { type = (ScriptType)script[0]; script = script.Substring(1); } Utils.Debug($"ScriptType is {type.ToString()}"); var handler = new SharedFunctionsHandler(type, ref scriptFunctions); var srd = new ScriptReturnData(); var dotNetScriptFunctions = new Lazy <DotNetScriptFunctions>(() => new DotNetScriptFunctions(srd, dataPath, pluginsPath, ref handler)).Value; switch (type) { case ScriptType.OBMMScript: return(OBMMScriptHandler.Execute(script, dataPath, pluginsPath, ref handler)); case ScriptType.Python: //TODO break; case ScriptType.CSharp: DotNetScriptHandler.ExecuteCS(script, ref dotNetScriptFunctions); break; case ScriptType.VB: DotNetScriptHandler.ExecuteVB(script, ref dotNetScriptFunctions); break; case ScriptType.Count: //Impossible Utils.Error("Impossible switch case triggered, how dafuq did this happen?"); break; default: //Impossible Utils.Error("Impossible switch case triggered, how dafuq did this happen?"); return(srd); } return(srd); }