private void Update()
    {
        whiteKingFreeMove = checkKingFreeMove(true);
        blackKingFreeMove = checkKingFreeMove(false);
        UpdateSelection();
        DrawChessboard();

        if (isMoving)
        {
            //Debug.Log("in ismoving");
            if (selectedChessman.transform.position != target)
            {
                selectedChessman.transform.position = Vector3.MoveTowards(selectedChessman.transform.position, target, smoothing * Time.deltaTime);
            }
            else
            {
                BoardHighlight.Instance.Hidehighlights();
                isMoving = false;
                Chessmans[selectedChessman.CurrentX, selectedChessman.CurrentZ] = null;
                Chessmans[(int)target.x, (int)target.z] = selectedChessman;
                selectedChessman.setPosition((int)target.x, (int)target.z);
                if (selectedChessman.GetType() == typeof(Pawn) && ((int)target.z == 7 || (int)target.z == 0))
                {
                    if (selectedChessman.isWhite)
                    {
                        SpawnChessman(1, (int)target.x, (int)target.z);
                    }
                    else
                    {
                        SpawnChessman(7, (int)target.x, (int)target.z);
                    }
                    activeChessmans.Remove(selectedChessman.gameObject);
                    Destroy(selectedChessman.gameObject);
                }

                selectedChessman = null;
                isWhiteTurn      = !isWhiteTurn;
                if (isWhiteTurn)
                {
                    Invoke("MoveCamera_To_White", 0.5f);
                }
                else
                {
                    Invoke("MoveCamera_To_Black", 0.5f);
                }
            }
        }
        else if (Input.GetMouseButtonDown(0))
        {
            //Debug.Log("mouseclick");
            //print("pint");
            //if (Input.GetMouseButtonDown(0))
            //if(Input.GetKeyDown(KeyCode.Space))
            //Debug.Log(selectionX + " " + selectionZ);
            if (selectionX >= 0 && selectionZ >= 0)
            {
                if (selectedChessman == null)
                {
                    //Debug.Log("selecting");
                    //not selected one. select chessman
                    Slectchessman(selectionX, selectionZ);
                }
                else
                {
                    Debug.Log("move function calling");
                    //already selected. now move
                    MoveChessman(selectionX, selectionZ);
                    //Debug.Log("active chessman : " + activeChessmans.Count);
                }
            }
        }
    }
    private void moveChessman(int x, int y)
    {
        if (allowedMoves[x, y])
        {
            Chessman enemieChessman = Chessmans[x, y];

            bool win = true;
            if (enemieChessman != null && enemieChessman.isFirstPlayer != isFirstPlayerTurn)
            {
                Type typeOfEnemie        = enemieChessman.GetType();
                Type typeOfSelecedFigure = selectedChessman.GetType();


                // if it is the Flagbearer end the game
                if (typeOfEnemie == typeof(FlagFigure))
                {
                    endTheGame();
                    activeChessman.Remove(enemieChessman.gameObject);
                    Destroy(enemieChessman.gameObject);
                    return;
                }
                if (typeOfSelecedFigure == typeof(RockFigure) && typeOfEnemie == typeof(PaperFigure))
                {
                    activeChessman.Remove(selectedChessman.gameObject);
                    Destroy(selectedChessman.gameObject);
                    win = false;
                }
                if (typeOfSelecedFigure == typeof(RockFigure) && typeOfEnemie == typeof(ScissorsFigure))
                {
                    activeChessman.Remove(enemieChessman.gameObject);
                    Destroy(enemieChessman.gameObject);
                    win = true;
                }
                if (typeOfSelecedFigure == typeof(ScissorsFigure) && typeOfEnemie == typeof(RockFigure))
                {
                    activeChessman.Remove(selectedChessman.gameObject);
                    Destroy(selectedChessman.gameObject);
                    win = false;
                }
                if (typeOfSelecedFigure == typeof(ScissorsFigure) && typeOfEnemie == typeof(PaperFigure))
                {
                    activeChessman.Remove(enemieChessman.gameObject);
                    Destroy(enemieChessman.gameObject);
                    win = true;
                }
                if (typeOfSelecedFigure == typeof(PaperFigure) && typeOfEnemie == typeof(RockFigure))
                {
                    activeChessman.Remove(enemieChessman.gameObject);
                    Destroy(enemieChessman.gameObject);
                    win = true;
                }
                if (typeOfSelecedFigure == typeof(PaperFigure) && typeOfEnemie == typeof(ScissorsFigure))
                {
                    activeChessman.Remove(selectedChessman.gameObject);
                    Destroy(selectedChessman.gameObject);
                    win = false;
                }
                if (typeOfSelecedFigure == typeOfEnemie)
                {
                    // newChoice
                }
                if (typeOfEnemie == typeof(TrapeFigure))
                {
                    activeChessman.Remove(selectedChessman.gameObject);
                    Destroy(selectedChessman.gameObject);
                    win = false;
                }
            }

            if (win)
            {
                // execute move
                Chessmans[selectedChessman.CurrentX, selectedChessman.CurrentY] = null;
                selectedChessman.transform.position = GetTileCenter(x, y);
                selectedChessman.setPosition(x, y);
                Chessmans[x, y] = selectedChessman;
            }



            isFirstPlayerTurn = !isFirstPlayerTurn;
        }
        BoardHighlights.Instance.hidehighlights();
        selectedChessman = null;
    }