internal void PlaceStone(StoneColor stoneColor, Position position) { var newNode = new GameTreeNode(Move.PlaceStone(stoneColor, position)); GameBoard fullBoardPosition; if (_currentGameTreeNode == null) { _currentGameTreeNode = newNode; fullBoardPosition = new GameBoard(new GameBoardSize(9)); } else { _currentGameTreeNode.Branches.Insert(0, newNode); fullBoardPosition = _currentGameTreeNode.BoardState; _currentGameTreeNode = newNode; } GameBoard newBoardPosition = new GameBoard(fullBoardPosition); newBoardPosition[position.X, position.Y] = stoneColor; _currentGameTreeNode.BoardState = newBoardPosition; GameTreeNodeChanged?.Invoke(this, _currentGameTreeNode); }
// Game Board Manipulation internal void ClearBoard() { _currentGameTreeNode = new GameTreeNode(Move.Pass(StoneColor.Black)); _currentGameTreeNode.BoardState = new GameBoard(new GameBoardSize(9)); GameTreeNodeChanged?.Invoke(this, _currentGameTreeNode); }