public async Task CellClickedAsync(BoardCellModel model)
        {
            if (gameState.Game.Status == GameStatus.EnemyTurn)
            {
                return;
            }
            if (gameState.SelectedCellModel != null)
            {
                await chessBroadCaster.MoveToAsync(new Position(gameState.SelectedCellModel.X, gameState.SelectedCellModel.Y), new Position(model.X, model.Y));

                gameState.SelectedCellModel = null;
                DropState();
            }
            else
            {
                if (model.Piece != null && model.Piece.Color == gameState.Game.PlayerColor)
                {
                    gameState.SelectedCellModel = model;
                    model.IsSelected            = true;
                    foreach (var piece in await chessBroadCaster.GetAllowableMovesAsync(new Position(model.X, model.Y)))
                    {
                        gameState.BoardCellModels.First(m => m.X == piece.X && m.Y == piece.Y).IsMovementHint = true;
                    }
                }
            }
        }
    internal override void Init()
    {
        Player1       = new Player(Players.player1, ElementTypes.cross);
        Player2       = new VirtualPlayer(Players.player2, ElementTypes.dot);
        _curentPlayer = Player1;
        _gameState    = GameState.started;

        BoardCellModels = new BoardCellModel[BoardManager.Instance.BoardWidth, BoardManager.Instance.BoardHeigh];
        for (int i = 0; i < BoardManager.Instance.BoardWidth; i++)
        {
            for (int j = 0; j < BoardManager.Instance.BoardHeigh; j++)
            {
                var cellModel = new BoardCellModel(ElementTypes.none);
                cellModel.ElementType = ElementTypes.none;
                BoardCellModels[i, j] = cellModel;
            }
        }
        NotifyTurn();
    }