Example #1
0
 /// <summary>
 ///		Crea un movimiento real
 /// </summary>
 private MovementFigureDoubleViewModel CreateRealMovement(MovementFigureDoubleViewModel lastMovement, MovementFigureModel move,
                                                          int movementIndex, int movementLineIndex)
 {
     // Si es necesario, crea un nuevo movimiento
     if (lastMovement == null)
     {
         lastMovement = new MovementFigureDoubleViewModel(movementIndex, movementLineIndex);
         Movements.Add(lastMovement);
     }
     // Asigna el movimiento de blancas / negras
     if (move.Color == Bau.Libraries.LibChessGame.Board.Pieces.PieceBaseModel.PieceColor.White)
     {
         // Asigna el movimiento de blancas
         lastMovement.WhiteMovement = new MovementFigureViewModel(PgnGameViewModel, move, movementIndex, 0);
         // Carga la variación
         if (MustShowVariations(move))
         {
             LoadVariationMovements(move.Variation, movementIndex, movementLineIndex, 1);
             lastMovement = null;
         }
     }
     else             // Asigna el movimiento de negras
     {
         // Asigna el movimiento de negras
         lastMovement.BlackMovement = new MovementFigureViewModel(PgnGameViewModel, move, movementIndex, 0);
         // Carga la variación
         if (MustShowVariations(move))
         {
             LoadVariationMovements(move.Variation, movementIndex, movementLineIndex, 1);
         }
         lastMovement = null;
     }
     // Devuelve el último movimiento añadido a la lista
     return(lastMovement);
 }
Example #2
0
        /// <summary>
        ///		Carga en la lista una variación de movimientos
        /// </summary>
        private void LoadVariationMovements(VariationModel variation, int movementIndex, int movementLineIndex, int variationIndex)
        {
            MovementFigureDoubleViewModel          lastMovement          = null;
            MovementFigureVariationDoubleViewModel lastRecursiveMovement = null;

            foreach (MovementBaseModel movement in variation.Movements)
            {
                switch (movement)
                {
                case MovementFigureModel move:
                    // Añade a la lista un movimiento real o un movimiento recursivo
                    if (variationIndex == 0)
                    {
                        // Añade el movimiento a la lista de movimientos de piezas (sin comentarios)
                        FigureMovements.Add(move);
                        // Crea el movimiento para la lista
                        lastMovement          = CreateRealMovement(lastMovement, move, movementIndex, movementLineIndex);
                        lastRecursiveMovement = null;
                    }
                    else if (PgnGameViewModel.ShowVariations)
                    {
                        lastRecursiveMovement = CreateRecursiveMovement(lastRecursiveMovement, move, movementIndex, movementLineIndex, variationIndex);
                        lastMovement          = null;
                    }
                    // Incrementa los índices de movimientos
                    movementIndex++;
                    if (move.Color == Bau.Libraries.LibChessGame.Board.Pieces.PieceBaseModel.PieceColor.Black)
                    {
                        movementLineIndex++;
                    }
                    break;

                case MovementRemarksModel move:
                    Movements.Add(new MovementRemarkViewModel(move));
                    lastMovement          = null;
                    lastRecursiveMovement = null;
                    break;

                case MovementGameEndModel move:
                    Movements.Add(new MovementGameEndViewModel(move));
                    lastMovement          = null;
                    lastRecursiveMovement = null;
                    break;
                }
            }
        }