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