Exemple #1
0
    static int GetFsm(IntPtr L)
    {
        try
        {
            int count = LuaDLL.lua_gettop(L);

            if (count == 2 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.FsmComponent), typeof(System.Type)))
            {
                UnityGameFramework.Runtime.FsmComponent obj = (UnityGameFramework.Runtime.FsmComponent)ToLua.ToObject(L, 1);
                System.Type arg0            = (System.Type)ToLua.ToObject(L, 2);
                GameFramework.Fsm.FsmBase o = obj.GetFsm(arg0);
                ToLua.PushObject(L, o);
                return(1);
            }
            else if (count == 3 && TypeChecker.CheckTypes(L, 1, typeof(UnityGameFramework.Runtime.FsmComponent), typeof(System.Type), typeof(string)))
            {
                UnityGameFramework.Runtime.FsmComponent obj = (UnityGameFramework.Runtime.FsmComponent)ToLua.ToObject(L, 1);
                System.Type arg0            = (System.Type)ToLua.ToObject(L, 2);
                string      arg1            = ToLua.ToString(L, 3);
                GameFramework.Fsm.FsmBase o = obj.GetFsm(arg0, arg1);
                ToLua.PushObject(L, o);
                return(1);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "invalid arguments to method: UnityGameFramework.Runtime.FsmComponent.GetFsm"));
            }
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Exemple #2
0
        /// <summary>
        /// 销毁有限状态机。
        /// </summary>
        /// <param name="fsm">要销毁的有限状态机。</param>
        /// <returns>是否销毁有限状态机成功。</returns>
        public bool DestroyFsm(FsmBase fsm)
        {
            if (fsm == null)
            {
                throw new GameFrameworkException("FSM is invalid.");
            }

            return(InternalDestroyFsm(Utility.Text.GetFullName(fsm.OwnerType, fsm.Name)));
        }
Exemple #3
0
        /// <summary>
        /// 销毁有限状态机。
        /// </summary>
        /// <param name="fsm">要销毁的有限状态机。</param>
        /// <returns>是否销毁有限状态机成功。</returns>
        public bool DestroyFsm(FsmBase fsm)
        {
            if (fsm == null)
            {
                throw new GameFrameworkException("FSM is invalid.");
            }

            return(InternalDestroyFsm(new TypeNamePair(fsm.OwnerType, fsm.Name)));
        }
Exemple #4
0
        private FsmBase InternalGetFsm(string fullName)
        {
            FsmBase fsm = null;

            if (m_Fsms.TryGetValue(fullName, out fsm))
            {
                return(fsm);
            }

            return(null);
        }
        /// <summary>
        /// 获取有限状态机。
        /// </summary>
        /// <typeparam name="T">有限状态机持有者类型。</typeparam>
        /// <param name="name">有限状态机名称。</param>
        /// <returns>要获取的有限状态机。</returns>
        public IFsm <T> GetFsm <T>(string name) where T : class
        {
            FsmBase fsm = null;

            if (m_Fsms.TryGetValue(Utility.Text.GetFullName <T>(name), out fsm))
            {
                return((IFsm <T>)fsm);
            }

            return(null);
        }
Exemple #6
0
        private FsmBase InternalGetFsm(TypeNamePair typeNamePair)
        {
            FsmBase fsm = null;

            if (m_Fsms.TryGetValue(typeNamePair, out fsm))
            {
                return(fsm);
            }

            return(null);
        }
Exemple #7
0
        public bool DestroyFsm <T>(string name) where T : class
        {
            FsmBase fsm = null;

            if (m_Fsms.TryGetValue(name, out fsm))
            {
                fsm.Shutdown();
                return(m_Fsms.Remove(name));
            }
            return(false);
        }
Exemple #8
0
        private bool InternalDestroyFsm(string fullName)
        {
            FsmBase fsm = null;

            if (m_Fsms.TryGetValue(fullName, out fsm))
            {
                fsm.Shutdown();
                return(m_Fsms.Remove(fullName));
            }
            return(false);
        }
Exemple #9
0
        /// <summary>
        /// 获取所有有限状态机。
        /// </summary>
        /// <returns>所有有限状态机。</returns>
        public FsmBase[] GetAllFsms()
        {
            int index = 0;

            FsmBase[] results = new FsmBase[m_Fsms.Count];
            foreach (KeyValuePair <string, FsmBase> fsm in m_Fsms)
            {
                results[index++] = fsm.Value;
            }

            return(results);
        }
Exemple #10
0
        private bool InternalDestroyFsm(TypeNamePair typeNamePair)
        {
            FsmBase fsm = null;

            if (m_Fsms.TryGetValue(typeNamePair, out fsm))
            {
                fsm.Shutdown();
                return(m_Fsms.Remove(typeNamePair));
            }

            return(false);
        }
        /// <summary>
        /// 获取所有有限状态机。
        /// </summary>
        /// <returns>所有有限状态机。</returns>
        public FsmBase[] GetAllFsms()
        {
            int index = 0;

            FsmBase[] fsms = new FsmBase[m_Fsms.Count];
            foreach (FsmBase fsm in m_Fsms.Values)
            {
                fsms[index++] = fsm;
            }

            return(fsms);
        }
        /// <summary>
        /// 销毁有限状态机。
        /// </summary>
        /// <typeparam name="T">有限状态机持有者类型。</typeparam>
        /// <param name="name">要销毁的有限状态机名称。</param>
        /// <returns>是否销毁有限状态机成功。</returns>
        public bool DestroyFsm <T>(string name) where T : class
        {
            string  fullName = Utility.Text.GetFullName <T>(name);
            FsmBase fsm      = null;

            if (m_Fsms.TryGetValue(fullName, out fsm))
            {
                fsm.Shutdown();
                return(m_Fsms.Remove(fullName));
            }

            return(false);
        }