protected IEnumerator _IEHandlePair(ILeeBoardItem a, ILeeBoardItem b)
        {
            _ResetPairHandler();
            a.state    = ELeeBoardItemState.SELECTED; b.state = ELeeBoardItemState.SELECTED;
            a.distance = 0; b.distance = 0;

            int cur = 0; bool exist = false;

            _q.Enqueue(a); _q.Enqueue(b);
            _was[a.row, a.column] = 1;
            _was[b.row, b.column] = -1;

            while (!exist && _q.Count != 0)
            {
                while (!exist && _q.Count != 0 && cur == _q.Peek().distance)
                {
                    exist = ((_middlePoint = _HandleItem(_q.Dequeue())) != null);
                }

                ++cur;
                yield return(new WaitForSeconds(_stepDelay));
            }

            isValid = exist;

            if (exist)
            {
                List <ILeeBoardItem> path = new List <ILeeBoardItem>();
                Debug.Log("EXIST");
                yield return(StartCoroutine(
                                 _IERestorePath(a, b, _middlePoint, path)));


                var way = new LeeAlgorithmWay(a, b, path);
            }

            a.state = ELeeBoardItemState.DEFAULT; b.state = ELeeBoardItemState.DEFAULT;
        }
Exemple #2
0
 public void SetWay(LeeAlgorithmWay way)
 {
     _ways.AddWay(currentFrom, currentTo, way);
 }