public override PathElement GetNextPathThrough(bool bCheckOccupied, ref int nSourceFrom, out int nForeignSource) { ArrayList list; int num; nForeignSource = -1; PointSwitchBase.ConnectionSource source = (PointSwitchBase.ConnectionSource)nSourceFrom; if (bCheckOccupied) { list = base.IsOccupied(); if (list.Count != 0) { if (nSourceFrom == ((int)list[0])) { nSourceFrom = num = (int)list[1]; return(base.GetConnectedPath(num, out nForeignSource)); } if (nSourceFrom == ((int)list[1])) { nSourceFrom = num = (int)list[0]; return(base.GetConnectedPath(num, out nForeignSource)); } } return(null); } switch (source) { case PointSwitchBase.ConnectionSource.Plus: case PointSwitchBase.ConnectionSource.Minus: nSourceFrom = num = 1; return(base.GetConnectedPath(num, out nForeignSource)); } list = this.IsSelected(); if (list.Count == 0) { list = base.IsOccupied(); if (list.Count == 0) { return(null); } } nSourceFrom = num = (int)list[1]; return(base.GetConnectedPath(num, out nForeignSource)); }
public override int GetOppositeSource(int nSource) { PointSwitchBase.ConnectionSource source = (PointSwitchBase.ConnectionSource)nSource; ArrayList list = base.IsOccupied(); if (list.Count == 0) { list = this.IsSelected(); if (list.Count == 0) { return(-1); } } switch (source) { case PointSwitchBase.ConnectionSource.Plus: case PointSwitchBase.ConnectionSource.Minus: return(1); } return((int)list[1]); }
public override int[] GetOppositeSources(int nSource) { PointSwitchBase.ConnectionSource source = (PointSwitchBase.ConnectionSource)nSource; int oppositeSource = this.GetOppositeSource(nSource); if (oppositeSource == -1) { if (source == PointSwitchBase.ConnectionSource.Peak) { return(new int[] { 2, 3 }); } return(new int[] { 1 }); } switch (((PointSwitchBase.ConnectionSource)oppositeSource)) { case PointSwitchBase.ConnectionSource.Peak: return(new int[] { 1 }); case PointSwitchBase.ConnectionSource.Plus: return(new int[] { oppositeSource, 3 }); } return(new int[] { oppositeSource, 2 }); }