private void canvas_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { canvas.ReleaseMouseCapture(); if (drawLine) { drawLine = false; canvas.Children.Remove(ConnectionLine); RecipeNode rn = (RecipeNode)Helper.FindParentOfType((FrameworkElement)e.OriginalSource, typeof(RecipeNode)); if (rn != null) { foreach (ItemNode node in ItemBeingConnected.input ? rn.outPanel.Children : rn.inPanel.Children) { if (node.recipeItem.item.Name == ItemBeingConnected.recipeItem.item.Name) { connections.Add(new Connection(ItemBeingConnected, node, new Line(), canvas)); UpdateRates(); } } } else { ContextMenu cm = ConnectRecipeMenu(ItemBeingConnected); cm.IsOpen = true; } } e.Handled = true; }
private void addItemButton_Click(object sender, RoutedEventArgs e) { Recipe recipe = ((ListItem)ItemsListView.SelectedItem).recipe; RecipeNode rn = new RecipeNode(recipe, canvas, zoom); canvas.Children.Add(rn); rn.SetValue(Canvas.TopProperty, canvas.Height / 2); rn.SetValue(Canvas.LeftProperty, canvas.Width / 2); }
public double SetRateUp(double rate) { if (currentRate > rate) { currentRate = rate; SetMachineTexts(); SetRate(currentRate, false); rectangle.Stroke = new SolidColorBrush(Colors.Red); } double rateOut = currentRate; List <ItemNode> nodes = Helper.GetConnected((ItemNode)outPanel.Children[0]); foreach (ItemNode node in nodes) { RecipeNode rnode = (RecipeNode)Helper.FindParentOfType(node, typeof(RecipeNode)); rateOut = rnode.SetRateUp(rateOut * (recipe.Outputs[0].count / node.recipeItem.count)); } return(rate - currentRate); }
private void RecipeContextMenu_Click(object sender, RoutedEventArgs e, Recipe recipe, Point pos, ItemNode from) { RecipeNode rn = new RecipeNode(recipe, canvas, zoom); canvas.Children.Add(rn); Canvas.SetLeft(rn, pos.X - 125); Canvas.SetTop(rn, pos.Y - 75); foreach (ItemNode to in rn.inPanel.Children) { if (to.recipeItem.item.Name == from.recipeItem.item.Name) { connections.Add(new Connection(from, to, new Line(), canvas)); } } foreach (ItemNode to in rn.outPanel.Children) { if (to.recipeItem.item.Name == from.recipeItem.item.Name) { connections.Add(new Connection(from, to, new Line(), canvas)); } } UpdateLines(); UpdateRates(); }