Esempio n. 1
0
        void Update()
        {
            var mousePos = cam.ScreenToWorldPoint(Input.mousePosition);

            if (Input.GetMouseButtonDown(1))
            {
                isDrawing = boardUI.TryGetSquareUnderMouse(mousePos, out startCoord);
            }

            if (isDrawing && Input.GetMouseButtonUp(1))
            {
                Coord endCoord;
                if (boardUI.TryGetSquareUnderMouse(mousePos, out endCoord))
                {
                    isDrawing = false;
                    var col = (Input.GetKey(KeyCode.LeftShift)) ? arrowColB : arrowColA;
                    CreateArrow(boardUI.PositionFromCoord(startCoord), boardUI.PositionFromCoord(endCoord), col);
                }
            }

            if (Input.GetMouseButtonDown(0))
            {
                ClearArrows();
            }
        }
Esempio n. 2
0
        private void HandlePiecePlacement(Vector2 mousePos)
        {
            Coord targetSquare;

            if (boardUI.TryGetSquareUnderMouse(mousePos, out targetSquare))
            {
                if (targetSquare.Equals(selectedPieceSquare))
                {
                    boardUI.ResetPiecePosition(selectedPieceSquare);
                    if (currentState == InputState.DraggingPiece)
                    {
                        currentState = InputState.PieceSelected;
                    }
                    else
                    {
                        currentState = InputState.None;
                        boardUI.DeselectSquare(selectedPieceSquare);
                    }
                }
                else
                {
                    var targetIndex =
                        BoardRepresentation.IndexFromCoord(targetSquare.fileIndex, targetSquare.rankIndex);
                    if (Piece.IsColour(board.Square[targetIndex], board.ColourToMove) && board.Square[targetIndex] != 0)
                    {
                        CancelPieceSelection();
                        HandlePieceSelection(mousePos);
                    }
                    else
                    {
                        TryMakeMove(selectedPieceSquare, targetSquare);
                    }
                }
            }
            else
            {
                CancelPieceSelection();
            }
        }