/// <summary> /// Permet de trouver une activité dans la journée en fonction d'une heure de début /// </summary> /// <param name="heure">Une heure</param> /// <returns>L'activité se passant à l'heure donnée</returns> public Activite trouverActivite(TimeMartien tm, bool debut) { if (tm != null) { if (!debut && tm.getHeures() == 0 && tm.getMinutes() == 0 && tm.getSecondes() == 0) { tm = new TimeMartien(0, 24, 39, 58); } foreach (Activite a in listeActivites) { if (a.getHeureFin().getHeures() == 0 && a.getHeureFin().getMinutes() == 0 && a.getHeureFin().getSecondes() == 0) { a.setHeureFin(new TimeMartien(0, 24, 39, 59)); } if (a.getHeureDebut() <= tm && a.getHeureFin() > tm) { if (a.getHeureFin().getHeures() == 24 && a.getHeureFin().getMinutes() == 39 && a.getHeureFin().getSecondes() == 59) { a.setHeureFin(new TimeMartien(0, 24, 40, 00)); } return(a); } } } return(null); }
/// <summary> /// Permet de savoir quand deux TimeMartien sont égaux /// </summary> /// <param name="obj">Un TimeMartien</param> /// <returns>Vrai si les deux TImeMartien sont égaux, faux sinon</returns> public override bool Equals(object obj) { TimeMartien t2 = obj as TimeMartien; if (t2 != null) { if (this.getHeures() == t2.getHeures()) { if (this.getMinutes() == t2.getMinutes()) { if (this.getSecondes() == t2.getSecondes()) { return(true); } } } } return(false); }
/// <summary> /// Permet de jouer avec les Max/Min pour l'heure 20h et > 39 minutes /// </summary> /// <param name="sender">Objet source</param> /// <param name="e">Evènement</param> private void duree_ValueChanged(object sender, EventArgs e) { if (heureDebutStatic != null && heureFinStatic != null) { if (debutHeure.Value == finHeure.Value) { debutHeure.Maximum = finHeure.Value; debutMinute.Value = (debutMinute.Value > finMinute.Value) ? finMinute.Value : debutMinute.Value; debutMinute.Maximum = finMinute.Value; } else { debutHeure.Maximum = (heureFinStatic.getHeures() == 0 && heureFinStatic.getMinutes() == 0) ? 24 : heureFinStatic.getHeures(); debutMinute.Maximum = 50; } } if (finHeure.Value == 24) { finMinute.Maximum = 40; } else { finMinute.Maximum = 50; } if (debutHeure.Value == 24) { debutMinute.Maximum = 40; } else { debutMinute.Maximum = 50; } String valDebut = debutMinute.Value.ToString(); String valFin = finMinute.Value.ToString(); debutMinute.Value = (debutMinute.Value - int.Parse(valDebut[valDebut.Length - 1].ToString())); finMinute.Value = (finMinute.Value - int.Parse(valFin[valFin.Length - 1].ToString())); }
/// <summary> /// Permet de savoir si une activité se passe dans la période donnée /// </summary> /// <param name="debutActivite">Début de l'activité</param> /// <param name="finActivite">Fin de l'activité</param> /// <param name="heureDebut">Début de la période</param> /// <param name="heureFin">Fin de la période</param> /// <returns>Vrai si l'activité se passe dans la période, faux sinon</returns> public static bool sePasseDansPeriode(TimeMartien debutActivite, TimeMartien finActivite, TimeMartien heureDebut, TimeMartien heureFin) { if (finActivite.getHeures() == 0 && finActivite.getMinutes() == 0 && finActivite.getSecondes() == 0) { finActivite = new TimeMartien(0, 24, 39, 59); } if (heureFin.getHeures() == 0 && heureFin.getMinutes() == 0 && heureFin.getSecondes() == 0) { heureFin = new TimeMartien(0, 24, 39, 59); } bool dINFd = (debutActivite <= heureDebut); bool dSUPd = (debutActivite >= heureDebut); bool fINFf = (finActivite <= heureFin); bool fSUPf = (finActivite >= heureFin); bool dINFf = (debutActivite < heureFin || debutActivite.getJours() < heureFin.getJours()); bool fSUPd = (finActivite > heureDebut || finActivite.getJours() > heureDebut.getJours()); if (dINFd && fSUPf && dINFf && fSUPd) { return(true); } else if (dSUPd && fINFf && dINFf && fSUPd) { return(true); } else if (dSUPd && fSUPf && dINFf && fSUPd) { return(true); } else if (dINFd && fINFf && dINFf && fSUPd) { return(true); } return(false); }
/// <summary> /// Permet de mettre à jour les activités en fonction de si elles sont passées ou non /// </summary> public void mettreAJourActiviteEnCours() { TimeMartien heureActuelle = TimeMartien.calculerJours(debutMission); for (int k = 1; k <= journeeActuelle.getNumero(); ++k) { Journee j = journeesMission[k]; for (int i = 0; i < heures.Count; ++i) { if (heures[i].Tag.ToString().Equals(heureActuelle.getHeures().ToString()) && journeeActuelle.getNumero() == k) { j.trouverActivite(heureActuelle, ((heureActuelle.getHeures() == 0 && heureActuelle.getMinutes() == 0) ? true : false)).activiteEnCours(); } else if (int.Parse(heures[i].Tag.ToString()) < heureActuelle.getHeures() || journeeActuelle.getNumero() != k) { foreach (Activite a in j.getActivites()) { TimeMartien tm = new TimeMartien(0, int.Parse(heures[i].Tag.ToString()), 0, 0); if ((a.getHeureFin() < heureActuelle || journeeActuelle.getNumero() != k)) { a.activitePassee(); } if ((j.getNumero() > journeeActuelle.getNumero()) || (j.getNumero() == journeeActuelle.getNumero() && a.getHeureFin().getHeures() == 0 && a.getHeureFin().getMinutes() == 0)) { a.activiteAVenir(); } } } } } }