Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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]);
        }
Exemplo n.º 3
0
        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 });
        }