예제 #1
0
        /// <summary>
        /// Permet d'associer une activité à un label ou un groupe de labels
        /// </summary>
        public void lierActiviteEtEdt()
        {
            Journee j = journeesMission[journeeSelectionnee];

            for (int i = 0; i < 25; ++i)
            {
                List <Activite> acts = j.trouverActivites(i);

                foreach (Activite a in acts)
                {
                    heures[i].Text += a.getNom() + ", ";

                    if (a.isActiviteExterieure())
                    {
                        Bitmap img = (a.isExploration()) ? ((ExplorationExterieure)a).deplacement() : ((ExperienceExterieure)a).deplacement();
                        iconesActivite[i].Image   = img;
                        iconesActivite[i].Visible = true;
                    }
                    else
                    {
                        iconesActivite[i].Visible = false;
                    }

                    heures[i].BackColor = Color.FromArgb(a.couleurActivite()[0],
                                                         a.couleurActivite()[1],
                                                         a.couleurActivite()[2]);
                }
            }
        }
예제 #2
0
        /// <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();
                            }
                        }
                    }
                }
            }
        }
예제 #3
0
        /// <summary>
        /// Permet de mettre à jour l'emploi du temps
        /// </summary>
        /// <param name="journee">La journée à mettre à jour</param>
        public void miseAJourEdt(Journee journee)
        {
            for (int i = 0; i < 25; ++i)
            {
                heures[i].Text = "";
            }

            numJourneeLabel.Text = "Journée " + journeeSelectionnee;

            lierActiviteEtEdt();

            int jourPeriode = journee.getNumero();

            while (jourPeriode > 50)
            {
                jourPeriode -= 50;
            }

            if (journee.isJourneeExterieure())
            {
                icones[jourPeriode].Visible = true;
            }
            else
            {
                icones[jourPeriode].Visible = false;
            }

            avancementMission.Value = (int)((journeeActuelle.getNumero() * 100) / Constantes.NB_JOUR_MISSION);
            mettreAJourActiviteEnCours();
            this.Refresh();
        }
예제 #4
0
        public void accesseursTest()
        {
            Journee j = new Journee(54);

            Assert.IsNotNull(j.getActivites(), "getActivites ne revoie pas la bonne valeur");
            Assert.AreEqual(j.getDescription(), "", "getDescription ne renvoie pas la bonne valeur");
            Assert.AreEqual(j.getNumero(), 54, "getNumero ne renvoie pas la bonne valeur");
            Assert.AreEqual(j.isJourneeExterieure(), false, "isJourneeExterieure ne renvoie pas la bonne valeur");

            j.setRapport("LOL");
            List<Activite> lA = new List<Activite> { new Activite(new TypeActivite("Lel")) };
            j.setListeActivites(lA);
            j.setJourneeExterieure(true);

            Assert.AreEqual(j.getActivites(), lA, "setActivites ne fonctionne pas");
            Assert.AreEqual(j.getDescription(), "LOL", "setDescription ne renvoie pas la bonne valeur");
            Assert.AreEqual(j.isJourneeExterieure(), true, "setJourneeExterieure ne renvoie pas la bonne valeur");

            String str = "";
            for (int i = 0; i < 1000; ++i)
                str += i.ToString();

            bool texteOK = j.setRapport(str);
            Assert.IsFalse(texteOK, "La description dépasse les 1000 caractères");
        }
예제 #5
0
        public void ajouterActiviteTest()
        {
            Journee j = new Journee();
            Activite a = new Activite(new TypeActivite("Lel"), "xD", new TimeMartien(0, 0, 0, 0), new TimeMartien(1, 2, 3, 4), new Lieu(0, 0));
            j.ajouterActivite(a);

            Assert.IsNotNull(j.getActivites(), "L'ajout d'activité a échoué");
        }
예제 #6
0
        /// <summary>
        /// Permet d'ouvrir le dernier Form DetailHeure (afin de le mettre à jour)
        /// </summary>
        public void ouvrirDernierDetailHeure()
        {
            Journee j = journeesMission[journeeSelectionnee];

            DetailHeure dh = new DetailHeure(heureSelectionnee, j.trouverActivites(heureSelectionnee), j, this);

            dh.Show();
        }
예제 #7
0
        /// <summary>
        /// Permet d'afficher les détails d'une heure lorsqu'elle est sélectionnée
        /// </summary>
        /// <param name="sender">Objet source</param>
        /// <param name="e">Evènement</param>
        private void horaire_Click(object sender, EventArgs e)
        {
            heureSelectionnee = int.Parse(((Label)sender).Tag.ToString());
            Journee j = journeesMission[journeeSelectionnee];

            DetailHeure dh = new DetailHeure(heureSelectionnee, j.trouverActivites(heureSelectionnee), j, this);

            dh.Show();
        }
예제 #8
0
        /// <summary>
        /// Permet de créer un emploi du temps pour l'astronaute
        /// </summary>
        public void creerEdT(int numJour)
        {
            for (int i = 1; i < 501; ++i)
                journeesMission[i] = new Journee(i);

            // Mise à jour des jours : passés | en cours | à venir
            for (int i = 1; i < numJour; ++i)
                journeesMission[i].journeePassee();
            journeesMission[numJour].journeeEnCours();
        }
예제 #9
0
        /// <summary>
        /// Constructeur paramétré
        /// </summary>
        /// <param name="dt">Début de la mission</param>
        /// <param name="chargement">Chargement des données par XML ?</param>
        public CalendrierMission(DateTime dt, bool chargement)
        {
            InitializeComponent();

            debutMission = dt;

            periode             = 1;
            journeeSelectionnee = 1;

            panels         = new Dictionary <int, Panel>();
            icones         = new Dictionary <int, PictureBox>();
            iconesActivite = new Dictionary <int, PictureBox>();
            numeros        = new Dictionary <int, Label>();
            heures         = new Dictionary <int, Label>();
            domaines       = new List <Domaine>();
            astronautes    = new List <Astronaute>();

            initialiserDomaines();

            if (!chargement)
            {
                Astronaute a = new Astronaute("Baudry", "Patrick", 69);
                astronauteSelectionne = a;
                astronautes.Add(a);

                journeesMission = astronauteSelectionne.getJourneesMission();

                initialisationInterface();

                TimeMartien nb      = TimeMartien.calculerJours(debutMission);
                int         numJour = nb.getJours() + 1;

                if (numJour > 500)
                {
                    numJour = 500;
                }

                foreach (Astronaute astro in astronautes)
                {
                    astro.creerEdT(numJour);
                    astroList.Items.Add(astro);
                }

                journeeActuelle = journeesMission[numJour];

                changerPeriode(periode);
                verificationChangementPeriode();
                mettreAJourHeures();
                miseAJourEdt(journeesMission[journeeSelectionnee]);

                descriptionTexte.Text  = journeesMission[journeeSelectionnee].getDescription();
                astroList.SelectedItem = astronauteSelectionne;
                mettreAJourActiviteEnCours();
            }
        }
예제 #10
0
        /// <summary>
        /// Permet de créer un emploi du temps pour l'astronaute
        /// </summary>
        public void creerEdT(int numJour)
        {
            for (int i = 1; i < 501; ++i)
            {
                journeesMission[i] = new Journee(i);
            }

            // Mise à jour des jours : passés | en cours | à venir
            for (int i = 1; i < numJour; ++i)
            {
                journeesMission[i].journeePassee();
            }
            journeesMission[numJour].journeeEnCours();
        }
예제 #11
0
        /// <summary>
        /// Permet de mettre à jour les jours en fonction de s'ils sont passés ou non
        /// </summary>
        /// <param name="sender">Objet source</param>
        /// <param name="e">Evènement</param>
        private void timerJour_Tick(object sender, EventArgs e)
        {
            TimeMartien nb = TimeMartien.calculerJours(debutMission);

            int numJour = nb.getJours() + 1;

            if (numJour > 500)
            {
                numJour = 500;
            }

            for (int i = 1; i < numJour; ++i)
            {
                journeesMission[i].journeePassee();
            }
            journeeActuelle = journeesMission[numJour];
            journeesMission[numJour].journeeEnCours();

            changerPeriode(periode);
            verificationChangementPeriode();
            mettreAJourHeures();
            miseAJourEdt(journeesMission[journeeSelectionnee]);
        }
예제 #12
0
        public void trouverActiviteTest()
        {
            Journee j = new Journee();
            j.setListeActivites(new List<Activite>());
            Activite a1 = new Activite(new TypeActivite("Lel1"), "xD1", new TimeMartien(0), new TimeMartien(10), new Lieu(0, 0));
            Activite a2 = new Activite(new TypeActivite("Lel2"), "xD2", new TimeMartien(10), new TimeMartien(20), new Lieu(20, 30));
            Activite a3 = new Activite(new TypeActivite("Lel3"), "xD3", new TimeMartien(20), new TimeMartien(0, 24, 40, 0), new Lieu(12, 45));
            Activite a4 = new Activite(new TypeActivite("Lel4"), "xD4", new TimeMartien(10), new TimeMartien(15), new Lieu(20, 30));

            j.ajouterActivite(a1);
            j.ajouterActivite(a2);
            j.ajouterActivite(a3);
            j.ajouterActivite(a4);

            Assert.IsNull(j.trouverActivite(null, true), "On ne peut pas rechercher quelque chose de null");

            Activite trouve = j.trouverActivite(new TimeMartien(8), true);

            Assert.IsNotNull(trouve, "La fonction trouverActivite ne fonctionne pas");
            Assert.IsTrue(trouve.getNom().Equals(a1.getNom()), "La méthode a trouvé une activité qui ne correspond pas à ce qui est recherché");

            trouve = j.trouverActivite(new TimeMartien(0), false);

            Assert.IsNotNull(trouve, "La fonction trouverActivite ne fonctionne pas");
            Assert.IsTrue(trouve.getNom().Equals(a3.getNom()), "La méthode a trouvé une activité qui ne correspond pas à ce qui est recherché");
        }
예제 #13
0
        /// <summary>
        /// Permet de charger les données depuis un fichier XML
        /// </summary>
        /// <param name="marsOMatic">Le fichier XML Mars-o-Matic</param>
        /// <param name="activitesRefs">Le fichier XML ActivitesRefs associé au fichier précédent</param>
        private void chargerXml(String marsOMatic, String activitesRefs)
        {
            XmlDocument mars = new XmlDocument();

            mars.Load(marsOMatic);
            XmlDocument acts = new XmlDocument();

            acts.Load(activitesRefs);

            Dictionary <int, Activite> activitesBase = new Dictionary <int, Activite>();

            int nbElements = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("NbElements").InnerText);

            Progression p = new Progression(nbElements);

            p.Show();

            /* Chargement données des activités de base */
            XmlNodeList activites = acts.GetElementsByTagName("Activite");

            foreach (XmlNode n in activites)
            {
                Activite a;

                int          num         = int.Parse(n.SelectSingleNode("Numero").InnerText);
                bool         exterieure  = bool.Parse(n.SelectSingleNode("Exterieure").InnerText);
                bool         exploration = bool.Parse(n.SelectSingleNode("Exploration").InnerText);
                TypeActivite ta          = new TypeActivite(n.SelectSingleNode("TypeActivite").SelectSingleNode("Nom").InnerText);

                if (exterieure)
                {
                    if (exploration)
                    {
                        a = new ExplorationExterieure(ta, "", null, null, null, null);
                    }
                    else
                    {
                        a = new ExperienceExterieure(ta, "", null, null, null, null);
                    }
                }
                else
                {
                    a = new Activite(ta);
                }

                activitesBase.Add(num, a);

                p.incrementer();
            }

            /* Chargement données */
            int jour     = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Jour").InnerText);
            int mois     = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Mois").InnerText);
            int annee    = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Annee").InnerText);
            int heures   = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Heures").InnerText);
            int minutes  = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Minutes").InnerText);
            int secondes = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Secondes").InnerText);

            this.debutMission = new DateTime(annee, mois, jour, heures, minutes, secondes);

            TimeMartien nb      = TimeMartien.calculerJours(debutMission);
            int         numJour = nb.getJours() + 1;

            if (numJour > 500)
            {
                numJour = 500;
            }

            XmlNodeList astronautesNodes = mars.GetElementsByTagName("Astronaute");

            foreach (XmlNode n in astronautesNodes)
            {
                String nom    = n.SelectSingleNode("Nom").InnerText;
                String prenom = n.SelectSingleNode("Prenom").InnerText;
                int    age    = int.Parse(n.SelectSingleNode("Age").InnerText);

                Astronaute a = new Astronaute(nom, prenom, age);

                Dictionary <int, Journee> joursMission = new Dictionary <int, Journee>();
                a.setJourneesMission(joursMission);

                astronautes.Add(a);
                a.getJourneesMission().Clear();
                astroList.Items.Add(a); // Ajout dans la liste => interface

                XmlNodeList missionNode = n.SelectSingleNode("JourneesMission").SelectNodes("Journee");

                foreach (XmlNode nn in missionNode)
                {
                    int    num         = int.Parse(nn.SelectSingleNode("Numero").InnerText);
                    String etat        = nn.SelectSingleNode("Etat").InnerText;
                    IEtat  etatJournee = new Passe();

                    if (etat.Equals("EnCours"))
                    {
                        etatJournee = new EnCours();
                    }
                    else if (etat.Equals("Futur"))
                    {
                        etatJournee = new Futur();
                    }

                    String rapport = nn.SelectSingleNode("Rapport").InnerText;

                    Journee j = new Journee(num, rapport, etatJournee, false);
                    j.getActivites().Clear();
                    joursMission.Add(num, j);

                    XmlNodeList activitesNode = nn.SelectSingleNode("Activites").SelectNodes("Activite");

                    foreach (XmlNode nnn in activitesNode)
                    {
                        int        numA         = int.Parse(nnn.SelectSingleNode("Numero").InnerText);
                        String     transport    = nnn.SelectSingleNode("Transport").InnerText;
                        ITransport transportAct = null;

                        if (transport.Equals("Scaphandre"))
                        {
                            transportAct = new Scaphandre();
                        }
                        else if (transport.Equals("Vehicule"))
                        {
                            transportAct = new Vehicule();
                        }

                        String description = nnn.SelectSingleNode("Description").InnerText;
                        etat = nnn.SelectSingleNode("Etat").InnerText;
                        IEtat etatAct = new Passe();

                        if (etat.Equals("EnCours"))
                        {
                            etatAct = new EnCours();
                        }
                        else if (etat.Equals("Futur"))
                        {
                            etatAct = new Futur();
                        }

                        int mD = int.Parse(nnn.SelectSingleNode("HeureDebut").InnerText);

                        int mF = int.Parse(nnn.SelectSingleNode("HeureFin").InnerText);

                        String xy = nnn.SelectSingleNode("XY").InnerText;
                        int    x  = int.Parse(xy.Split(',')[0]);
                        int    y  = int.Parse(xy.Split(',')[1]);

                        Lieu l = new Lieu(x, y);

                        Activite aBase = activitesBase[numA];
                        Activite act;

                        if (aBase.isActiviteExterieure())
                        {
                            if (aBase.isExperience())
                            {
                                act = new ExperienceExterieure(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l, transportAct);
                            }
                            else
                            {
                                act = new ExplorationExterieure(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l, transportAct);
                            }
                        }
                        else
                        {
                            act = new Activite(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l);
                        }


                        act.setDescription(description);

                        act.setEtat(etatAct);

                        j.ajouterActivite(act);

                        p.incrementer();
                    }
                    p.incrementer();
                }
                p.incrementer();
            }

            initialisationInterface();

            astronauteSelectionne = astronautes[0];
            journeesMission       = astronauteSelectionne.getJourneesMission();
            journeeActuelle       = journeesMission[numJour];

            modificationJourneeActuelle(numJour);

            changerPeriode(periode);
            verificationChangementPeriode();
            mettreAJourHeures();
            miseAJourEdt(journeesMission[journeeSelectionnee]);

            descriptionTexte.Text  = journeesMission[journeeSelectionnee].getDescription();
            astroList.SelectedItem = astronauteSelectionne;

            p.fermerFenetre();
        }
예제 #14
0
        public void supprimerActiviteTest()
        {
            Journee j = new Journee();
            Activite a = new Activite(new TypeActivite("Lel"), "xD", new TimeMartien(0, 0, 0, 0), new TimeMartien(1, 2, 3, 4), new Lieu(0, 0));
            j.ajouterActivite(a);
            j.supprimerActivite(a);

            Activite actSuppr = j.getActivites().Find(e => (e.getNom().Equals(a.getNom()) && e.getDescription().Equals(a.getDescription())));

            Assert.IsNull(actSuppr, "La suppression d'activité a échoué");
        }
예제 #15
0
        public void trouverActivitesTest()
        {
            Journee j = new Journee();
            j.setListeActivites(new List<Activite>());
            Activite a1 = new Activite(new TypeActivite("Lel1"), "xD1", new TimeMartien(0), new TimeMartien(10), new Lieu(0, 0));
            Activite a2 = new Activite(new TypeActivite("Lel2"), "xD2", new TimeMartien(10), new TimeMartien(20), new Lieu(20, 30));
            Activite a3 = new Activite(new TypeActivite("Lel3"), "xD3", new TimeMartien(20), new TimeMartien(0, 24, 40, 0), new Lieu(12, 45));
            Activite a4 = new Activite(new TypeActivite("Lel4"), "xD4", new TimeMartien(10), new TimeMartien(15), new Lieu(20, 30));

            j.ajouterActivite(a1);
            j.ajouterActivite(a2);
            j.ajouterActivite(a3);
            j.ajouterActivite(a4);

            List<Activite> trouvees = j.trouverActivites(11);

            Assert.IsNotNull(trouvees, "La fonction trouverActivites ne fonctionne pas");
            Assert.IsTrue(a2.Equals(trouvees.Find(e => e.getNom().Equals(a2.getNom()))), "La méthode a trouvé une activité qui ne correspond pas à ce qui est recherché");
            Assert.IsTrue(trouvees.Count == 2, "La méthode n'a pas trouvé le bon nombre d'éléments");

            trouvees = j.trouverActivites(36);

            Assert.IsNotNull(trouvees, "La fonction trouverActivites ne fonctionne pas");
            Assert.IsTrue(a2.Equals(trouvees.Find(e => e.getNom().Equals(a2.getNom()))), "La méthode a trouvé une activité qui ne correspond pas à ce qui est recherché");
            Assert.IsTrue(trouvees.Count == 2, "La méthode n'a pas trouvé le bon nombre d'éléments");
        }
예제 #16
0
        public void journeePasseeTest()
        {
            Journee j = new Journee();

            j.journeePassee();
            Assert.AreEqual(j.getEtat(), Constantes.ETAT_PASSE, "L'état de la journée n'est pas le bon");
        }
예제 #17
0
        public void mettreAJourJourneeExterieureTest()
        {
            Journee target = new Journee();
            bool expected = false;
            bool actual;
            actual = target.mettreAJourJourneeExterieure();
            Assert.AreEqual(expected, actual);

            target = new Journee();
            target.ajouterActivite(new ExplorationExterieure(new TypeActivite("Toto"), "", new TimeMartien(0), new TimeMartien(2), new Lieu(0, 0), null));
            expected = true;
            actual = target.mettreAJourJourneeExterieure();
            Assert.AreEqual(expected, actual);
        }
예제 #18
0
        public void journeeAVenirTest()
        {
            Journee j = new Journee();

            j.journeeAVenir();
            Assert.AreEqual(j.getEtat(), Constantes.ETAT_FUTUR, "L'état de la journée n'est pas le bon");
        }
예제 #19
0
        public void journeeEnCoursTest()
        {
            Journee j = new Journee();

            j.journeeEnCours();
            Assert.AreEqual(j.getEtat(), Constantes.ETAT_ENCOURS, "L'état de la journée n'est pas le bon");
        }
예제 #20
0
        /// <summary>
        /// COnstructeur paramétré
        /// </summary>
        /// <param name="heureSelectionnee">Une heure</param>
        /// <param name="activites">La liste des activités de la journée</param>
        /// <param name="journee">La journée</param>
        /// <param name="cm">Le CalendrierMission source</param>
        public DetailHeure(int heureSelectionnee, List <Activite> activites, Journee journee, CalendrierMission cm)
        {
            InitializeComponent();

            this.heureSelectionnee = heureSelectionnee;
            this.activites         = activites;

            horaires       = new Dictionary <int, Label>();
            heures         = new Dictionary <int, Label>();
            iconesActivite = new Dictionary <int, PictureBox>();
            this.journee   = journee;
            this.cm        = cm;

            for (int i = 0; i <= 60; i += 10)
            {
                Control[] ctrl;

                if (i <= 50)
                {
                    ctrl        = this.Controls.Find("actM" + i, true);
                    horaires[i] = (Label)ctrl[0];

                    ctrl = this.Controls.Find("h" + i + "img", true);
                    iconesActivite[i] = (PictureBox)ctrl[0];
                }

                ctrl      = this.Controls.Find("label" + i, true);
                heures[i] = (Label)ctrl[0];
            }

            foreach (Activite a in activites)
            {
                int debut = a.getHeureDebut().getMinutes();
                int fin   = a.getHeureFin().getMinutes();

                int hDebut = a.getHeureDebut().getHeures();
                int hFin   = a.getHeureFin().getHeures();

                String nom = a.getNom();

                if (hDebut < heureSelectionnee)
                {
                    debut = 0;
                }
                if (hFin > heureSelectionnee)
                {
                    fin = 60;
                }

                if (fin == 0 && heureSelectionnee != 24)
                {
                    fin = 60;
                }
                else if (fin == 0 && heureSelectionnee == 24)
                {
                    fin = 40;
                }

                heures[60].Text = (heureSelectionnee + 1) + "h00";

                for (int i = debut; i < fin; i += 10)
                {
                    if ((heureSelectionnee + "h" + i + ((i < 10) ? "0" : "")).Equals("24h40"))
                    {
                        heures[i].Text = "0h00";
                    }

                    horaires[i].Text = a.getNom();
                    heures[i].Text   = heureSelectionnee + "h" + i + ((i < 10) ? "0" : "");

                    int h = int.Parse(heures[i].Text.Split('h')[0]);
                    int m = int.Parse(heures[i].Text.Split('h')[1]);

                    if (h == 24 && m > 40)
                    {
                        heures[i].Visible        = false;
                        horaires[i - 10].Visible = false;
                        this.Size = new Size(379, 158);
                    }

                    foreach (Domaine d in CalendrierMission.domaines)
                    {
                        if (d.getNomActivites().Contains(a.getNom()) || d.getNom().Equals(a.getNom()))
                        {
                            horaires[i].BackColor = Color.FromArgb(d.getCouleur()[0], d.getCouleur()[1], d.getCouleur()[2]);
                        }
                    }

                    if (a.isActiviteExterieure())
                    {
                        Bitmap img = (a.isExploration()) ? ((ExplorationExterieure)a).deplacement() : ((ExperienceExterieure)a).deplacement();
                        iconesActivite[i].Image   = img;
                        iconesActivite[i].Visible = true;
                    }
                    else
                    {
                        iconesActivite[i].Visible = false;
                    }
                }

                if (heureSelectionnee == 24)
                {
                    for (int i = 40; i < 60; i += 10)
                    {
                        heures[i + 10].Visible    = false;
                        iconesActivite[i].Visible = false;
                        horaires[i].Visible       = false;
                    }

                    if (fin < 60)
                    {
                        label40.Text    = "0h00";
                        label60.Visible = false;
                        this.Size       = new Size(379, 158);
                    }
                }
            }
        }
예제 #21
0
        /// <summary>
        /// Constructeur paramétré
        /// </summary>
        /// <param name="j">Une journée</param>
        /// <param name="a">Une activité la journée</param>
        /// <param name="cm">L'interface graphique CalendrierMission</param>
        /// <param name="dh">L'interface graphique DetailHeure</param>
        public ModificationActivite(Journee j, Activite a, CalendrierMission cm, DetailHeure dh)
        {
            if (a.getHeureFin().getHeures() == 24 && a.getHeureFin().getMinutes() == 39)
                a.setHeureFin(new TimeMartien(0));

            InitializeComponent();
            this.dh = dh;

            if (finHeure.Value == 0 && finMinute.Value == 0)
            {
                finHeure.Value = 24;
                finMinute.Value = 40;
            }

            debutHeure.Maximum = finHeure.Value;

            lieu = new Lieu(0, 0);

            activiteAModifier = a;
            journeeAModifier = j;
            this.cm = cm;

            debutHeure.Value = activiteAModifier.getHeureDebut().getHeures();
            finHeure.Value = activiteAModifier.getHeureFin().getHeures();

            debutMinute.Value = activiteAModifier.getHeureDebut().getMinutes();
            finMinute.Value = activiteAModifier.getHeureFin().getMinutes();

            debutHeure.Minimum = debutHeure.Value;
            finHeure.Maximum = (finHeure.Value == 0) ? 24 : finHeure.Value;

            finHeure.Minimum = (finHeure.Value == 0) ? 0 : debutHeure.Value;

            remplirTreeView();

            descriptionTB.Text = a.getDescription();

            if (a.isActiviteExterieure())
            {
                exterieurRadio.Checked = true;

                if (a.isExploration())
                {
                    explorationRadio.Checked = true;
                    scaphandreRadio.Checked = (((ExplorationExterieure)a).nomTransport().Equals("Scaphandre")) ? true : false;
                    vehiculeRadio.Checked = !scaphandreRadio.Checked;
                }
                else
                {
                    experienceRadio.Checked = true;
                    scaphandreRadio.Checked = (((ExperienceExterieure)a).nomTransport().Equals("Scaphandre")) ? true : false;
                    vehiculeRadio.Checked = !scaphandreRadio.Checked;
                }
            }
            else
                interieurRadio.Checked = true;

            foreach (TreeNode tn in treeView.Nodes)
                foreach (TreeNode tnn in tn.Nodes)
                    if (tnn.Text.Equals(a.getNom()))
                        treeView.SelectedNode = tnn;

            lieuTB.Text = activiteAModifier.getLieu().ToString();

            debutHeure.Maximum = finHeure.Maximum;

            heureDebutStatic = new TimeMartien(0, (int) debutHeure.Value, (int) debutMinute.Value, 0);
            heureFinStatic = new TimeMartien(0, (int) finHeure.Value, (int) finMinute.Value, 0);
        }
예제 #22
0
        /// <summary>
        /// Permet de mettre à jour l'emploi du temps
        /// </summary>
        /// <param name="journee">La journée à mettre à jour</param>
        public void miseAJourEdt(Journee journee)
        {
            for (int i = 0; i < 25; ++i)
                heures[i].Text = "";

            numJourneeLabel.Text = "Journée " + journeeSelectionnee;

            lierActiviteEtEdt();

            int jourPeriode = journee.getNumero();

            while (jourPeriode > 50)
                jourPeriode -= 50;

            if (journee.isJourneeExterieure())
                icones[jourPeriode].Visible = true;
            else
                icones[jourPeriode].Visible = false;

            avancementMission.Value = (int) ((journeeActuelle.getNumero() * 100) / Constantes.NB_JOUR_MISSION);
            mettreAJourActiviteEnCours();
            this.Refresh();
        }
예제 #23
0
        /// <summary>
        /// Permet de charger les données depuis un fichier XML
        /// </summary>
        /// <param name="marsOMatic">Le fichier XML Mars-o-Matic</param>
        /// <param name="activitesRefs">Le fichier XML ActivitesRefs associé au fichier précédent</param>
        private void chargerXml(String marsOMatic, String activitesRefs)
        {
            XmlDocument mars = new XmlDocument();
            mars.Load(marsOMatic);
            XmlDocument acts = new XmlDocument();
            acts.Load(activitesRefs);

            Dictionary<int, Activite> activitesBase = new Dictionary<int, Activite>();

            int nbElements = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("NbElements").InnerText);

            Progression p = new Progression(nbElements);
            p.Show();

            /* Chargement données des activités de base */
            XmlNodeList activites = acts.GetElementsByTagName("Activite");

            foreach (XmlNode n in activites)
            {
                Activite a;

                int num = int.Parse(n.SelectSingleNode("Numero").InnerText);
                bool exterieure = bool.Parse(n.SelectSingleNode("Exterieure").InnerText);
                bool exploration = bool.Parse(n.SelectSingleNode("Exploration").InnerText);
                TypeActivite ta = new TypeActivite(n.SelectSingleNode("TypeActivite").SelectSingleNode("Nom").InnerText);

                if (exterieure)
                    if (exploration)
                        a = new ExplorationExterieure(ta, "", null, null, null, null);
                    else
                        a = new ExperienceExterieure(ta, "", null, null, null, null);
                else
                    a = new Activite(ta);

                activitesBase.Add(num, a);

                p.incrementer();
            }

            /* Chargement données */
            int jour = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Jour").InnerText);
            int mois = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Mois").InnerText);
            int annee = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Annee").InnerText);
            int heures = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Heures").InnerText);
            int minutes = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Minutes").InnerText);
            int secondes = int.Parse(mars.SelectSingleNode("Donnees").SelectSingleNode("DebutMission").SelectSingleNode("Secondes").InnerText);

            this.debutMission = new DateTime(annee, mois, jour, heures, minutes, secondes);

            TimeMartien nb = TimeMartien.calculerJours(debutMission);
            int numJour = nb.getJours() + 1;

            if (numJour > 500)
                numJour = 500;

            XmlNodeList astronautesNodes = mars.GetElementsByTagName("Astronaute");

            foreach (XmlNode n in astronautesNodes)
            {
                String nom = n.SelectSingleNode("Nom").InnerText;
                String prenom = n.SelectSingleNode("Prenom").InnerText;
                int age = int.Parse(n.SelectSingleNode("Age").InnerText);

                Astronaute a = new Astronaute(nom, prenom, age);

                Dictionary<int, Journee> joursMission = new Dictionary<int, Journee>();
                a.setJourneesMission(joursMission);

                astronautes.Add(a);
                a.getJourneesMission().Clear();
                astroList.Items.Add(a); // Ajout dans la liste => interface

                XmlNodeList missionNode = n.SelectSingleNode("JourneesMission").SelectNodes("Journee");

                foreach (XmlNode nn in missionNode)
                {
                    int num = int.Parse(nn.SelectSingleNode("Numero").InnerText);
                    String etat = nn.SelectSingleNode("Etat").InnerText;
                    IEtat etatJournee = new Passe();

                    if (etat.Equals("EnCours"))
                        etatJournee = new EnCours();
                    else if (etat.Equals("Futur"))
                        etatJournee = new Futur();

                    String rapport = nn.SelectSingleNode("Rapport").InnerText;

                    Journee j = new Journee(num, rapport, etatJournee, false);
                    j.getActivites().Clear();
                    joursMission.Add(num, j);

                    XmlNodeList activitesNode = nn.SelectSingleNode("Activites").SelectNodes("Activite");

                    foreach (XmlNode nnn in activitesNode)
                    {
                        int numA = int.Parse(nnn.SelectSingleNode("Numero").InnerText);
                        String transport = nnn.SelectSingleNode("Transport").InnerText;
                        ITransport transportAct = null;

                        if (transport.Equals("Scaphandre"))
                            transportAct = new Scaphandre();
                        else if (transport.Equals("Vehicule"))
                            transportAct = new Vehicule();

                        String description = nnn.SelectSingleNode("Description").InnerText;
                        etat = nnn.SelectSingleNode("Etat").InnerText;
                        IEtat etatAct = new Passe();

                        if (etat.Equals("EnCours"))
                            etatAct = new EnCours();
                        else if (etat.Equals("Futur"))
                            etatAct = new Futur();

                        int mD = int.Parse(nnn.SelectSingleNode("HeureDebut").InnerText);

                        int mF = int.Parse(nnn.SelectSingleNode("HeureFin").InnerText);

                        String xy = nnn.SelectSingleNode("XY").InnerText;
                        int x = int.Parse(xy.Split(',')[0]);
                        int y = int.Parse(xy.Split(',')[1]);

                        Lieu l = new Lieu(x, y);

                        Activite aBase = activitesBase[numA];
                        Activite act;

                        if (aBase.isActiviteExterieure())
                            if (aBase.isExperience())
                                act = new ExperienceExterieure(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l, transportAct);
                            else
                                act = new ExplorationExterieure(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l, transportAct);
                        else
                            act = new Activite(aBase.getTypeActivite(), description, new TimeMartien(0, 0, mD, 0), new TimeMartien(0, 0, mF, 0), l);

                        act.setDescription(description);

                        act.setEtat(etatAct);

                        j.ajouterActivite(act);

                        p.incrementer();
                    }
                    p.incrementer();
                }
                p.incrementer();
            }

            initialisationInterface();

            astronauteSelectionne = astronautes[0];
            journeesMission = astronauteSelectionne.getJourneesMission();
            journeeActuelle = journeesMission[numJour];

            modificationJourneeActuelle(numJour);

            changerPeriode(periode);
            verificationChangementPeriode();
            mettreAJourHeures();
            miseAJourEdt(journeesMission[journeeSelectionnee]);

            descriptionTexte.Text = journeesMission[journeeSelectionnee].getDescription();
            astroList.SelectedItem = astronauteSelectionne;

            p.fermerFenetre();
        }
예제 #24
0
        /// <summary>
        /// Constructeur paramétré
        /// </summary>
        /// <param name="dt">Début de la mission</param>
        /// <param name="chargement">Chargement des données par XML ?</param>
        public CalendrierMission(DateTime dt, bool chargement)
        {
            InitializeComponent();

            debutMission = dt;

            periode = 1;
            journeeSelectionnee = 1;

            panels = new Dictionary<int, Panel>();
            icones = new Dictionary<int, PictureBox>();
            iconesActivite = new Dictionary<int, PictureBox>();
            numeros = new Dictionary<int, Label>();
            heures = new Dictionary<int, Label>();
            domaines = new List<Domaine>();
            astronautes = new List<Astronaute>();

            initialiserDomaines();

            if (!chargement)
            {
                Astronaute a = new Astronaute("Baudry", "Patrick", 69);
                astronauteSelectionne = a;
                astronautes.Add(a);

                journeesMission = astronauteSelectionne.getJourneesMission();

                initialisationInterface();

                TimeMartien nb = TimeMartien.calculerJours(debutMission);
                int numJour = nb.getJours() + 1;

                if (numJour > 500)
                    numJour = 500;

                foreach (Astronaute astro in astronautes)
                {
                    astro.creerEdT(numJour);
                    astroList.Items.Add(astro);
                }

                journeeActuelle = journeesMission[numJour];

                changerPeriode(periode);
                verificationChangementPeriode();
                mettreAJourHeures();
                miseAJourEdt(journeesMission[journeeSelectionnee]);

                descriptionTexte.Text = journeesMission[journeeSelectionnee].getDescription();
                astroList.SelectedItem = astronauteSelectionne;
                mettreAJourActiviteEnCours();
            }
        }
예제 #25
0
        /// <summary>
        /// Permet de mettre à jour les jours en fonction de s'ils sont passés ou non
        /// </summary>
        /// <param name="sender">Objet source</param>
        /// <param name="e">Evènement</param>
        private void timerJour_Tick(object sender, EventArgs e)
        {
            TimeMartien nb = TimeMartien.calculerJours(debutMission);

            int numJour = nb.getJours() + 1;

            if (numJour > 500)
                numJour = 500;

            for (int i = 1; i < numJour; ++i)
                journeesMission[i].journeePassee();
            journeeActuelle = journeesMission[numJour];
            journeesMission[numJour].journeeEnCours();

            changerPeriode(periode);
            verificationChangementPeriode();
            mettreAJourHeures();
            miseAJourEdt(journeesMission[journeeSelectionnee]);
        }
예제 #26
0
        /// <summary>
        /// Constructeur paramétré
        /// </summary>
        /// <param name="j">Une journée</param>
        /// <param name="a">Une activité la journée</param>
        /// <param name="cm">L'interface graphique CalendrierMission</param>
        /// <param name="dh">L'interface graphique DetailHeure</param>
        public ModificationActivite(Journee j, Activite a, CalendrierMission cm, DetailHeure dh)
        {
            if (a.getHeureFin().getHeures() == 24 && a.getHeureFin().getMinutes() == 39)
            {
                a.setHeureFin(new TimeMartien(0));
            }

            InitializeComponent();
            this.dh = dh;

            if (finHeure.Value == 0 && finMinute.Value == 0)
            {
                finHeure.Value  = 24;
                finMinute.Value = 40;
            }

            debutHeure.Maximum = finHeure.Value;

            lieu = new Lieu(0, 0);

            activiteAModifier = a;
            journeeAModifier  = j;
            this.cm           = cm;

            debutHeure.Value = activiteAModifier.getHeureDebut().getHeures();
            finHeure.Value   = activiteAModifier.getHeureFin().getHeures();

            debutMinute.Value = activiteAModifier.getHeureDebut().getMinutes();
            finMinute.Value   = activiteAModifier.getHeureFin().getMinutes();

            debutHeure.Minimum = debutHeure.Value;
            finHeure.Maximum   = (finHeure.Value == 0) ? 24 : finHeure.Value;

            finHeure.Minimum = (finHeure.Value == 0) ? 0 : debutHeure.Value;

            remplirTreeView();

            descriptionTB.Text = a.getDescription();

            if (a.isActiviteExterieure())
            {
                exterieurRadio.Checked = true;

                if (a.isExploration())
                {
                    explorationRadio.Checked = true;
                    scaphandreRadio.Checked  = (((ExplorationExterieure)a).nomTransport().Equals("Scaphandre")) ? true : false;
                    vehiculeRadio.Checked    = !scaphandreRadio.Checked;
                }
                else
                {
                    experienceRadio.Checked = true;
                    scaphandreRadio.Checked = (((ExperienceExterieure)a).nomTransport().Equals("Scaphandre")) ? true : false;
                    vehiculeRadio.Checked   = !scaphandreRadio.Checked;
                }
            }
            else
            {
                interieurRadio.Checked = true;
            }

            foreach (TreeNode tn in treeView.Nodes)
            {
                foreach (TreeNode tnn in tn.Nodes)
                {
                    if (tnn.Text.Equals(a.getNom()))
                    {
                        treeView.SelectedNode = tnn;
                    }
                }
            }

            lieuTB.Text = activiteAModifier.getLieu().ToString();

            debutHeure.Maximum = finHeure.Maximum;

            heureDebutStatic = new TimeMartien(0, (int)debutHeure.Value, (int)debutMinute.Value, 0);
            heureFinStatic   = new TimeMartien(0, (int)finHeure.Value, (int)finMinute.Value, 0);
        }
예제 #27
0
        public void couleurActiviteTest()
        {
            Journee j = new Journee();
            int[] colP = Constantes.COULEUR_PASSE;
            int[] colEC = Constantes.COULEUR_ENCOURS;
            int[] colF = Constantes.COULEUR_FUTUR;

            j.journeePassee();
            Assert.AreEqual(j.couleurJournee(), colP, "La couleur de la journée n'est pas la bonne");

            j.journeeEnCours();
            Assert.AreEqual(j.couleurJournee(), colEC, "La couleur de la journée n'est pas la bonne");

            j.journeeAVenir();
            Assert.AreEqual(j.couleurJournee(), colF, "La couleur de la journée n'est pas la bonne");
        }
예제 #28
0
        /// <summary>
        /// COnstructeur paramétré
        /// </summary>
        /// <param name="heureSelectionnee">Une heure</param>
        /// <param name="activites">La liste des activités de la journée</param>
        /// <param name="journee">La journée</param>
        /// <param name="cm">Le CalendrierMission source</param>
        public DetailHeure(int heureSelectionnee, List<Activite> activites, Journee journee, CalendrierMission cm)
        {
            InitializeComponent();

            this.heureSelectionnee = heureSelectionnee;
            this.activites = activites;

            horaires = new Dictionary<int, Label>();
            heures = new Dictionary<int, Label>();
            iconesActivite = new Dictionary<int, PictureBox>();
            this.journee = journee;
            this.cm = cm;

            for (int i = 0; i <= 60; i += 10)
            {
                Control[] ctrl;

                if (i <= 50)
                {
                    ctrl = this.Controls.Find("actM" + i, true);
                    horaires[i] = (Label)ctrl[0];

                    ctrl = this.Controls.Find("h" + i + "img", true);
                    iconesActivite[i] = (PictureBox)ctrl[0];
                }

                ctrl = this.Controls.Find("label" + i, true);
                heures[i] = (Label)ctrl[0];
            }

            foreach (Activite a in activites)
            {
                int debut = a.getHeureDebut().getMinutes();
                int fin = a.getHeureFin().getMinutes();

                int hDebut = a.getHeureDebut().getHeures();
                int hFin = a.getHeureFin().getHeures();

                String nom = a.getNom();

                if (hDebut < heureSelectionnee)
                    debut = 0;
                if (hFin > heureSelectionnee)
                    fin = 60;

                if (fin == 0 && heureSelectionnee != 24)
                    fin = 60;
                else if (fin == 0 && heureSelectionnee == 24)
                    fin = 40;

                heures[60].Text = (heureSelectionnee + 1) + "h00";

                for (int i = debut; i < fin; i += 10)
                {
                    if ((heureSelectionnee + "h" + i + ((i < 10) ? "0" : "")).Equals("24h40"))
                        heures[i].Text = "0h00";

                    horaires[i].Text = a.getNom();
                    heures[i].Text = heureSelectionnee + "h" + i + ((i < 10) ? "0" : "");

                    int h = int.Parse(heures[i].Text.Split('h')[0]);
                    int m = int.Parse(heures[i].Text.Split('h')[1]);

                    if (h == 24 && m > 40)
                    {
                        heures[i].Visible = false;
                        horaires[i - 10].Visible = false;
                        this.Size = new Size(379, 158);
                    }

                    foreach (Domaine d in CalendrierMission.domaines)
                        if (d.getNomActivites().Contains(a.getNom()) || d.getNom().Equals(a.getNom()))
                            horaires[i].BackColor = Color.FromArgb(d.getCouleur()[0], d.getCouleur()[1], d.getCouleur()[2]);

                    if (a.isActiviteExterieure())
                    {
                        Bitmap img = (a.isExploration()) ? ((ExplorationExterieure)a).deplacement() : ((ExperienceExterieure)a).deplacement();
                        iconesActivite[i].Image = img;
                        iconesActivite[i].Visible = true;
                    }
                    else
                        iconesActivite[i].Visible = false;
                }

                if (heureSelectionnee == 24)
                {
                    for (int i = 40; i < 60; i += 10)
                    {
                        heures[i + 10].Visible = false;
                        iconesActivite[i].Visible = false;
                        horaires[i].Visible = false;
                    }

                    if (fin < 60)
                    {
                        label40.Text = "0h00";
                        label60.Visible = false;
                        this.Size = new Size(379, 158);
                    }
                }
            }
        }