Exemplo n.º 1
0
Arquivo: Lua.cs Projeto: ItsKaa/Ditto
 public static void ExecuteMethods(
     LuaScriptMethods scriptMethods,
     IGuild guild,
     IUserMessage user_message = null,
     IUser user     = null,
     IRole role     = null,
     bool roleAdded = false
     )
 {
     if (_scripts.TryGetValue(guild, out ConcurrentList <LuaScript> luaScripts))
     {
         foreach (var luaScript in luaScripts)
         {
             if (user != null)
             {
                 luaScript.Lua.User = user;
             }
             luaScript.Lua.Guild       = guild;
             luaScript.Lua.UserMessage = user_message;
             luaScript.Lua.Role        = role;
             luaScript.Lua.RoleAdded   = roleAdded;
             ExecuteMethod(luaScript, scriptMethods);
         }
     }
 }
Exemplo n.º 2
0
Arquivo: Lua.cs Projeto: ItsKaa/Ditto
        public static bool ExecuteMethod(LuaScript luaScript, LuaScriptMethods scriptMethods)
        {
            var scriptResult = LuaHandler.Run(luaScript);

            if (scriptResult != null)
            {
                var func = GetMethodFromScript(luaScript, scriptMethods);
                if (func != null)
                {
                    var funcResult = luaScript.Script.Call(func);
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 3
0
Arquivo: Lua.cs Projeto: ItsKaa/Ditto
        public static Closure GetMethodFromScript(LuaScript luaScript, LuaScriptMethods scriptMethod)
        {
            foreach (var value in Enum.GetValues(typeof(LuaScriptMethods)).OfType <LuaScriptMethods>())
            {
                // Enum.Parse
                if (scriptMethod.HasFlag(value))
                {
                    try
                    {
                        var scriptMethodKey = luaScript.Script.Globals.Keys.FirstOrDefault(k =>
                                                                                           k.Type == DataType.String && string.Equals(k.String, value.ToString(), StringComparison.CurrentCultureIgnoreCase)
                                                                                           );

                        if (scriptMethodKey != null && luaScript.Script.Globals[scriptMethodKey.String] is Closure func)
                        {
                            return(func);
                        }
                    }
                    catch { }
                }
            }
            return(null);
        }