public void ApplyBoard(BoardState boardState, Canvas canvas) { this.Canvas = canvas; foreach (int columnIndex in Column.AllIndices) { var column = boardState[columnIndex]; for (int i = 0; i < column.NumOfDisks; i++) { var disk = DiskElement.Create(column.Color); this.AddDiskToColumn(columnIndex, disk); canvas.Children.Add(disk); } } for (int i = 0; i < boardState.EatenBlacks; i++) { var disk = DiskElement.Create(GameColor.Black); this.AddDiskToBlackEatens(disk); canvas.Children.Add(disk); } for (int i = 0; i < boardState.EatenWhites; i++) { var disk = DiskElement.Create(GameColor.White); this.AddDiskToWhiteEatens(disk); canvas.Children.Add(disk); } }
private void AddDiskToWhiteEatens(DiskElement disk) { var position = CanvasPosition.CreateBottomLeft(85, 92.5); if (EatenWhites.Count > 0) { position = EatenWhites.First() .CanvasPosition .AddVertical(-15) .NormalizeVertically(eatensColumNormalization); } disk.CanvasPosition = position; EatenWhites.AddFirst(disk); }
private void AddDiskToColumn(int columnIndex, DiskElement disk) { if (this.DisksAtColumn[columnIndex].Count == 0) { disk.CanvasPosition = InitialCanvasPosition(columnIndex); } else { disk.CanvasPosition = this.DisksAtColumn[columnIndex] .First() .CanvasPosition .AddVertical(15) .NormalizeVertically(disksColumNormalization); } this.DisksAtColumn[columnIndex].AddFirst(disk); }