public void ObjectClicked() { // Если интерфейс заблокирован, то выбирать ходить нельзя if (gameController.interfaceLocked) { return; } // Убираем выделение PieceController.ClearSelection(); }
/// <summary> /// Запуск анимации перемещения фигуры. Ход фигуры на BoardState выполняется после завершения анимации. /// </summary> /// <param name="move"></param> public void BeginMove(FigureMove move) { // Блокируем интерфейс interfaceLocked = true; // Убираем выделение PieceController.ClearSelection(); // Убираем все красные линии foreach (GameObject redLine in redLines) { Destroy(redLine); } redLines.Clear(); // Находим GameObject фигуры Transform piece = FindTransformByPos(move.from); // Перемещаем спрайт на слой выше SpriteRenderer spriteRenderer = piece.GetChild(0).GetComponent <SpriteRenderer>(); spriteRenderer.sortingLayerName = "CurrentPiece"; currentMovingPiece = piece; // Запускаем анимацию MoveAnimation moveAnimation = piece.GetComponent <MoveAnimation>(); currentMove = move; moveAnimation.StartAnimation( beginPos: new Vector3(move.from.x, move.from.y), endPos: new Vector3(move.to.x, move.to.y), finishedCallback: EndMove ); // При рокировке запускаем анимацию для ладьи if (move.GetType() == typeof(CastlingMove)) { // Находим GameObject ладьи CastlingMove castlingMove = (CastlingMove)move; Transform rook = FindTransformByPos(castlingMove.rookFrom); // Запускаем анимацию MoveAnimation rookMoveAnimation = rook.GetComponent <MoveAnimation>(); rookMoveAnimation.StartAnimation( beginPos: new Vector3(castlingMove.rookFrom.x, castlingMove.rookFrom.y), endPos: new Vector3(castlingMove.rookTo.x, castlingMove.rookTo.y), finishedCallback: null ); } }