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(); }