public void CheckConnection(SinkPiece newPiece)
    {
        bool badConnection = true;

        if (newPiece.currentCell.cellDown == currentPiece.currentCell)
        {
            badConnection = false;
        }
        else if (newPiece.currentCell.cellUp == currentPiece.currentCell)
        {
            badConnection = false;
        }
        else if (newPiece.currentCell.cellLeft == currentPiece.currentCell)
        {
            badConnection = false;
        }
        else if (newPiece.currentCell.cellRight == currentPiece.currentCell)
        {
            badConnection = false;
        }
        if (badConnection)
        {
            ResetPieces();
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (canPlay)
        {
            if (mySelectButton.buttonPressed)
            {
                lvlToLoad = mySelectButton.lvlToLoad;
                if (chngLvlTimer >= setupLvlWaitTime && curntLvl != lvlToLoad && maxLvl >= lvlToLoad)
                {
                    chngLvlTimer = 0f;
                    ChangeLevelSetup();
                }
                mySelectButton.buttonPressed = false;
            }

            if (chngLvlTimer < setupLvlWaitTime)
            {
                chngLvlTimer += Time.deltaTime;                                                /* Debug.Log("do I ever run? Or am I just lazy like that?"); */
            }

            if (myLvls[curntLvl - 1].levelComplete)
            {
                /* Debug.Log("ya win m8!"); */
                SilverEggsSetup();
            }

            if (mySelectButton.buttonsOff)
            {
                mySelectButton.buttonsOff = false; mySelectButton.InteractableThreeDots(maxLvl, curntLvl);
            }
            if (myInput.Tapped)
            {
                UpdateMousePos(myInput.TapPosition);
                hit = Physics2D.Raycast(mousePos2D, Vector3.forward, 50f);
                if (hit)
                {
                    Debug.Log(hit.collider.gameObject.name);
                    if (hit.collider.CompareTag("Puzzle"))
                    {
                        currentPiece = hit.collider.gameObject.GetComponent <SinkPiece>();
                        if (currentPiece.pieceType == SinkPiece.pieceTypes.bubble)
                        {
                            currentPiece.matched = true;
                            ResetPieces();
                        }
                        else
                        {
                            ResetPieces();
                        }
                    }
                }
            }
            else if (myInput.isDragging)
            {
                if (firstTouch)
                {
                    UpdateMousePos(myInput.startDragTouch);
                    firstTouch = false;
                }
                else
                {
                    UpdateMousePos(myInput.draggingPosition);
                }
                hit = Physics2D.Raycast(mousePos2D, Vector3.forward, 50f);
                if (hit)
                {
                    Debug.Log(hit.collider.gameObject.name);
                    if (hit.collider.CompareTag("Puzzle") && canSelect)
                    {
                        if (currentHashCode != hit.collider.gameObject.GetHashCode())
                        {
                            currentHashCode = hit.collider.gameObject.GetHashCode();
                            if (myPieces.Count > 0)
                            {
                                CheckConnection(hit.collider.gameObject.GetComponent <SinkPiece>());
                            }
                            currentPiece = hit.collider.gameObject.GetComponent <SinkPiece>();
                            if (currentPiece.pieceType == SinkPiece.pieceTypes.bubble)
                            {
                                currentPiece.matched = true;
                                ResetPieces();
                            }
                            currentCellPos = hit.collider.gameObject.transform.position;
                            myPieces.Add(hit.collider.gameObject.GetComponent <SinkPiece>());
                            if (myPieces.Count == 1)
                            {
                                currentPiece.selected = true;
                                if (currentPiece.pieceType == SinkPiece.pieceTypes.sponge || currentPiece.pieceType == SinkPiece.pieceTypes.soap)
                                {
                                    if (currentPiece.pieceType == SinkPiece.pieceTypes.soap)
                                    {
                                        soapSelected = true;
                                    }
                                }
                                else
                                {
                                    ResetPieces();
                                }
                            }
                            else if (myPieces.Count < 5)
                            {
                                if (currentPiece.pieceType == SinkPiece.pieceTypes.dish)
                                {
                                    currentPiece.selected = true;
                                }
                                else
                                {
                                    ResetPieces();
                                }
                            }
                            else if (myPieces.Count == 5)
                            {
                                if (currentPiece.pieceType == SinkPiece.pieceTypes.soap)
                                {
                                    if (soapSelected)
                                    {
                                        ResetPieces();
                                    }
                                    else
                                    {
                                        MatchPieces();
                                    }
                                }
                                else if (currentPiece.pieceType == SinkPiece.pieceTypes.sponge)
                                {
                                    if (soapSelected)
                                    {
                                        MatchPieces();
                                    }
                                    else
                                    {
                                        ResetPieces();
                                    }
                                }
                                else
                                {
                                    ResetPieces();
                                }
                            }
                        }
                    }
                }
                else
                {
                    //Debug.Log(Vector2.Distance(currentCellPos,Camera.main.ScreenToWorldPoint(myInput.draggingPosition)));
                    if (Vector2.Distance(currentCellPos, Camera.main.ScreenToWorldPoint(myInput.draggingPosition)) > cellRadius && myPieces.Count > 0)
                    {
                        ResetPieces();
                    }
                }
            }
            else
            {
                ResetPieces();
                canSelect  = true;
                firstTouch = true;
            }
            if (Input.GetKey("r"))
            {
                myLvls[curntLvl - 1].ResetLevel();
                myLvls[curntLvl - 1].SetUpLevel();
            }
        }
        else
        {
            // When this Scene is loaded.
            if (initialSetupOn)
            {
                InitialSetup();
            }

            // After the initial set up run the first sequence.
            if (iniSeqStart)
            {
                if (iniSeqDelay > 0)
                {
                    iniSeqDelay -= Time.deltaTime;
                }
                else
                {
                    seqTimer += Time.deltaTime;
                    if (seqTimer > itemSpawnF && !itemSpawnB)
                    {
                        itemSpawnB = true; /* lvlItemHolders[curntLvl - 1].SetActive(true); */ LvlStuffFadeIn();
                    }
                    if (seqTimer > dotsSpawnF && !dotsSpawnB)
                    {
                        dotsSpawnB = true; mySelectButton.EnabledThreeDots(maxLvl); mySelectButton.InteractableThreeDots(maxLvl, curntLvl);
                    }
                    if (seqTimer > iniCanPlayF)
                    {
                        if (tutorialDone)
                        {
                            canPlay = true;
                            mySelectButton.InteractableThreeDots(maxLvl, curntLvl);
                            sceneTapScript.canTapPauseBtn = true;
                        }
                        else
                        {
                            slideInHelpScript.MoveBirdUpDown();
                        }
                        iniSeqStart = false;
                    }
                }
            }

            if (itemsWait)
            {
                itemWaitTimer += Time.deltaTime;
                if (itemWaitTimer > itemWaitAmnt)
                {
                    itemHolder.SetActive(true);

                    //for (int i = 0; i < resetTilesScript.tiles.Count; i++) // CONSIDER SAVING THE ITEM SCRIPTS TO ANOTHER LIST TO AVOID LOOPING 7 to 12 GETCOMPONENTS AT A TIME
                    //{ resetTilesScript.tiles[i].GetComponent<FadeInOutSprite>().FadeIn(); }

                    LvlStuffFadeIn();

                    itemsWait     = false;
                    itemWaitTimer = 0f;
                    canPlay       = true;
                    mySelectButton.InteractableThreeDots(maxLvl, curntLvl);
                }
            }


            if (setupChsnLvl)
            {
                ChosenLevelSetup(lvlToLoad);
            }
            // Turn off interaction for all three level select dots.
            if (!mySelectButton.buttonsOff)
            {
                mySelectButton.buttonsOff = true; mySelectButton.UninteractableThreeDots();
            }

            // #region Click On SilverEggs
            // // Clicking on a silver egg.
            // if (myInput.Tapped) {
            //  UpdateMousePos();
            //  hit = Physics2D.Raycast(mousePos2D, Vector3.forward, 50f);
            //  if (hit) {
            //      if (hit.collider.CompareTag("Egg")) {
            //          SilverEggs silEggTappedScript = hit.collider.gameObject.GetComponent<SilverEggs>();
            //          silEggTappedScript.StartSilverEggAnim();
            //          hit.collider.enabled = false;

            //          if (!silEggTappedScript.hollow) { mySilverEggMan.silverEggsPickedUp++; }
            //          mySilverEggMan.SaveSilverEggsToCorrectFile();
            //          mySilverEggMan.SaveNewSilEggsFound(mySilverEggMan.allSilEggs.IndexOf(hit.collider.gameObject));
            //          mySilverEggMan.amntSilEggsTapped++;
            //          SilverEggsCheck(); // Check if the Silver Eggs have all been collected.
            //      }
            //  }
            // }
            // #endregion
        }
        if (waitMethod)
        {
            if (waitTimer > 0)
            {
                waitTimer -= Time.deltaTime;
            }
            else
            {
                RunAfter(voidDelegate); waitMethod = false;
            }
        }
    }