public PosFahrPlan(PosLinieStrecke strecke, OshFahrplanSequence sequence) { ObjectId = sequence.LX4610; //Name = sequence.LX4610.ToString(); Strecke = strecke; __haltestellen = new List <PosFahrPlanHalteStelle>(); __Parse(sequence); }
private void __Parse(OshFahrplanSequence sequence) { var zl = Strecke.Items.Zip(sequence.Elements, (kn, el) => new Tuple <PosLineStreckeEinKnoten, OshFahrplanSequenceElement>(kn, el)).ToList(); var el1 = zl.First(); var fhs = new PosFahrPlanHalteStelle(this, 0, el1, 0) { Möglichkeiten = PosFahrgastMöglichkeiten.NurEingang }; __haltestellen.Add(fhs); var index = 0; var fahrZeit = 0; var akumFahrZeit = 0; foreach (var el in zl.Skip(1)) { fahrZeit += el.Item2.TRun; if (el.Item2.Status.In(new[] { OshFahrplanElementType.NurAusgang, OshFahrplanElementType.NurEingang, OshFahrplanElementType.RichtigeHaltestelle })) { akumFahrZeit += fahrZeit; fhs = new PosFahrPlanHalteStelle(this, ++index, el, fahrZeit) { AkumZeitBis_InMinutes = akumFahrZeit }; akumFahrZeit += el.Item2.TStop; __haltestellen.Add(fhs); fahrZeit = 0; } } //Ostani tylko wysiadają – poprawka fhs.Möglichkeiten = PosFahrgastMöglichkeiten.NurAusgang; fhs.HaltZeitInMinutes = 0; }