private void GoUpLevel() { VariationModel model = new VariationModel(currentVariation); title.Text = model.Description; Populate(model); if (currentVariation == 0) { upOne.Visibility = Visibility.Hidden; } subViewPanel.Visibility = Visibility.Hidden; details.ShowPointPrice(); details.HidePortions(); details.HideGroup(); details.Reset(); fullViewSelected = true; fullView.Background = new SolidColorBrush(Colors.Beige); selectionView.Background = new SolidColorBrush(Colors.LightGray); SetLocationUpOne(); }
/// <summary> /// Escribe los datos de una variación /// </summary> private void WriteVariation(int indent, int index, VariationModel variation) { // Cabecera Console.WriteLine(new string('\t', indent) + $"Variation {index.ToString()}"); // Movimientos WriteMovements(indent + 1, variation.Movements); }
private void ReinstateItem_Click(object sender, RoutedEventArgs e) { svc.ReinstateItem(selectedId); iconView.IconItemChild(selectedId).ShowIcon = false; iconView.HideIcon(selectedId, "REINSTATED_SELECTED.BMP"); VariationModel model = new VariationModel(selectedId); svc.AddUpdate("REINSTATE_VARIATION," + selectedId); }
private void DownItem_Click(object sender, RoutedEventArgs e) { VariationModel movingModel = (VariationModel)iconView.SelectedItem.Child; VariationModel otherModel = (VariationModel)iconView.Items.Values.Where(i => i.Child.Position == movingModel.Position + 1).FirstOrDefault().Child; svc.SwapVariationPositions(movingModel, otherModel); VariationModel model = new VariationModel(parent, false); Populate(model); }
/// <summary> /// Crea una variación /// </summary> private VariationModel CreateVariation(PieceBaseModel.PieceColor actualColor, PieceBaseModelCollection previousPieces, RAVEntry rav) { VariationModel variation = new VariationModel(); // Asigna las piezas variation.Setup = CreateBoardSetup(actualColor, previousPieces); // Interpreta la lista de movimiento variation.Movements.AddRange(ParseMovements(variation, rav.MoveText)); // Devuelve la variación return(variation); }
private void AddVariation_Click(object sender, RoutedEventArgs e) { int position = iconView.Items.Count + 1; int newId = svc.AddNewVariation(parent, "New Variation", "New Variation", position, 1); svc.AddUpdate("ADD_VARIATION," + newId + "," + parent + ",New Variation,New Variation,0,0,0," + position); VariationModel model = new VariationModel(parent, false); Populate(model); }
private static VariationModel[] CopyVariations(IReadOnlyList <VariationModel> variationModels) { var variations = new VariationModel[variationModels.Count]; for (var i = 0; i < variations.Length; i++) { variations[i] = variationModels[i].Copy(); variations[i].Init(); } return(variations); }
private void AddComponentsItem_Click(object sender, RoutedEventArgs e) { Populate(new ComponentsModel(selectedId, parent), new ComponentsModel(selectedId)); VariationModel model = new VariationModel(parent, false); title.Text = model.Description; details.HidePointPrice(); upOne.Visibility = Visibility.Visible; subViewPanel.Visibility = Visibility.Visible; }
private void AddVariationsItem_Click(object sender, RoutedEventArgs e) { int newId = svc.AddNewVariation(selectedId, "New Variation", "New Variation", 1, 1); svc.AddUpdate("ADD_VARIATION," + newId + "," + selectedId + ",New Variation,New Variation,0,0,0,1"); VariationModel model = new VariationModel(selectedId, false); Populate(model); title.Text = model.Description; currentLocation.Text = currentLocation.Text + "/" + model.Description; upOne.Visibility = Visibility.Visible; }
/// <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; } } }
private void IconView_ItemDoubleClicked(object sender, ItemDoubleClickedEventArgs <ItemModelBase> e) { ItemModelBase model = null; if (e.Child is VariationModel) { model = new VariationModel(e.Child.Id); } else if (e.Child is ComponentModel) { details.Reset(); return; } if (model.HasChildren && model.Children[0] is VariationModel) { details.ShowPointPrice(); details.HidePortions(); details.HideGroup(); Populate(model); title.Text = e.Child.Description; currentLocation.Text = currentLocation.Text + "/" + e.Child.Description; } else if (model.HasChildren) { details.HidePointPrice(); details.ShowPortions(); details.ShowGroup(); subViewPanel.Visibility = Visibility.Visible; Populate(new ComponentsModel(e.Child.Id, e.Child.ParentId), new ComponentsModel(e.Child.Id)); title.Text = e.Child.Description; currentLocation.Text = currentLocation.Text + "/" + e.Child.Description; } if (currentVariation != 0) { upOne.Visibility = Visibility.Visible; } details.Reset(); }
private void DeleteItem_Click(object sender, RoutedEventArgs e) { MessageBoxResult result = MessageBox.Show("Are you absolutely sure you wish to delete this Variation?", "Are you sure?", MessageBoxButton.YesNo); if (result == MessageBoxResult.Yes) { DeleteVariation(); VariationModel model = new VariationModel(parent, false); if (!model.HasChildren && parent != 1) { GoUpLevel(); } else { Populate(model); } } }
/// <summary> /// Carga los movimientos de la variación /// </summary> internal void LoadMovements(VariationModel variation) { // Limpia los movimientos Movements.Clear(); FigureMovements.Clear(); // Inicializa el tablero GameBoard = new GameBoardModel(variation); GameBoard.Reset(); // Carga los movimientos if (variation != null) { LoadVariationMovements(variation, 1, 1, 0); } // Añade un comentario si no había ningún movimiento if (Movements.Count == 0) { Movements.Add(new MovementRemarkViewModel(new MovementRemarksModel("No hay ningún movimiento en este juego"))); } // Inicializa los movimientos _actualMovementIndex = 0; }
private void IconView_ViewRightClicked(object sender, IconViewRightClickedEventArgs e) { if (showingMenu) { showingMenu = false; return; } FrameworkElement thisControl = (FrameworkElement)sender; VariationModel model = new VariationModel(parent); if (model.HasChildren && model.Children[0] is VariationModel) { MenuItem addVariation = new MenuItem(); addVariation.Header = "Add Variation"; addVariation.Click += AddVariation_Click; thisControl.ContextMenu = new ContextMenu(); thisControl.ContextMenu.Items.Add(addVariation); thisControl.ContextMenu.IsOpen = true; } }
/// <summary> /// Convierte una variación /// </summary> private MovementVariationModel ConvertVariation(VariationModel variation, MovementBaseModel parent) { MovementVariationModel movementVariation = new MovementVariationModel(parent); SquareModel board = Board.Clone(); // Ajusta el movimiento al color de inicio de la variación board.Parameters.IsWhiteMove = variation.Movements[0].Turn.Type == TurnModel.TurnType.White; // Presenta el tablero //#if DEBUG // System.Diagnostics.Debug.WriteLine("Board for variation:"); // System.Diagnostics.Debug.WriteLine(board.GetText()); // System.Diagnostics.Debug.WriteLine(new string('-', 80)); //#endif // Convierte los movimientos movementVariation.Movements.AddRange(new MovementConversor(board).Convert(variation.Movements)); // Presenta el tablero real //#if DEBUG // System.Diagnostics.Debug.WriteLine("Board after variation:"); // System.Diagnostics.Debug.WriteLine(Board.GetText()); // System.Diagnostics.Debug.WriteLine(new string('-', 80)); //#endif // Devuelve la variación return(movementVariation); }
/// <summary> /// Lee los movimientos /// </summary> private SentenceBaseModel ReadMovements(IEnumerator <SentenceBaseModel> sentenceEnumerator, SentenceBaseModel previousSentence, List <BaseMovementModel> movements) { SentenceBaseModel sentence = previousSentence; BaseMovementModel lastMovement = null; TurnModel lastTurn = null; // Añade los movimientos do { // Trata la sentencia switch (sentence) { case SentenceTurnNumberModel sentenceTurn: lastMovement = null; lastTurn = new TurnModel(sentenceTurn.Content, TurnModel.TurnType.White); break; case SentenceTurnPlayModel sentencePlay: if (lastTurn == null) { sentence = new SentenceErrorModel($"There is not turn to add the play {sentencePlay.Content}"); } else { // Crea el movimiento lastMovement = new PieceMovementModel(lastTurn, sentencePlay.Content); // Añade el movimiento movements.Add(lastMovement); } break; case SentenceTurnResultModel sentenceResult: if (lastTurn == null) { sentence = new SentenceErrorModel($"There is not turn to add the result {sentenceResult.Content}"); } else { // Crea el movimiento lastMovement = new ResultMovementModel(lastTurn, sentence.Content); // Añade el movimiento movements.Add(lastMovement); } break; case SentenceTurnInformationModel sentenceInformation: if (lastMovement == null) { sentence = new SentenceErrorModel($"There is not movement to add the information {sentenceInformation.Content}"); } else { lastMovement.Info.Add(new InfoMovementModel(sentence.Content)); } break; case SentenceCommentModel sentenceComment: if (lastMovement == null) { sentence = new SentenceErrorModel($"There is not sentence to add the comment {sentenceComment.Content}"); } else { lastMovement.Comments.Add(sentenceComment.Content); } break; case SentenceTurnStartVariationModel sentenceVariation: if (lastMovement == null) { sentence = new SentenceErrorModel("There is not sentence to add a variation"); } else { VariationModel variation = new VariationModel(lastMovement); // Limpia esta sentencia del enumerado sentence = GetNextSentence(sentenceEnumerator); // Añade los comentarios y la información a la variación while (sentence is SentenceTurnInformationModel || sentence is SentenceCommentModel) { // Añade la información de la sentencia switch (sentence) { case SentenceTurnInformationModel sentenceInfo: variation.Info.Add(new InfoMovementModel(sentenceInfo.Content)); break; case SentenceCommentModel sentenceComment: variation.Comments.Add(sentenceComment.Content); break; } // Pasa a la siguiente sentencia sentence = GetNextSentence(sentenceEnumerator); } // Lee los movimientos de la variación sentence = ReadMovements(sentenceEnumerator, sentence, variation.Movements); // Añade la variación a la colección if (variation.Movements.Count > 0) { lastMovement.Variations.Add(variation); } // Pasa a la siguiente sentencia if (!(sentence is SentenceTurnEndVariationModel)) { sentence = new SentenceErrorModel("Can't find the end variation sentence"); } } break; } // Pasa a la siguiente sentencia if (!(sentence is SentenceErrorModel)) { sentence = GetNextSentence(sentenceEnumerator); } }while (!(sentence is SentenceEndModel) && !(sentence is SentenceErrorModel) && !(sentence is SentenceTagModel) && !(sentence is SentenceTurnEndVariationModel)); // Devuelve la última sentencia leída return(sentence); }
/// <summary> /// Interpreta los movimientos /// </summary> private MovementModelCollection ParseMovements(VariationModel variation, MoveTextEntryList moveEntryList) { MovementModelCollection movements = new MovementModelCollection(); PieceBaseModel.PieceColor actualColor = PieceBaseModel.PieceColor.White; PieceBaseModelCollection previousPieces = new PieceBaseModelCollection(); // Inicializa el tablero variation.GameBoard.Reset(); // Cambia el color inicial if (variation.Setup.HasSetup && !variation.Setup.IsWhiteMove) { actualColor = PieceBaseModel.PieceColor.Black; } // Interpreta la lista de movimientos try { foreach (MoveTextEntry moveEntry in moveEntryList) { switch (moveEntry) { case RAVEntry rav: MovementFigureModel lastMovement = movements.SearchLastPieceMovement(); if (lastMovement != null) { lastMovement.Variation = CreateVariation(actualColor, previousPieces, rav); } break; case NAGEntry nag: System.Diagnostics.Debug.WriteLine(moveEntry.GetType().ToString()); break; case CommentEntry comment: movements.Add(new MovementRemarksModel(comment.Comment)); break; case MovePairEntry movement: // Añade el movimiento de blancas movements.Add(ParseMovement(variation.GameBoard, actualColor, (moveEntry as MovePairEntry).White)); actualColor = GetNextColor(actualColor); // Clona la lista de piezas hasta el movimiento anterior previousPieces = variation.GameBoard.Pieces.Clone(); // Añade el movimiento de negras movements.Add(ParseMovement(variation.GameBoard, actualColor, (moveEntry as MovePairEntry).Black)); actualColor = GetNextColor(actualColor); break; case HalfMoveEntry movement: // Clona la lista de piezas hasta el movimiento anterior previousPieces = variation.GameBoard.Pieces.Clone(); // Añade el movimiento actual movements.Add(ParseMovement(variation.GameBoard, actualColor, (moveEntry as HalfMoveEntry).Move)); actualColor = GetNextColor(actualColor); break; case GameEndEntry movement: movements.Add(new MovementGameEndModel(ConvertResult(movement.Result))); break; default: System.Diagnostics.Debug.WriteLine(moveEntry.GetType().ToString()); break; } } } catch (Exception exception) { variation.ParseError = exception.Message; } // Devuelve la colección de movimientos return(movements); }
private void SelectItem(ItemModelBase child) { int parentType; selectedId = child.Id; ItemModelBase model; if (child is VariationModel) { details.Title = "Variation"; parentType = 0; model = new VariationModel(child.Id); showPoints = true; } else { details.Title = "Component"; parentType = 1; bool found = false; model = svc.GetComponentModel(parent, child.Id, out found); if (found) { details.EnablePoints(); details.EnableGroup(); details.EnablePortions(); details.Points = ((ComponentModel)model).Points; details.Portions = ((ComponentModel)model).Portions; details.Group = ((ComponentModel)model).Group; details.PointPrice = 0; showPoints = true; } else { details.DisablePoints(); details.DisableGroup(); details.Group = 0; details.DisablePortions(); details.Portions = 0; showPoints = false; } } details.ItemName = model.Description; details.DisplayName = model.DisplayName; details.Price = model.Price; if (model is VariationModel) { VariationModel thisModel = (VariationModel)model; details.Points = thisModel.Points; details.PointPrice = thisModel.PointPrice; details.EnablePoints(); details.VAT = thisModel.VATStatus; details.EnableVAT(); showPoints = true; } details.Set(child.Id, parentType, showPoints); details.ParentId = parent; }
private void DeleteVariation() { VariationModel model = new VariationModel(selectedId, true); svc.DeleteVariation(model); }
private void IconView_ItemRightClicked(object sender, ItemRightClickedEventArgs <ItemModelBase> e) { thisControl = (FrameworkElement)sender; thisControl.ContextMenu = null; if (e.Child is VariationModel) { thisControl.ContextMenu = new ContextMenu(); VariationModel model = new VariationModel(e.Id); if (!model.ShowIcon) { MenuItem cutItem = new MenuItem(); cutItem.Header = "Cut"; cutItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/CUT.bmp", System.UriKind.Absolute)) }; cutItem.Click += CutItem_Click; thisControl.ContextMenu.Items.Add(cutItem); MenuItem copyItem = new MenuItem(); copyItem.Header = "Copy"; copyItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/COPY.bmp", System.UriKind.Absolute)) }; copyItem.Click += CopyItem_Click; thisControl.ContextMenu.Items.Add(copyItem); MenuItem removeItem = new MenuItem(); removeItem.Header = "Remove"; removeItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/REMOVE.bmp", System.UriKind.Absolute)) }; removeItem.Click += RemoveItem_Click; thisControl.ContextMenu.Items.Add(removeItem); MenuItem deleteItem = new MenuItem(); deleteItem.Header = "Delete"; deleteItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/DELETE.bmp", System.UriKind.Absolute)) }; deleteItem.Click += DeleteItem_Click; thisControl.ContextMenu.Items.Add(deleteItem); bool shownSeperator = false; MenuItem upItem = new MenuItem(); MenuItem downItem = new MenuItem(); if (model.Position > 1) { Separator sep = new Separator(); shownSeperator = true; thisControl.ContextMenu.Items.Add(sep); upItem.Header = "Move Variation Up"; upItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/COMPONENT_UP.bmp", System.UriKind.Absolute)) }; upItem.Click += UpItem_Click; thisControl.ContextMenu.Items.Add(upItem); } if (model.Position < iconView.Items.Count) { if (!shownSeperator) { Separator sep = new Separator(); shownSeperator = true; thisControl.ContextMenu.Items.Add(sep); } downItem.Header = "Move Variation Down"; downItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/COMPONENT_DOWN.bmp", System.UriKind.Absolute)) }; downItem.Click += DownItem_Click; thisControl.ContextMenu.Items.Add(downItem); } } else { MenuItem reinstateItem = new MenuItem(); reinstateItem.Header = "Reinstate"; reinstateItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/CUT.bmp", System.UriKind.Absolute)) }; reinstateItem.Click += ReinstateItem_Click; thisControl.ContextMenu.Items.Add(reinstateItem); } if (!model.HasChildren) { if (thisControl.ContextMenu == null) { thisControl.ContextMenu = new ContextMenu(); } Separator separator = new Separator(); thisControl.ContextMenu.Items.Add(separator); MenuItem addVariationsItem = new MenuItem(); addVariationsItem.Header = "Add Layer Of Variations"; addVariationsItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/NEW.bmp", System.UriKind.Absolute)) }; addVariationsItem.Click += AddVariationsItem_Click; thisControl.ContextMenu.Items.Add(addVariationsItem); MenuItem addComponentsItem = new MenuItem(); addComponentsItem.Header = "Add Layer Of Components"; addComponentsItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/NEW.bmp", System.UriKind.Absolute)) }; addComponentsItem.Click += AddComponentsItem_Click; thisControl.ContextMenu.Items.Add(addComponentsItem); } } else { if (!fullViewSelected && iconView.Items.Count > 1) { thisControl.ContextMenu = new ContextMenu(); ComponentModel thisItem = (ComponentModel)iconView.SelectedItem.Child; if (thisItem.Position > 1) { MenuItem upComponentsItem = new MenuItem(); upComponentsItem.Header = "Move Component Up"; upComponentsItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/COMPONENT_UP.bmp", System.UriKind.Absolute)) }; upComponentsItem.Click += UpComponentsItem_Click; thisControl.ContextMenu.Items.Add(upComponentsItem); } if (thisItem.Position < iconView.Items.Count) { MenuItem downComponentsItem = new MenuItem(); downComponentsItem.Header = "Move Component Down"; downComponentsItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/LakesideLoungeAdmin;component/Resources/COMPONENT_DOWN.bmp", System.UriKind.Absolute)) }; downComponentsItem.Click += DownComponentsItem_Click; thisControl.ContextMenu.Items.Add(downComponentsItem); } } else { return; } } showingMenu = true; thisControl.ContextMenu.IsOpen = true; }
public void RehydrateOrderItem(OrderItemModel model) { currentOrderItemId = model.Id; quantityButton.Enabled = false; positions.Clear(); components.Clear(); variationId = model.VariationId; FragmentRoute route = svc.SelectVariation(model.VariationId); if (route == FragmentRoute.Components) { foreach (OrderItemComponentModel component in model.ComponentModels) { components.Add(component.ComponentId, component); if (component.HasComponents) { editedComponents.Add(component); } } positions.Add(new VariationPosition() { PosType = PositionType.Components, Id = model.VariationId }); } VariationModel newModel = new VariationModel(model.VariationId); int parentId = newModel.ParentId; while (newModel.ParentId != 0) { positions.Insert(0, new VariationPosition() { PosType = PositionType.Variations, Id = newModel.ParentId }); newModel = new VariationModel(newModel.ParentId); } thisPosition = positions.Count - 1; if (route == FragmentRoute.Components) { DisplayComponents(model.VariationId, true, ComponentListMode.Variation); } else { confirmButton.Visibility = ViewStates.Visible; DisplayVariations(parentId); } currentDiscountId = model.DiscountId; DiscountModel discountModel = svc.GetDiscountModel(currentDiscountId); discountText.Text = discountModel.Description; currentInOutId = model.InOutStatus; if (currentInOutId == 1) { inOutText.Text = "Eat In"; } else { inOutText.Text = "Take Away"; } Show(); }
/// <summary> /// Carga los datos de un juego /// </summary> internal MovementModelCollection Parse(VariationModel variation, Game game) { return(ParseMovements(variation, game.MoveText)); }