Ejemplo n.º 1
0
 public void ObjectClicked()
 {
     // Если интерфейс заблокирован, то выбирать ходить нельзя
     if (gameController.interfaceLocked)
     {
         return;
     }
     // Убираем выделение
     PieceController.ClearSelection();
 }
Ejemplo n.º 2
0
    /// <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
                );
        }
    }