Ejemplo n.º 1
0
        /**Constructeur vide pour XML
         */
        public Vehicule()
        {
            Usine usine = Usine.obtenirUsine();

            m_etat = usine.creerHangar(this);                          //Par défaut tous les véhicules sont dans le Hangar
            m_etat.eventEtatFini += new DelegateEtatFini(ChangerEtat); //Abonnement au délegué de l'État
        }
Ejemplo n.º 2
0
        protected Aeroport m_aeroport;    //Référence à l'aeroport

        /**Constructeur de véhicule
         * p_nom: le nom du véhicule
         * p_KMH: la vitesse de déplacement du véhicule
         * p_tempsMaintenance: le temps de maintenance du véhicule
         * p_couleur: la couleur de la ligne à l'affichage
         * p_posAeroport: position de l'aeroport qui le contient
         * p_scenario: référence sur le scenario
         * p_aeroport: référence sur l'aeroport dans lequel il est
         */
        public Vehicule(string p_nom, int p_KMH, int p_tempsMain, Color p_couleur, PosCarte p_posAeroport, Scenario p_scenario, Aeroport p_aeroport)
        {
            m_nom = p_nom;
            m_KMH = p_KMH;
            m_tempsMaintenance = p_tempsMain;
            m_couleur          = p_couleur;
            Usine usine = Usine.obtenirUsine();

            m_etat = usine.creerHangar(this);
            m_etat.eventEtatFini += new DelegateEtatFini(ChangerEtat);
            m_posDepart           = p_posAeroport;
            m_scenario            = p_scenario;
            m_aeroport            = p_aeroport;
        }
Ejemplo n.º 3
0
        /** Changer l'État du véhicule (Delegate)
         *  Passer au prochain État lorsque l'État actuel annonce qu'il est prêt à changer
         */
        public override void ChangerEtat(object source)
        {
            string EtatAvant = m_etat.ToString();
            int    surplus   = m_etat.Surplus;
            Usine  usine     = Usine.obtenirUsine();


            //Si l'etat de l'avion est dans le hangar et qu'un client est assigné
            if (m_etat.ToString() == "Hangar" && m_client != null)
            {
                PosCarte posDestination = m_client.PositionDepart;
                PosCarte posActuelle    = usine.creerPosition(m_posDepart.X, m_posDepart.Y);
                int      tempsVol       = PosCarte.Distance(m_posDepart, posDestination) * 4; //Calcul du temps de vol

                //Créer l'Etat et s'abonner (Observer)
                m_etat = usine.creerObserver(m_posDepart, posActuelle, posDestination, tempsVol, surplus, this);
                m_etat.eventEtatFini += new DelegateEtatFini(ChangerEtat);

                if (surplus > 0)
                {
                    m_etat.Avance(surplus);
                }
            }
            else if (m_etat.ToString() == "Observation")
            {
                //Créer l'Etat et s'abonner (Maintenance)
                m_etat = usine.creerMaintenance(m_tempsMaintenance, surplus, this);
                m_etat.eventEtatFini += new DelegateEtatFini(ChangerEtat);

                if (surplus > 0)
                {
                    m_etat.Avance(surplus);
                }
            }
            else if (m_etat.ToString() == "Maintenance")
            {
                //Créer l'Etat et s'abonner (Hangar)
                m_etat = usine.creerHangar(this);
                m_etat.eventEtatFini += new DelegateEtatFini(ChangerEtat);

                ResetClient();
            }
        }
Ejemplo n.º 4
0
        /** Changer l'État du véhicule (Delegate)
         *  Passer au prochain État lorsque l'État actuel annonce qu'il est prêt à changer
         */
        public override void ChangerEtat(object source)
        {
            int   surplus = m_etat.Surplus;
            Usine usine   = Usine.obtenirUsine();

            //Si l'etat de l'avion est dans le hangar et que le minimum de clients est atteint
            if (m_etat.ToString() == "Hangar" && (m_client != null) && (m_client.NbClients >= (nbMax * pourcentage)))
            {
                //Créer l'Etat et s'abonner (Embarquement)
                m_etat = usine.creerEmbarquement(m_tempsEmbarquement, surplus, this);
                m_etat.eventEtatFini += new DelegateEtatFini(ChangerEtat);

                if (surplus > 0)
                {
                    m_etat.Avance(surplus);
                }
            }
            else if (m_etat.ToString() == "Embarquement")
            {
                PosCarte posDestination = m_client.Destination;
                PosCarte posActuelle    = usine.creerPosition(m_posDepart.X, m_posDepart.Y);
                int      nbClients      = m_client.NbClients;
                int      tempsVol       = PosCarte.Distance(m_posDepart, posDestination) * 4; //Calcul du temps de vol

                //Créer l'Etat et s'abonner (Aller)
                m_etat = usine.creerAller(m_posDepart, posActuelle, posDestination, nbClients, tempsVol, surplus, this);
                m_etat.eventEtatFini += new DelegateEtatFini(ChangerEtat);

                if (surplus > 0)
                {
                    m_etat.Avance(surplus);
                }
            }
            else if (m_etat.ToString() == "Aller")
            {
                int nbClients = m_client.NbClients;
                m_aeroport.transfererVehicule(this, m_etat.DestinationFinale());

                //Créer l'Etat et s'abonner (Debarquement)
                m_etat = usine.creerDebarquement(nbClients, m_tempsDebarquement, surplus, this);
                m_etat.eventEtatFini += new DelegateEtatFini(ChangerEtat);

                if (surplus > 0)
                {
                    m_etat.Avance(surplus);
                }
            }
            else if (m_etat.ToString() == "Debarquement")
            {
                m_client.NbClients = 0;

                //Créer l'Etat et s'abonner (Maintenance)
                m_etat = usine.creerMaintenance(m_tempsMaintenance, surplus, this);
                m_etat.eventEtatFini += new DelegateEtatFini(ChangerEtat);

                if (surplus > 0)
                {
                    m_etat.Avance(surplus);
                }
            }
            else if (m_etat.ToString() == "Maintenance")
            {
                //Créer l'Etat et s'abonner  (Hangar)
                m_etat = usine.creerHangar(this);
                m_etat.eventEtatFini += new DelegateEtatFini(ChangerEtat);

                ResetClient();
            }
        }