public void AddElement(BaseElement element) { elements.Add(element); elementMaxId++; nodes[element.GetNode1().GetId() - 1].AddConnectedElement(element); nodes[element.GetNode2().GetId() - 1].AddConnectedElement(element); }
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; }