Example #1
0
        public TrackStretch TrackStretch(Station from, Station to) {
            try {
                return TrackStretches.Where(l =>
                (l.Start.Station.Equals(from) && l.End.Station.Equals(to)) || (l.Start.Station.Equals(to) && l.End.Station.Equals(from))).Single();

            }
            catch (InvalidOperationException) {

                throw new TrackLayoutException("There is no stretch between " + from.Name + " and " + to.Name);
            }
        }
Example #2
0
 public static void RecordHandler(IDataRecord record, TrackLayout layout)
 {
     var result = new Station(record.GetString(record.GetOrdinal("FullName")), record.GetString(record.GetOrdinal("Signature")));
     layout.Add(result);
 }
Example #3
0
 public TrackStretch StretchTowards(Station other) { return Exits.Where(e => e.Stretch.End.Station.Equals(other)).Select(e => e.Stretch).Single(); }
Example #4
0
        //public TrackStretch GetTrainsStretch()

        public void Add(Station station) {
            if (HasStation(station))
                throw new TrackLayoutException(string.Format(CultureInfo.CurrentCulture, Properties.Resources.DuplicateAddOfStation, station));
            _stations.Add(station);
        }
Example #5
0
 public bool HasStation(Station station) { return Stations.Any(s => s.Equals(station)); } 
 private static void GetStations(TrackLayout layout, Excel.Workbook book) {
     Excel.Worksheet sheet = book.Worksheets["StationTrack"];
     var r = 2;
     Station current = null;
     var loop = true;
     while (loop) {
         var row = (Array)sheet.get_Range(Cell("A", r), Cell("G", r)).Cells.Value;
         if (row.GetValue(1, 1) == null) {
             break;
         }
         else {
             var rowType = row.Value(6);
             switch (rowType) {
                 case "Station":
                     if (current != null) layout.Add(current);
                     current = new Station( row.Value(5), row.Value(1));
                    break;
                 case "Track":
                     current.Add(new StationTrack(row.Value(3)));
                     break;
                 default:
                     loop = false;
                     break;
             }
             r++;
         }
     }
     if (current != null) layout.Add(current);
 }
 public double DistanceToStation(Station station) {
     if (station.Equals(_stretches.First().Start.Station)) return 0;
     var stretch = _stretches.FirstOrDefault(s => s.End.Station.Equals(station));
     if (stretch == null) throw new ArgumentOutOfRangeException(nameof(station));
     return _stretches.Take(_stretches.IndexOf(stretch) + 1).Sum(s => s.Distance);
 } 
 public bool HasStation(Station station)
 {
     return _stretches.Any(s => s.Start.Station.Equals(station) || s.End.Station.Equals(station));
 }