예제 #1
0
    /// <summary>
    /// 添加延迟AI对象,返回唯一ID号。
    /// </summary>
    /// <typeparam name="TResult"></typeparam>
    /// <param name="entity"></param>
    /// <param name="callback"></param>
    /// <param name="iterator"></param>
    /// <returns></returns>
    public int AddDelayAi <TResult>(TileEntity entity, Action <DelayAiObject <TResult> > callback, IEnumerator <TResult> iterator)
    {
        int uniqueId = ++_aiUniqueId;
        var ai       = new DelayAiObject <TResult>(uniqueId, entity, callback, iterator);

        _aiList.Add(ai);
        _aiHash.Add(uniqueId, ai);
        return(uniqueId);
    }
예제 #2
0
    /// <summary>
    /// 延迟计算回调函数
    /// </summary>
    /// <param name="delayAI"></param>
    private void OnDelayLockTargetersCompleted(DelayAiObject <IsoGridTarget> delayAI)
    {
        m_tempTargetPos = null;
        m_tempMoveRoute = null;
        //Entity.State = EntityStateType.Thinking;
        IsoGridTarget targetInfos = delayAI.result;

        Assert.Should(targetInfos != null && targetInfos.MoveRoute != null);
        if (targetInfos.MoveRoute.Count > 1)
        {
            m_tempMoveRoute = targetInfos.MoveRoute;
        }
        m_tempTargeters = AuxConvertToList(targetInfos.Targeter);

        //  执行行动
        DoAction();
    }