//Lecture XML et génération objets public void chargerXml(XmlDocument xmlDoc, Mission M) { XmlNodeList nodelistCalendrier = xmlDoc.GetElementsByTagName("Calendrier_Martien"); //On crée une liste de tous les éléments dans tout le document qui portent le nom de Calendrier_Martien CalendrierMartien c = new CalendrierMartien(); foreach (XmlNode nodeCalendrier in nodelistCalendrier) //Pour tout les noeuds présents dans notre liste d'élements (ici on a juste un élément) { c.Debut = DateTime.Parse(nodeCalendrier.SelectSingleNode("Début").InnerText); //La date de début du calendrier est égale à ce qui est contenu dans le seul noeud portant le nom début c.Fin = DateTime.Parse(nodeCalendrier.SelectSingleNode("Fin").InnerText); c.Last= DateTime.Parse(nodeCalendrier.SelectSingleNode("Last").InnerText); c.Day = int.Parse(nodeCalendrier.SelectSingleNode("Jour").InnerText); c.Heure = int.Parse(nodeCalendrier.SelectSingleNode("Heure").InnerText); c.Minute = int.Parse(nodeCalendrier.SelectSingleNode("Minute").InnerText); c.Seconde = int.Parse(nodeCalendrier.SelectSingleNode("Seconde").InnerText); XmlNodeList nodelistJours = nodeCalendrier.SelectNodes("Liste_Jour"); foreach (XmlNode nodeJour in nodelistJours) { XmlNodeList nodelistJour = nodeJour.SelectNodes("Jour"); foreach (XmlNode jour in nodelistJour) { string CompteRendu = ""; int num = 0; bool[] tabHoraires = new bool[148]; Jour j = new Jour(CompteRendu, num, tabHoraires); j.CompteRendu = jour.SelectSingleNode("Compte_Rendu").InnerText; j.Numero = int.Parse(jour.SelectSingleNode("Numéro").InnerText); j.Sortie = bool.Parse(jour.SelectSingleNode("Sortie").InnerText); List<Activite> listeActivites = new List<Activite>(); XmlNodeList nodelistActivite = jour.SelectNodes("Liste_Activité"); foreach (XmlNode nodeActivite in nodelistActivite) { XmlNodeList nodelisteActivite = nodeActivite.SelectNodes("Activité"); foreach (XmlNode Activite in nodelisteActivite) { Heure debut = new Heure(0, 0); Heure fin = new Heure(0, 0); Lieu gps = new Lieu(); List<Astronaute> listAstronaute = new List<Astronaute>(); Activite a = new Activite(""); a.Nom = Activite.SelectSingleNode("Nom").InnerText; debut.Heures = int.Parse(Activite.SelectSingleNode("Heure_Debut").InnerText); fin.Heures = int.Parse(Activite.SelectSingleNode("Heure_Fin").InnerText); debut.Minutes = int.Parse(Activite.SelectSingleNode("Minute_Debut").InnerText); fin.Minutes = int.Parse(Activite.SelectSingleNode("Minute_Fin").InnerText); a.Debut = new Heure(debut.Heures, debut.Minutes); a.Fin = new Heure(fin.Heures, fin.Minutes); gps = Lieu.Parse(Activite.SelectSingleNode("Lieu")); a.Gps = gps; List<Astronaute> listAstr = new List<Astronaute>(); XmlNodeList nodelistAstronaute = Activite.SelectNodes("Liste_Astronaute"); foreach (XmlNode nodeAstronaute in nodelistAstronaute) { string nomAst = ""; int id = 0; XmlNodeList nodeAstronautee = nodeAstronaute.SelectNodes("Astronaute"); foreach (XmlNode nodeAstro in nodeAstronautee) { id = int.Parse(nodeAstro.SelectSingleNode("Id").InnerText); nomAst = nodeAstro.SelectSingleNode("Nom").InnerText; Astronaute ast = new Astronaute(id, nomAst); listAstr.Add(ast); } } a.ListAstronaute = listAstr; a.TexteDescriptif = Activite.SelectSingleNode("Texte_Descriptif").InnerText; listeActivites.Add(a); } } j.ListeActivites = listeActivites; XmlNodeList nodelistTabHoraire = jour.SelectNodes("Tableau_Horaire"); foreach (XmlNode nodeListeLibre in nodelistTabHoraire) { XmlNodeList nodelistLibre = nodeListeLibre.SelectNodes("Libre"); int i = 0; foreach (XmlNode nodeLibre in nodelistLibre) { tabHoraires[i] = bool.Parse(nodeLibre.InnerText); i++; } } j.TabHoraires = tabHoraires; c.Jours.Add(j); } } } M.Calendar = c; }
//INITIALISATION DE LA MISSION// /// <summary> /// Ici sont chargés les fichiers XML et instanciés les objets de la classe "Mission" /// </summary> public GestionMission() { InitializeComponent(); try { xmlDoc.Load(@"..\\..\\..\\sauvegarde1.xml"); M.chargerXml(xmlDoc, M); xmlDoc2.Load(@"..\\..\\..\\sauvegarde2.xml"); M.chargerXml2(xmlDoc2, M); M.Calendar.MiseAJour();//Pour remettre les pendules à l'heure Maj(new Object(), new EventArgs()); } catch { MessageBox.Show("Initialisation Mission", "", MessageBoxButtons.OK, MessageBoxIcon.Information); // Initialisation des paramètres de base pour une mission CalendrierMartien c = new CalendrierMartien(); List<Activite> VieCourante_act = new List<Activite>(); Activite manger = new Activite("Eating"); Activite dormir = new Activite("Sleeping"); Activite divertissement = new Activite("Entertainment"); Activite privé = new Activite("Private"); Activite ctrlSante = new Activite("Health control"); Activite actmedical = new Activite("Medical act"); VieCourante_act.Add(manger); VieCourante_act.Add(dormir); VieCourante_act.Add(divertissement); VieCourante_act.Add(privé); VieCourante_act.Add(ctrlSante); VieCourante_act.Add(actmedical); CategorieActivite VieCourante = new CategorieActivite("Living", VieCourante_act); List<Activite> Science_act = new List<Activite>(); Activite exploCost = new Activite("Exploration Space suit"); Activite exploVeh = new Activite("Exploration Vehicule"); Activite briefing = new Activite("Briefing"); Activite debriefing = new Activite("Debriefing"); Activite Expint = new Activite("Inside experiment"); Activite Expext = new Activite("Outside experiment"); Science_act.Add(exploCost); Science_act.Add(exploVeh); Science_act.Add(briefing); Science_act.Add(debriefing); Science_act.Add(Expint); Science_act.Add(Expext); CategorieActivite Science = new CategorieActivite("Science", Science_act); List<Activite> Maintenance_act = new List<Activite>(); Activite nettoyage = new Activite("Cleaning"); Activite LSSair = new Activite("LSS air system"); Activite LSSeau = new Activite("LSS water system"); Activite LSSnour = new Activite("LSS food system"); Activite powsyst = new Activite("Power systems"); Activite comb = new Activite("Space suit"); Activite autre = new Activite("Other"); Maintenance_act.Add(nettoyage); Maintenance_act.Add(LSSair); Maintenance_act.Add(LSSeau); Maintenance_act.Add(LSSnour); Maintenance_act.Add(powsyst); Maintenance_act.Add(comb); Maintenance_act.Add(autre); CategorieActivite Maintenance = new CategorieActivite("Maintenance", Maintenance_act); List<Activite> Communication_act = new List<Activite>(); Activite RecMess = new Activite("Sending message"); Activite EncMess = new Activite("Receiving message"); Communication_act.Add(RecMess); Communication_act.Add(EncMess); CategorieActivite Communication = new CategorieActivite("Communication", Communication_act); List<Activite> Reparation_act = new List<Activite>(); Activite LSS = new Activite("LSS"); Activite communication = new Activite("Communication"); Activite propSyst = new Activite("Propulsion systems"); Activite habitation = new Activite("Habitat"); Activite vehicule = new Activite("Vehicule"); Reparation_act.Add(LSS); Reparation_act.Add(powsyst); Reparation_act.Add(communication); Reparation_act.Add(propSyst); Reparation_act.Add(habitation); Reparation_act.Add(comb); Reparation_act.Add(vehicule); CategorieActivite Reparation = new CategorieActivite("Reparation", Reparation_act); List<Activite> Emergency_act = new List<Activite>(); Activite urgence = new Activite("Emergency"); Emergency_act.Add(urgence); CategorieActivite Urgence = new CategorieActivite("Emergency"); //Journée type par défaut : for (int i = 1; i < 501; i++) { Jour j = new Jour(i); j.AddAct(new Activite("Sleeping", new Heure(0, 0), new Heure(7, 0), "Un repos bien mérité !")); j.AddAct(new Activite("Eating", new Heure(7, 0), new Heure(8, 0), "Manger c'est important")); j.AddAct(new Activite("Private", new Heure(8, 0), new Heure(12, 0), "")); j.AddAct(new Activite("Eating", new Heure(12, 0), new Heure(14, 0), "Manger c'est important")); j.AddAct(new Activite("Private", new Heure(14, 0), new Heure(19, 0), "")); j.AddAct(new Activite("Eating", new Heure(19, 0), new Heure(21, 0), "Manger c'est important")); j.AddAct(new Activite("Private", new Heure(21, 0), new Heure(23, 0), "")); j.AddAct(new Activite("Sleeping", new Heure(23, 0), new Heure(24, 40), "Un repos bien mérité !")); c.AddJours(j); } //Ajout du calendrier et des activités à la mission : M.Calendar = c; M.AddCategorie(VieCourante); M.AddCategorie(Science); M.AddCategorie(Maintenance); M.AddCategorie(Communication); M.AddCategorie(Reparation); M.AddCategorie(Urgence); // Initialisation des astronautes : List<Astronaute> ListAtr = new List<Astronaute>(); Astronautes InitAstr = new Astronautes(); InitAstr.ShowDialog(); M.ListAstr = InitAstr.Astro(); InitAstr.BringToFront(); } timer1.Start(); dureMission.Maximum = 500; trackBar1.Maximum = 9; //Permet l'affichage des jours de 50 en 50 trackBar1_Scroll(new Object(), new EventArgs()); //Pour différencier les jours d'un scroll à l'autre }
public void AddJours(Jour J) { _Jours.Add(J); }