Example #1
0
    /// <summary>
    /// 转换状态
    /// </summary>
    /// <param name="aiRule"></param>
    public void PerformRule(AIrule aiRule)
    {
        if (aiRule == AIrule.NullAIrule)
        {
            Debug.LogError("PerformRule Error:NullAIrule");
            return;
        }

        AIEvent aiEvent = currentAIFSM.GetOutputState(aiRule);

        if (aiEvent == AIEvent.NullEvent)
        {
            Debug.LogError("PerformRule Error:NullEvent");
            return;
        }

        currentAIEvent = aiEvent;
        for (int i = 0; i < aiFSMs.Count; i++)
        {
            if (aiFSMs[i].AiEvent == currentAIEvent)
            {
                currentAIFSM.DoBeforeLeaving();
                currentAIFSM = aiFSMs[i];
                currentAIFSM.DoBeforeEntering();
                return;
            }
        }
    }
Example #2
0
 /// <summary>
 /// 获取AI规则对应事件
 /// </summary>
 /// <param name="aIrule"></param>
 /// <returns></returns>
 public AIEvent GetOutputState(AIrule aIrule)
 {
     if (AI_RE_FSM.ContainsKey(aIrule))
     {
         return(AI_RE_FSM[aIrule]);
     }
     return(AIEvent.NullEvent);
 }
Example #3
0
 /// <summary>
 /// 删除键值AI规则与事件对应关系
 /// </summary>
 /// <param name="aIrule"></param>
 public void DelAIEventAndEvent(AIrule aIrule)
 {
     if (AI_RE_FSM.ContainsKey(aIrule))
     {
         AI_RE_FSM.Remove(aIrule);
     }
     else
     {
         Debug.LogError("AIFSM ERROR: AI规则与事件关联中并不包含此规则");
     }
 }
Example #4
0
 /// <summary>
 /// 添加键值AI规则与事件对应关系
 /// </summary>
 /// <param name="aIrule"></param>
 /// <param name="aIEvent"></param>
 public void AddAIEventAndEvent(AIrule aIrule, AIEvent aIEvent)
 {
     if (aIrule == AIrule.NullAIrule)
     {
         Debug.LogError("AIFSM ERROR: NullAIrule 不允许对应 AIrule");
         return;
     }
     if (aIEvent == AIEvent.NullEvent)
     {
         Debug.LogError("AIFSM ERROR: NullEvent 不允许对应 AIEvent");
         return;
     }
     if (AI_RE_FSM.ContainsKey(aIrule))
     {
         Debug.LogError("AIFSM ERROR: 已经存在相同AIrule." + aIrule.ToString() + "作为Key");
         return;
     }
     AI_RE_FSM.Add(aIrule, aIEvent);
 }