public void NonFinDepart() { if (ParamCommuns.Instance.Etat != ParamCommuns.EtatEnum.EnCourse) { if (this.Evenements == null) { this.Evenements = new ObservableCollection <EvenementPatineur>(); } EvenementPatineur ep = new EvenementPatineur(); ep.Evenement = "NFDTOUR"; ep.HeureEvenement = DateTime.Now; ep.TempsElapse = new TimeSpan(23, 59, 59); ep.NbTour = 0; this.Evenements.Add(ep); //MessageBox.Show("La course doit être en cours afin d'enregistrer un temps"); return; } if (!this.Termine) { EvenementPatineur ep = new EvenementPatineur(); ep.Evenement = "TOUR"; ep.HeureEvenement = DateTime.Now; ep.TempsElapse = new TimeSpan(23, 59, 59); ep.NbTour = 0; this.Evenements.Add(ep); this.DernierTemps = ep.DernierTemps(); this.FinCourse(ep.HeureEvenement, ep.TempsElapse); } }
public void Tour(DateTime temps) { if (ParamCommuns.Instance.Etat != ParamCommuns.EtatEnum.EnCourse) { if (this.Evenements == null) { this.Evenements = new ObservableCollection <EvenementPatineur>(); } EvenementPatineur ep = new EvenementPatineur(); ep.Evenement = "NTOUR"; ep.HeureEvenement = DateTime.Now; ep.TempsElapse = new TimeSpan(23, 59, 59); ep.NbTour = 0; this.Evenements.Add(ep); //MessageBox.Show("La course doit être en cours afin d'enregistrer un temps"); return; } if (this.Evenements == null || this.Evenements.Count == 0) { if (this.Evenements == null) { this.Evenements = new ObservableCollection <EvenementPatineur>(); } EvenementPatineur ep = new EvenementPatineur(); ep.Evenement = "NTOUR"; ep.HeureEvenement = DateTime.Now; ep.TempsElapse = new TimeSpan(23, 59, 59); ep.NbTour = 0; this.Evenements.Add(ep); //MessageBox.Show("La course doit être en cours afin d'enregistrer un temps"); return; } EvenementPatineur eve = this.Evenements.Where(z => z.Evenement == "DEPART").Last(); if (eve != null) { DateTime dep = eve.HeureEvenement; int pos = this.Evenements.IndexOf(eve); List <EvenementPatineur> lep = new List <EvenementPatineur>(); for (int i = pos; i < this.Evenements.Count(); i++) { if (this.Evenements[i].Evenement == "TOUR" || this.Evenements[i].Evenement == "DEPART") { lep.Add(this.Evenements[i]); } } //DateTime preced = null; bool decrementTour = true; bool finCourse = false; bool tourComplet = false; EvenementPatineur ep = new EvenementPatineur(); if (lep.Count > 0) { decrementTour = false; int trMin = lep.Min(z => z.NbTour); EvenementPatineur preced = lep.Where(z => z.NbTour == trMin).First(); DateTime trPreced = preced.HeureEvenement; TimeSpan ts = temps - trPreced; if (ts.TotalSeconds > 5) { decrementTour = true; } if (decrementTour) { ep.NbTour = preced.NbTour - 1; this.DernierTour = ep.DernierTour(ts); tourComplet = true; if (ep.NbTour == 0) { // Enregistrer la fin de la course pour ce patineur. finCourse = true; } } else { ep.NbTour = preced.NbTour; } } else { ep.NbTour = this.NbTourCourse - 1; tourComplet = true; } if (ep.NbTour != 0 && this.Termine) { // On inscrit pas de temps si le patineur a terminé sa course // EXCEPTION du double tour zéro! return; } ep.HeureEvenement = temps; ep.TempsElapse = temps - dep; this.DernierTemps = ep.DernierTemps(); ep.Evenement = "TOUR"; this.NbTour = ep.NbTour; this.NbTourAffiche = ep.NbTour - 1; this.Evenements.Add(ep); if (tourComplet && this.TourComplete != null) { this.TourComplete(this, new EventArgs()); } this.NotifierWeb(); if (finCourse) { this.FinCourse(ep.HeureEvenement, ep.HeureEvenement - dep); } } }