예제 #1
0
파일: Node.cs 프로젝트: ot-vinta/TEC_Game
 public void RemoveElement(BaseElement element)
 {
     connectedElements.Remove(element);
 }
예제 #2
0
파일: Scheme.cs 프로젝트: ot-vinta/TEC_Game
        public void RemoveElement(BaseElement element, Grid gameGrid)
        {
            elements[element.GetId() - 1] = null;
            int tempId = element.GetId();

            nodes[element.GetNode1().GetId() - 1].RemoveElement(element);
            nodes[element.GetNode2().GetId() - 1].RemoveElement(element);
            element.GetWire1().RemoveObject(element);
            element.GetWire2().RemoveObject(element);

            if (elements.Count > 1 && element is Resistor)
            {
                if (element.GetNode1().GetConnectedElementsCount() == 1 &&
                    element.GetNode1().GetConnectedElements()[0] is NullorElement)
                {
                    element.GetNode1().GetConnectedElements()[0].ChangeNode(element.GetNode1(), element.GetNode2());
                }

                if (element.GetNode2().GetConnectedElementsCount() == 1 &&
                    element.GetNode2().GetConnectedElements()[0] is NullorElement)
                {
                    element.GetNode2().GetConnectedElements()[0].ChangeNode(element.GetNode2(), element.GetNode1());
                }
            }

            if (elements.Count > 1 && element is Conductor)
            {
                int conductorsCount = 0;
                foreach (var elem in elements)
                {
                    if (elem != null)
                    {
                        if (elem.GetNode1() == element.GetNode1() && elem.GetNode2() == element.GetNode2() ||
                            elem.GetNode2() == element.GetNode1() && elem.GetNode1() == element.GetNode2())
                        {
                            conductorsCount++;
                        }
                    }
                }

                if (conductorsCount == 1)
                {
                    Node tempNode1 = null, tempNode2 = null;

                    foreach (var wire in element.GetNode1().GetConnectedWires())
                    {
                        if (wire.GetObject1() is Node && wire.GetObject2() is Node)
                        {
                            tempNode1 = (Node)wire.GetObject1();
                            tempNode2 = (Node)wire.GetObject2();

                            CheckForFreeNodes(tempNode1, tempNode2);
                        }
                    }

                    tempNode1 = null;
                    tempNode2 = null;

                    foreach (var wire in element.GetNode2().GetConnectedWires())
                    {
                        if (wire.GetObject1() is Node && wire.GetObject2() is Node)
                        {
                            tempNode1 = (Node)wire.GetObject1();
                            tempNode2 = (Node)wire.GetObject2();

                            CheckForFreeNodes(tempNode1, tempNode2);
                        }
                    }
                }
            }

            if (element.GetNode1().GetConnectedElementsCount() == 0)
            {
                gameGrid?.Children.Remove(element.GetNode1());
                RemoveNode(element.GetNode1());
            }

            if (element.GetNode2().GetConnectedElementsCount() == 0)
            {
                gameGrid?.Children.Remove(element.GetNode2());
                RemoveNode(element.GetNode2());
            }
            element.Destroy();
            element = null;
        }
예제 #3
0
파일: Node.cs 프로젝트: ot-vinta/TEC_Game
 public void AddConnectedElement(BaseElement element)
 {
     connectedElements.Add(element);
 }
예제 #4
0
 private void SayGoodBye(BaseElement element, ref HashSet <BaseElement> usedElements)
 {
     usedElements.Remove(element);
     scheme.RemoveElement(element, gameWindow.GameGrid);
     gameWindow.GameGrid.Children.Remove(element.GetImage());
 }