private void UpdateFlowLabel(Component temp)
        {
            flowLabel.Visible = true;
            if (temp is Pipeline)
                flowLabel.Location = canvas.getMidPoint((Pipeline)temp);
            else
                flowLabel.Location = new Point(temp.Position.X + 6, temp.Position.Y - 15);
            flowLabel.ForeColor = Color.Black;
            switch (temp.GetType())
            {
                case ComponentType.Pipeline:
                    if (((Pipeline)temp).SafetyLimit < temp.CurrentFlow)
                    {
                        flowLabel.ForeColor = Color.Red;
                    }
                    flowLabel.Text = "F: " + temp.CurrentFlow + " SL: " + ((Pipeline)temp).SafetyLimit;
                    break;
                case ComponentType.Pump:
                    flowLabel.Text = "F: " + temp.CurrentFlow + " C: " + ((Pump)temp).Capacity;
                    break;

                default:
                    flowLabel.Text = "Flow: " + temp.CurrentFlow;
                    break;
            }

        }
Esempio n. 2
0
    /// <summary>
    /// To re-add a deleted component
    /// </summary>
    /// <param name="comp"></param>
        public void ReAddComponent(Component comp)
        {
            Components.Add(comp);
            switch (comp.GetType())
            {
                case ComponentType.Pipeline:
                    if (comp.InPut != null)
                    {
                        ((Part)(comp).InPut).Connect((Pipeline)comp);
                    }

                    if (comp.OutPut != null)
                    {
                        ((Part)(comp).OutPut).Connect((Pipeline)comp);
                    }
                    break;
                case ComponentType.Pump:
                    if (comp.OutPut != null)
                    { ((Part)(comp).OutPut.OutPut).Connect((Pipeline)comp.OutPut);
                        Components.Add(comp.OutPut);
                    }

                    break;
                case ComponentType.Splitter:
                    if (comp.InPut != null)
                    { ((Part)(comp).InPut.OutPut).Connect((Pipeline)comp.InPut);
                        Components.Add(comp.InPut);
                    }
                    if (comp.OutPutUp != null)
                    { ((Part)(comp).OutPutUp.OutPut).Connect((Pipeline)comp.OutPutUp);
                        Components.Add(comp.OutPutUp);
                    }
                    if (comp.OutPutDown != null)
                    { ((Part)(comp).OutPutDown.OutPut).Connect((Pipeline)comp.OutPutDown);
                        Components.Add(comp.OutPutDown);
                    }
                    break;
                case ComponentType.Merger:
                    if (comp.OutPut != null)
                    { ((Part)(comp).OutPut.OutPut).Connect((Pipeline)comp.OutPut);
                        Components.Add(comp.OutPut);
                    }
                    if (comp.InPutUp != null)
                    { ((Part)(comp).InPutUp.OutPut).Connect((Pipeline)comp.InPutUp);
                        Components.Add(comp.InPutUp);
                    }
                    if (comp.InPutDown != null)
                    { ((Part)(comp).InPutDown.OutPut).Connect((Pipeline)comp.InPutDown);
                        Components.Add(comp.InPutDown);
                    }
                    break;
                case ComponentType.Sink:
                    if (comp.InPut != null)
                    {
                        ((Part)(comp).InPut.OutPut).Connect((Pipeline)comp.InPut);
                        Components.Add(comp.InPut);
                    }
                    break;
                
            }
           
        }
Esempio n. 3
0
 /// <summary>
 /// establishes a connection(pipeline) between two parts(components)
 /// </summary>
 /// <param name="c1"></param>
 /// <param name="c2"></param>
 /// <returns></returns>
        public bool DrawPipeline(Component c1, Component c2)
        {

            try
            {

            
            if(c1 == c2)
            return false;
            switch (c1.GetType())
            {
                case ComponentType.Pump:
                    if (c1.OutPut != null )
                    {
                        return false;
                    }
                    break;

                case ComponentType.Splitter:
                    if ( ((Splitter)c1).CheckConnectedNodes()  == 3  )
                    {
                        return false;
                    }
                    break;
                case ComponentType.Merger:
                    if (((Merger)c1).CheckConnectedNodes() == 3)
                    { return false; }
                        break;
                case ComponentType.Sink:
                    if (c1.InPut != null)
                    {
                        return false;
                    }
                    break;
            }
            switch (c2.GetType())
            {
                case ComponentType.Pump:
                    if (c2.OutPut != null)
                    {return false;}
                    break;
                case ComponentType.Splitter:
                    if (((Splitter)c2).CheckConnectedNodes() == 3)
                    {return false; }
                    break;
                case ComponentType.Merger:
                    if (((Merger)c2).CheckConnectedNodes() == 3)
                    { return false; }
                    break;
                case ComponentType.Sink:
                    if (c2.InPut != null)
                    { return false;}
                    break;
            }
            Pipeline pipe = new Pipeline(c1, c2);
            Components.Add(pipe);
            ((Part)c1).Connect(pipe);
            ((Part)c2).Connect(pipe);
                CreateUndo(ActionType.Create, pipe);
            return true;
            }
            catch (Exception)
            {
                return false;
                
            }
        }
Esempio n. 4
0
        /// <summary>
        /// To delete a single component
        /// </summary>
        /// <param name="wantedcomp"></param>
        public void DeleteComponent(Component wantedcomp)
        {
            //Rectangle tempMousePoint = new Rectangle(mouseClicked, new Size(1, 1));

           
            // removes all Components connected
            switch (wantedcomp.GetType())
            {
                
                case ComponentType.Pump:
                    if (wantedcomp.OutPut!=null)
                    {
                        DeAttachPipeLine((Pipeline)wantedcomp.OutPut);
                    }
                    
                    break;
                case ComponentType.Splitter:
                    if (wantedcomp.InPut != null)
                    {
                        DeAttachPipeLine((Pipeline)wantedcomp.InPut);
                    }
                    if (wantedcomp.OutPutUp != null)
                    {
                        DeAttachPipeLine((Pipeline)wantedcomp.OutPutUp);
                    }
                    if (wantedcomp.OutPutDown != null)
                    {
                        DeAttachPipeLine((Pipeline)wantedcomp.OutPutDown);
                    }
                    break;
                case ComponentType.Merger:
                    if (wantedcomp.InPutUp != null)
                    {
                        DeAttachPipeLine((Pipeline)wantedcomp.InPutUp);
                    }
                    if (wantedcomp.InPutDown != null)
                    {
                        DeAttachPipeLine((Pipeline)wantedcomp.InPutUp);
                    }
                    if (wantedcomp.OutPut != null)
                    {
                        DeAttachPipeLine((Pipeline)wantedcomp.OutPut);
                    }
                    break;
                case ComponentType.Sink:
                    if (wantedcomp.InPut != null)
                    {
                        DeAttachPipeLine((Pipeline)wantedcomp.InPut);
                    }
                    break;
                
            }
            Components.Remove(wantedcomp);
        }