Exemple #1
0
    //--------------------------------------------------------------------------------
    //스왑 Move가 끝났을 경우에 실행
    public void OnEventEndSwap(List <PieceMoveHandler> moveList)
    {
        Debug.Log("PanelBoard::OnEventEndSwap");
        //match된 Piece들 받을 리스트
        List <Node> matchList = new List <Node>();

        //움직인 Piece들 기준으로 ThreeMatch 검사
        for (int i = 0; i < moveList.Count; ++i)
        {
            //매치된 리스트 받아옴
            List <Node> tempList = CheckThreeMatch(moveList[i].targetNode.Index);
            //하나의 리스트로 합친다
            MergeNodeList(matchList, tempList);
        }

        //매치된게 없다면 다시 되돌려야 함
        if (matchList.Count == 0)
        {
            //콤보 체크 해제
            //mIsComboCheck = false;

            //스왑으로 이동했으므로 moveList는 2개
            PieceMoveEvent moveEvent = new PieceMoveEvent();

            Node  aNode  = moveList[0].targetNode;
            Node  bNode  = moveList[1].targetNode;
            Piece aPiece = aNode.piece;
            Piece bPiece = bNode.piece;

            moveEvent.AddMoveHandler(new PieceMoveHandler(aPiece, bNode));
            moveEvent.AddMoveHandler(new PieceMoveHandler(bPiece, aNode));

            SetPieceToNode(bPiece, aNode);
            SetPieceToNode(aPiece, bNode);

            PieceMoveManager.Instance.AddMoveEvent(moveEvent);
        }
        else
        {
            //콤보체크 재시작
            //mIsComboCheck = true;

            //매치된 리스트들 전부 삭제
            for (int i = 0; i < matchList.Count; ++i)
            {
                DestroyPiece(matchList[i]);
            }
        }
    }
Exemple #2
0
    //--------------------------------------------------------------------------------
    public void MoveToSwap(Node a, Node b)
    {
        //MoveEvent 생성
        PieceMoveEvent moveEvent = new PieceMoveEvent();

        Piece aPiece = a.piece;
        Piece bPiece = b.piece;

        //aPiece는 bNode로, bPiece는 aNode로 이동
        moveEvent.AddMoveHandler(new PieceMoveHandler(aPiece, b));
        moveEvent.AddMoveHandler(new PieceMoveHandler(bPiece, a));

        //aPiece.transform.DOPunchScale(Vector3.one, 0.4f , 2 ,3);
        //bPiece.transform.DOPunchScale(Vector3.one, 0.4f , 2 ,3);

        //해당 Piece들 이동할 Node에 바인딩
        SetPieceToNode(bPiece, a);
        SetPieceToNode(aPiece, b);
        //이동 끝났을 때 알림받을 함수 바인딩
        moveEvent.EventMoveEnd += OnEventEndSwap;
        PieceMoveManager.Instance.AddMoveEvent(moveEvent);
    }