示例#1
0
 /// <summary>
 /// 添加一个状态
 /// </summary>
 /// <param name="flag"></param>
 /// <param name="state"></param>
 public void addState(FSM_Flag flag, BaseState state)
 {
     state.Flag  = flag;
     state.Agent = this.agent;
     if (!pool.ContainsKey(flag))
     {
         pool.Add(flag, state);
     }
 }
示例#2
0
 /// <summary>
 /// 接口 转换状态
 /// </summary>
 /// <param name="flag"></param>
 /// <param name="args"></param>
 public void transFsm(FSM_Flag flag, FSMArgs args = null, bool forceTrans = false)
 {
     if (this.fsm != null)
     {
         bool isSuccess = this.fsm.transFsm(flag, args, forceTrans);
         if (isSuccess)
         {
             Flag = flag;
         }
     }
 }
示例#3
0
    /// <summary>
    /// 转换状态
    /// </summary>
    /// <param name="flag"></param>
    /// <param name="args"></param>
    public bool transFsm(FSM_Flag flag, FSMArgs args = null, bool forceTrans = false)
    {
        bool isSuccess = false;

        if (pool.ContainsKey(flag))
        {
            if (currState == null || forceTrans || currState.allow(flag))
            {
                if (currState != null)
                {
                    currState.onExit();
                }
                currState = pool[flag];
                currState.onEnter(args);
                isSuccess = true;
            }
        }
        return(isSuccess);
    }
示例#4
0
 public virtual bool allow(FSM_Flag flag)
 {
     return(true);
 }
示例#5
0
 public override bool allow(FSM_Flag flag)
 {
     return(false);
 }
示例#6
0
 public override bool allow(FSM_Flag flag)
 {
     return(flag == FSM_Flag.Fall);
 }
示例#7
0
 public override bool allow(FSM_Flag flag)
 {
     return(flag != this.Flag);
 }