Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }
Example #3
0
 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;
     }
 }
Example #4
0
        /// <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;
        }
Example #5
0
 internal void CapturePiece(Piece pieceToCapture)
 {
     BoardGrid.Children.Remove(pieceToCapture.Visual);
     BoardCapturedPiecesPanel.AddPiece(pieceToCapture);
 }