Ejemplo n.º 1
0
    public static int AddTimer(IntPtr L)
    {
        int       count = LuaDLL.lua_gettop(L);
        const int nRet  = 1;

        if (count == 4 && LuaScriptMgr.CheckTypes(L, 1, typeof(GameObject), typeof(double), typeof(bool), typeof(LuaFunction)))
        {
            GameObject obj = LuaScriptMgr.GetUnityObject <GameObject>(L, 1);
            if (obj == null)
            {
                HobaDebuger.LogError("AddTimer: param 1 must be GameObject");
                LuaDLL.lua_pushinteger(L, -1);
                return(GameUtilWrap.CheckReturnNum(L, count, nRet));
            }

            ObjectBehaviour comp = obj.GetComponent <ObjectBehaviour>();
            if (comp == null)
            {
                HobaDebuger.LogError("AddTimer: param 1 must have ObjectBehaviour");
                LuaDLL.lua_pushinteger(L, -1);
                return(GameUtilWrap.CheckReturnNum(L, count, nRet));
            }

            float ttl  = (float)LuaDLL.lua_tonumber(L, 2);
            bool  once = LuaDLL.lua_toboolean(L, 3);
            //LuaFunction cb = LuaScriptMgr.GetLuaFunction(L, 4);
            LuaDLL.lua_pushvalue(L, 4);
            int callbackRef = LuaDLL.luaL_ref(L, LuaIndexes.LUA_REGISTRYINDEX);
            int id          = comp.AddTimer(ttl, once, callbackRef, string.Empty);

            LuaDLL.lua_pushinteger(L, id);
            return(GameUtilWrap.CheckReturnNum(L, count, nRet));
        }
        else if (count == 5 && LuaScriptMgr.CheckTypes(L, 1, typeof(GameObject), typeof(double), typeof(bool), typeof(LuaFunction), typeof(string)))
        {
            GameObject obj = LuaScriptMgr.GetUnityObject <GameObject>(L, 1);
            if (obj == null)
            {
                HobaDebuger.LogError("AddTimer: param 1 must be GameObject");
                LuaDLL.lua_pushinteger(L, -1);
                return(GameUtilWrap.CheckReturnNum(L, count, nRet));
            }

            ObjectBehaviour comp = obj.GetComponent <ObjectBehaviour>();
            if (comp == null)
            {
                HobaDebuger.LogError("AddTimer: param 1 must have ObjectBehaviour");
                LuaDLL.lua_pushinteger(L, -1);
                return(GameUtilWrap.CheckReturnNum(L, count, nRet));
            }

            float ttl  = (float)LuaDLL.lua_tonumber(L, 2);
            bool  once = LuaDLL.lua_toboolean(L, 3);
            //LuaFunction cb = LuaScriptMgr.GetLuaFunction(L, 4);
            LuaDLL.lua_pushvalue(L, 4);
            int    callbackRef = LuaDLL.luaL_ref(L, LuaIndexes.LUA_REGISTRYINDEX);
            string debugInfo   = LuaScriptMgr.GetString(L, 5);

            int id = comp.AddTimer(ttl, once, callbackRef, debugInfo);

            LuaDLL.lua_pushinteger(L, id);
            return(GameUtilWrap.CheckReturnNum(L, count, nRet));
        }
        else
        {
            LogParamError("AddTimer", count);
            LuaDLL.lua_pushinteger(L, -1);
            return(GameUtilWrap.CheckReturnNum(L, count, nRet));
        }
    }