Ejemplo n.º 1
0
 /// <summary>
 /// 构造函数初始化
 /// </summary>
 /// <param name="beginState"></param>
 public VStateMachince(VStateBase beginState)
 {
     m_states   = new SortedList <int, VStateBase>();
     m_curState = beginState;
     RegState(CurState);
     CurState.Enter();
 }
Ejemplo n.º 2
0
    protected void Init()
    {
        Type[]            types = Assembly.GetExecutingAssembly().GetTypes();
        List <VStateBase> takes = new List <VStateBase>();

        object[] parms = new object[1];
        parms[0] = this;
        foreach (var item in types)
        {
            if (typeof(T) == item.BaseType)
            {
                VStateBase t = Activator.CreateInstance(item, parms) as VStateBase;
                if (t.ID == 0)
                {
                    m_SM = new VStateMachince(t);
                }
                else
                {
                    takes.Add(t);
                }
            }
        }
        foreach (var item in takes)
        {
            m_SM.RegState(item);
        }
    }
Ejemplo n.º 3
0
    /// <summary>
    /// 注册
    /// </summary>
    /// <param name="state"></param>
    public void RegState(VStateBase state)
    {
        int id = (int)(state.ID);

        if (m_states.ContainsKey(id))
        {
            Debug.Log(id + "已存在!");
            return;
        }
        m_states.Add(id, state);
        state.Machine = this;
    }
Ejemplo n.º 4
0
    /// <summary>
    /// 设置新的状态
    /// </summary>
    /// <param name="id">目标ID</param>
    /// <param name="args"></param>
    public void TranslateToState(int id)
    {
        int nId = (int)id;

        if (!m_states.ContainsKey(nId))
        {
            //Debug.Log("VStateMachine, 切换状态时没有找到目标状态"+ id.ToString());
            VMessageOut._instance.OutMessage("VStateMachine, 切换状态时没有找到目标状态" + id.ToString());
            return;
        }
        m_curState.Exit();
        m_curState = m_states[nId];
        m_curState.Enter();
    }