internal void CheckMerger(Point p, string name, Component e, Pipe plf) { foreach (Merger merg in Mergers) { if (merg.Position == e.Position) { merger = merg; } } if ((tempPoint.X + 63 >= e.Position.X && (tempPoint.Y + 63 >= e.Position.Y) && ((tempPoint.X - 63 <= e.Position.X) && (tempPoint.Y - 63 <= e.Position.Y)) && (e is Merger))) { merger.listPipelineOutputMerger.Add(plf); } if ((p.X + 63 >= e.Position.X && (p.Y + 63 >= e.Position.Y) && ((p.X - 63 <= e.Position.X) && (p.Y - 63 <= e.Position.Y)) && (e is Merger))) { merger.listPipelineInputMerger.Add(plf); foreach (Pipe pl in Pipes) { foreach (Pipe pl2 in merger.listPipelineInputMerger) { if (pl.SecondPoint == pl2.SecondPoint) { pl.Flow = pl2.Flow; pl.FirstPoint = pl2.FirstPoint; } } } } if (merger.listPipelineInputMerger.Count > 2) { MessageBox.Show("It is not possible to have more than 2 input pumps."); Pipe pl = CheckPipeline(p); Pipes.Remove(merger.listPipelineInputMerger[2]); merger.listPipelineInputMerger.Remove(merger.listPipelineInputMerger[2]); } if (merger.listPipelineInputMerger.Count == 1) { merger.listPipelineInputMerger[0].Flow = plf.Flow; foreach (Pipe pl in merger.listPipelineInputMerger) { if ((pl.SecondPoint.X) + 63 >= e.Position.X && ((pl.SecondPoint.Y) + 63 >= e.Position.Y && (pl.SecondPoint.X) - 63 <= e.Position.X) && ((pl.SecondPoint.X) + 63 >= e.Position.X) && (e is Merger)) { pl.SecondPoint = new Point(e.Position.X + 18, e.Position.Y + 18); } } foreach (Pipe pl in Pipes) { if ((pl.SecondPoint.X) + 63 >= e.Position.X && ((pl.SecondPoint.Y) + 63 >= e.Position.Y && (pl.SecondPoint.X) - 63 <= e.Position.X) && ((pl.SecondPoint.X) + 63 >= e.Position.X) && (e is Merger)) { pl.SecondPoint = new Point(e.Position.X + 18, e.Position.Y + 18); } } } else if (merger.listPipelineInputMerger.Count == 2 && merger.listPipelineOutputMerger.Count == 1) { double final = 0; foreach (Pipe pl in merger.listPipelineInputMerger) { final += pl.Flow; } merger.listPipelineOutputMerger[0].Flow = final; } }