public void Remove(Substance substance) { if (substance.Station != this) { if (substance.Station != null) { throw new InvalidOperationException("Substance is not registered on this station."); } } else { substance.Station = null; if (substance.UseInstantAppearance) { this.ProcessReservedRequest(); if (this.firstElement == substance.SubstanceListElement) { this.firstElement = substance.SubstanceListElement.Next; if (this.firstElement != null) { this.firstElement.Previous = null; } } else { if (substance.SubstanceListElement.Previous != null) { substance.SubstanceListElement.Previous.Next = substance.SubstanceListElement.Next; } if (substance.SubstanceListElement.Next != null) { substance.SubstanceListElement.Next.Previous = substance.SubstanceListElement.Previous; } } substance.SubstanceListElement = null; foreach (Sensor sensor in this.sensorList.Values) { sensor.Transmitter.Transmit(substance.Adapter.InstantDisappearMessage); } } } }
public void Add(Substance substance) { if (substance.Station != null) { throw new InvalidOperationException("Substance can be registered to one station at the same time."); } substance.Station = this; if (substance.UseInstantAppearance) { this.ProcessReservedRequest(); SubstanceListElement substanceListElement = new SubstanceListElement(substance); substanceListElement.Next = this.firstElement; if (this.firstElement != null) { this.firstElement.Previous = substanceListElement; } substance.SubstanceListElement = substanceListElement; this.firstElement = substanceListElement; foreach (Sensor sensor in this.sensorList.Values) { sensor.Transmitter.Transmit(substance.Adapter.InstantAppearMessage); } } }
public SubstanceListElement(Substance substance) { this.Substance = substance; }