private void OnGameStateChanged(object sender, StateChangedEventArgs e) { if (e.TurnRecord.Promotion != null) { BoardGrid.Children.Remove(e.TurnRecord.Promotion.PiecePromoted.Visual); e.TurnRecord.Promotion.PiecePromoted.Visual = CapabilitiesToVisual( e.TurnRecord.Promotion.NewCapabilities, e.TurnRecord.Promotion.PiecePromoted.Side); AddPiece(e.TurnRecord.Promotion.PiecePromoted, e.TurnRecord.Move.To); } else { MovePiece(e.TurnRecord.Move.PieceMoved, e.TurnRecord.Move.To); } if (e.TurnRecord.SecondaryMove != null) { MovePiece(e.TurnRecord.SecondaryMove.PieceMoved, e.TurnRecord.SecondaryMove.To); } if (e.TurnRecord.Capture != null) { var pieceCaptured = e.TurnRecord.Capture.PieceCaptured; BoardGrid.Children.Remove(pieceCaptured.Visual); BoardCapturedPiecesPanel.AddPiece(pieceCaptured); } }
internal void RestorePiece(Piece pieceToRestore, BoardPosition placeAt) { var viewPosition = LogicalToViewPosition(placeAt); BoardCapturedPiecesPanel.RemovePiece(pieceToRestore); pieceToRestore.Visual.SetValue(Grid.ColumnProperty, viewPosition.Column); pieceToRestore.Visual.SetValue(Grid.RowProperty, viewPosition.Row); BoardGrid.Children.Add(pieceToRestore.Visual); }
private void OnSizeChanged(object sender, SizeChangedEventArgs e) { if (e.NewSize.Width > e.NewSize.Height) { BoardCapturedPiecesPanel.SetValue(Grid.RowProperty, 0); BoardCapturedPiecesPanel.SetValue(Grid.ColumnProperty, 1); BoardCapturedPiecesPanel.Orientation = Orientation.Vertical; } else { BoardCapturedPiecesPanel.SetValue(Grid.RowProperty, 1); BoardCapturedPiecesPanel.SetValue(Grid.ColumnProperty, 0); BoardCapturedPiecesPanel.Orientation = Orientation.Horizontal; } }
/// <summary> /// Display the current state of the model and listen for model state changed /// events so that we can update the display as needed. /// </summary> /// <param name="gameState"></param> internal void AssociateModel(IGameState gameState) { this.gameState = gameState; foreach (var piecePositionPair in gameState.ActivePiecePositions) { var piece = piecePositionPair.Key; var logicalPosition = piecePositionPair.Value; AddPiece(piece, logicalPosition); } foreach (var capturedPiece in gameState.CapturedPieces) { BoardCapturedPiecesPanel.AddPiece(capturedPiece); } gameState.StateChanged += OnGameStateChanged; }
internal void CapturePiece(Piece pieceToCapture) { BoardGrid.Children.Remove(pieceToCapture.Visual); BoardCapturedPiecesPanel.AddPiece(pieceToCapture); }