Пример #1
0
    public static void UpdateAction(ref LCharacterAction curAction, List <LCharacterAction> actions, LCharacterInterface character, LChatacterInformationInterface information)
    {
        if (pauseActions)
        {
            return;
        }
        if (null != curAction)
        {
            if (curAction.isFinish(character, information))
            {
                //if (character.IsAI())
                // Debug.Log("end by self" + curAction.ToString());
                curAction.endAction(character, information);


                curAction = null;
            }
        }
        LCharacterAction oldAciton = curAction;

        for (int i = 0, c = actions.Count; i < c; i++)
        {
            var a = actions[i];
            if ((curAction == null || a.GetPriority() > curAction.GetPriority()) && a.isQualified(curAction, character, information))
            {
                if (character.IsAI())
                {
                    if (null != curAction)
                    {
                        Debug.Log(curAction.ToString() + " " + curAction.priority + " " + a.ToString() + "  " + a.priority);
                    }
                }
                curAction = a;
            }
        }
        if (curAction != oldAciton || (null == curAction))
        {
            if (null != oldAciton)
            {
                oldAciton.endAction(character, information);
            }

            curAction.beginAction(character, information);
        }
        if (null != curAction)
        {
            curAction.doAction(character, information);
        }
        //beginAction
    }