Beispiel #1
0
        private void Switch(p.Path start, p.Path end)
        {
            if (Equals(
                    Items.FirstOrDefault(t => Equals(t.Pair.Item1, start))?.Color,
                    Items.FirstOrDefault(t => Equals(t.Pair.Item1, end))?.Color))
            {
                RouteController(start, end);
            }
            else
            {
                // start
                foreach (var t in Items.Where(t => Equals(t.Pair.Item1, start)))
                {
                    switch (t.Color)
                    {
                    case LineColor.Red:
                        RouteController(start,
                                        Equals(end.Select(), LineColor.Blue)
                                    ? RedL_kreshatik
                                    : RedL_teatralna);
                        break;

                    case LineColor.Green:
                        RouteController(start,
                                        Equals(end.Select(), LineColor.Blue) &&
                                        Equals(start.Select(), LineColor.Green)
                                    ? GreenL_palatssportu
                                    : GreenL_zolotivorota);
                        break;

                    case LineColor.Blue:
                        RouteController(start,
                                        Equals(end.Select(), LineColor.Red)
                                    ? BlueL_maidan
                                    : BlueL_lt);
                        break;
                    }
                }
                // end
                foreach (var t in Items.Where(t => Equals(t.Pair.Item1, end)))
                {
                    switch (t.Color)
                    {
                    case LineColor.Red:
                        RouteController(
                            Equals(end.Select(), LineColor.Red) &&
                            Equals(start.Select(), LineColor.Green)
                                    ? RedL_teatralna
                                    : RedL_kreshatik, end);
                        break;

                    case LineColor.Green:
                        RouteController(
                            Equals(end.Select(), LineColor.Green) &&
                            Equals(start.Select(), LineColor.Blue)
                                    ? GreenL_palatssportu
                                    : GreenL_zolotivorota, end);
                        break;

                    case LineColor.Blue:
                        RouteController(
                            Equals(end.Select(), LineColor.Blue) &&
                            Equals(start.Select(), LineColor.Green)
                                    ? BlueL_lt
                                    : BlueL_maidan, end);
                        break;
                    }
                }
            }
        }