Exemple #1
0
        public Emulator()
        {
            InitializeComponent();

            StationChooser stationChooser = new StationChooser();

            /*Відразу будуємо лінію метро та розставляємо станції*/
            MetroLine rightLine = new MetroLine();
            MetroLine leftLine  = new MetroLine();

            mainCanvas.Children.Add(rightLine.draw((int)SystemParameters.PrimaryScreenHeight / 2 - 15));
            mainCanvas.Children.Add(leftLine.draw((int)SystemParameters.PrimaryScreenHeight / 2 + 15));

            // Ліва кінцева станція
            Depot leftDepot = stationChooser.FirstDepot;

            mainCanvas.Children.Add(leftDepot.draw());
            Canvas.SetLeft(leftDepot.getRect(), 10);
            Canvas.SetTop(leftDepot.getRect(), (int)SystemParameters.PrimaryScreenHeight / 2 - 30);
            mainCanvas.Children.Add(leftDepot.getCaption("left"));
            Canvas.SetLeft(leftDepot.getCaption(), 10);
            Canvas.SetTop(leftDepot.getCaption(), (int)SystemParameters.PrimaryScreenHeight / 2 - 60 - leftDepot.CaptionHeight);

            // Права кінцева станція
            Depot rightDepot = stationChooser.SecondDepot;

            mainCanvas.Children.Add(rightDepot.draw());
            Canvas.SetLeft(rightDepot.getRect(), (int)SystemParameters.PrimaryScreenWidth - 60);
            Canvas.SetTop(rightDepot.getRect(), (int)SystemParameters.PrimaryScreenHeight / 2 - 30);
            mainCanvas.Children.Add(rightDepot.getCaption("right"));
            Canvas.SetLeft(rightDepot.getCaption(), (int)SystemParameters.PrimaryScreenWidth - 100);
            Canvas.SetTop(rightDepot.getCaption(), (int)SystemParameters.PrimaryScreenHeight / 2 - 60 - rightDepot.CaptionHeight);

            //Розтравлення проміжних станцій
            double interval = (SystemParameters.PrimaryScreenWidth - 180) / (MainWindow.CountOfStations - 2);   //Довжину лінії розділили на кількість станцій
            double top      = (int)SystemParameters.PrimaryScreenHeight / 2 - 60;
            double left     = 20 + interval;

            standStations = stationChooser.Stations;
            for (int i = 0; i < MainWindow.CountOfStations - 2; i++)
            {
                standStations[i].Left = left;
                standStations[i].Top  = top;
                mainCanvas.Children.Add(standStations[i].draw());
                Canvas.SetLeft(standStations[i].getRect(), left);
                Canvas.SetTop(standStations[i].getRect(), top);
                mainCanvas.Children.Add(standStations[i].getCaption());
                Canvas.SetLeft(standStations[i].getCaption(), left - standStations[i].getCaption().Width / 2 + 15.6);
                Canvas.SetTop(standStations[i].getCaption(), top - 40);
                left += interval;
            }
            //Додаємо загальний годинник
            mainClock = new Clock(MainWindow.StartHour, 0, 0);
            mainClock.setLabelBigText();
            allTimeLabel = mainClock.getLabel();
            mainCanvas.Children.Add(allTimeLabel);
            Canvas.SetLeft(allTimeLabel, 1250);
            Canvas.SetTop(allTimeLabel, 50);
        }
 public StationChooser()
 {
     try
     {
         StreamReader sr = new StreamReader(@"src\Stantion's.txt", System.Text.Encoding.Default);
         int          countOfStations = MainWindow.CountOfStations;
         Random       rand            = new Random(DateTime.Now.Millisecond);
         int          firstStation    = rand.Next(20 - countOfStations);
         for (int i = 0; i < firstStation; i++)
         {
             sr.ReadLine();                          // Пропускаємо станції, які не використовуватимемо
         }
         firstDepot = new Depot(sr.ReadLine());
         for (int i = 1; i < countOfStations - 1; i++)
         {
             stations.Add(new StandartStation(sr.ReadLine()));
         }
         secondDepot = new Depot(sr.ReadLine());
     }
     catch
     {
         return;
     }
 }