//-------------------------------------------------------------------------------- //스왑 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]); } } }
//-------------------------------------------------------------------------------- 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); }