コード例 #1
0
ファイル: LuaClassCommon.cs プロジェクト: oinkgms/catan-lwf
        //
        protected static bool get_boolean(ILuaState lua, int idx, string key)
        {
            idx = LuaVM.NormalizeIndex(lua, idx);
            lua.GetField(idx, key);
            bool b = lua.ToBoolean(-1);

            lua.Pop(1);
            return(b);
        }
コード例 #2
0
ファイル: LuaClassCommon.cs プロジェクト: oinkgms/catan-lwf
        //
        protected static T get_member <T>(ILuaState lua, int idx, string key)
        {
            idx = LuaVM.NormalizeIndex(lua, idx);
            lua.GetField(idx, key);
            T obj = (T)lua.ToUserData(-1);

            lua.Pop(1);
            return(obj);
        }
コード例 #3
0
ファイル: LuaClassCommon.cs プロジェクト: oinkgms/catan-lwf
 // スタック上の指定インデクスから指定個数の要素をテーブルにセットする
 protected static void set_value_to_table(ILuaState lua, int dst, int src, int nval)
 {
     dst = LuaVM.NormalizeIndex(lua, dst);
     src = LuaVM.NormalizeIndex(lua, src);
     for (int i = 1; i <= nval; ++i)
     {
         lua.PushValue(src + i - 1);
         lua.RawSetI(dst, i);
     }
 }
コード例 #4
0
ファイル: LuaClassCommon.cs プロジェクト: oinkgms/catan-lwf
        // スタック上の指定位置にあるテーブルの要素をコピーする
        protected static void copy_table(ILuaState lua, int dst, int src)
        {
            dst = LuaVM.NormalizeIndex(lua, dst);
            src = LuaVM.NormalizeIndex(lua, src);
            int sz = lua.RawLen(src);

            for (int i = 1; i <= sz; ++i)
            {
                lua.RawGetI(src, i);
                lua.RawSetI(dst, i);
            }
        }
コード例 #5
0
 public int InvokeScriptFunction(ILuaState lua, string funcname, int narg)
 {
     if (_script != null && _script.HasFunction(funcname))
     {
         PushSelfTable(lua);
         if (narg > 0)
         {
             lua.Insert(LuaVM.NormalizeIndex(lua, -(narg + 1)));
         }
         return(_script.InvokeFunction(lua, funcname, narg + 1));
     }
     return(0);
 }
コード例 #6
0
            internal int InvokeFunction(ILuaState lua, string funcname, int narg, int selftable = LuaConstants.LUA_NOREF)
            {
                LuaVM.Assert(lua, _functions.ContainsKey(funcname));
                int key = _functions[funcname];

                lua.RawGetI(LuaDef.LUA_REGISTRYINDEX, key);
                int b = LuaVM.NormalizeIndex(lua, -(narg + 1));

                lua.Insert(b);
                int nresult = invoke_function(lua, narg, selftable);

                return(nresult);
            }
コード例 #7
0
            internal int invoke_function(ILuaState lua, int narg, int selftable = LuaConstants.LUA_NOREF)
            {
                int top = lua.GetTop() - (narg + 1);

                // insert `traceback' function
                lua.PushCSharpFunction(Traceback);
                int b = LuaVM.NormalizeIndex(lua, -(narg + 2));

                lua.Insert(b);
                var status = lua.PCall(narg, LuaDef.LUA_MULTRET, b);

                if (status != ThreadStatus.LUA_OK)
                {
                    Debug.LogError(status);
                    Debug.LogError(lua.ToString(-1));
                }
                // remove `traceback' function
                lua.Remove(b);
                return(lua.GetTop() - top);
            }
コード例 #8
0
ファイル: LuaUtilLib.cs プロジェクト: oinkgms/catan-lwf
        public static Color ToColor(ILuaState lua, int idx)
        {
            idx = LuaVM.NormalizeIndex(lua, idx);
            check_value(lua, idx);
            int n = lua.GetTop();

            lua.RawGetI(idx, 1);
            float r = (float)lua.ToNumber(-1);

            lua.RawGetI(idx, 2);
            float g = (float)lua.ToNumber(-1);

            lua.RawGetI(idx, 3);
            float b = (float)lua.ToNumber(-1);

            lua.RawGetI(idx, 4);
            float a = (float)lua.ToNumber(-1);

            lua.SetTop(n);
            return(new Color(r, g, b, a));
        }
コード例 #9
0
ファイル: LuaClassCommon.cs プロジェクト: oinkgms/catan-lwf
 //
 protected static void set_member <T>(ILuaState lua, int idx, string key, T obj)
 {
     idx = LuaVM.NormalizeIndex(lua, idx);
     lua.PushLightUserData(obj);
     lua.SetField(idx, key);
 }
コード例 #10
0
ファイル: LuaClassCommon.cs プロジェクト: oinkgms/catan-lwf
 //
 protected static void set_boolean(ILuaState lua, int idx, string key, bool b)
 {
     idx = LuaVM.NormalizeIndex(lua, idx);
     lua.PushBoolean(b);
     lua.SetField(idx, key);
 }