Exemple #1
0
    private void RollBackLastTileOverBoard()
    {
        BoardPieceScript lastBoardPiecesWithTilesAbove = boardPiecesWithTilesAbove[boardPiecesWithTilesAbove.Count - 1];

        lastBoardPiecesWithTilesAbove.ClearAboveTile();
        boardPiecesWithTilesAbove.Remove(lastBoardPiecesWithTilesAbove);
        tilePreview.CurrentTileIndex -= 1;
        UpdateLastTilePlacedOverBox();
    }
Exemple #2
0
    private void PlaceTileOverBoard(BoardPieceScript boardPiece)
    {
        try
        {
            TileColor  colorName = GameManagerScript.Instance.GetTileColor(tilePreview.GetCurrentTileColor());
            TileScript tile      = Instantiate(tilePrefab, transform).GetComponent <TileScript>();

            tile.InitTile(colorName, false, GameManagerScript.Instance.GetTilePoint(boardPiecesWithTilesAbove.Count));

            boardPiece.PlaceTileOver(tile, tileSpawnOffset);
            boardPiecesWithTilesAbove.Add(boardPiece);

            UpdateLastTilePlacedOverBox();

            tilePreview.CurrentTileIndex += 1;
        }
        catch
        {
            return;
        }
    }
Exemple #3
0
    private bool CheckTilePlacedOverAble(BoardPieceScript boardPiece)
    {
        bool isNextToLastTilePlacedOver = true;

        if (boardPiecesWithTilesAbove.Count > 0)
        {
            BoardPieceScript lastPlacedOverBoardPiece = boardPiecesWithTilesAbove[boardPiecesWithTilesAbove.Count - 1];
            isNextToLastTilePlacedOver =
                (boardPiece.X > 0 &&
                 boardPieces[boardPiece.X - 1, boardPiece.Y] == lastPlacedOverBoardPiece)
                ||
                (boardPiece.X < boardWidth - 1 &&
                 boardPieces[boardPiece.X + 1, boardPiece.Y] == lastPlacedOverBoardPiece)
                ||
                (boardPiece.Y > 0 &&
                 boardPieces[boardPiece.X, boardPiece.Y - 1] == lastPlacedOverBoardPiece)
                ||
                (boardPiece.Y < boardHeight - 1 &&
                 boardPieces[boardPiece.X, boardPiece.Y + 1] == lastPlacedOverBoardPiece);
        }

        return(isNextToLastTilePlacedOver);
    }
Exemple #4
0
    private void HandleInput()
    {
        if (Input.touchCount > 0)
        {
            switch (Input.GetTouch(0).phase)
            {
            case TouchPhase.Began:
            case TouchPhase.Moved:
                Vector3 worldPoint = Camera.main.ScreenToWorldPoint(Input.touches[0].position);
                if (lastTilePlacedOverBox.OverlapPoint(worldPoint))
                {
                    RollBackLastTileOverBoard();
                }
                else
                {
                    BoardPieceScript boardPiece = GetCurrentBoardPiece(worldPoint);
                    if (boardPiece != null && CheckTilePlacedOverAble(boardPiece))
                    {
                        PlaceTileOverBoard(boardPiece);
                    }
                }
                break;

            case TouchPhase.Ended:
                if (boardPiecesWithTilesAbove.Count >= minClearCount ||
                    tilePreview.TilesLeft == 0)
                {
                    PlaceTilesOnBoard();
                }
                else
                {
                    ResetTilesOverBoard();
                }
                break;
            }
        }

        if (Input.GetMouseButton(0))
        {
            Vector3 worldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            if (lastTilePlacedOverBox.OverlapPoint(worldPoint))
            {
                RollBackLastTileOverBoard();
            }
            else
            {
                BoardPieceScript boardPiece = GetCurrentBoardPiece(worldPoint);
                if (boardPiece != null && CheckTilePlacedOverAble(boardPiece))
                {
                    PlaceTileOverBoard(boardPiece);
                }
            }
        }
        else if (Input.GetMouseButtonUp(0))
        {
            if (boardPiecesWithTilesAbove.Count >= minClearCount ||
                tilePreview.TilesLeft == 0)
            {
                PlaceTilesOnBoard();
            }
            else
            {
                ResetTilesOverBoard();
            }
        }
        else if (Input.GetMouseButton(2))
        {
            ResetTilesOverBoard();
        }
    }