/// <summary>
 /// Cette Méthode permet de choisir le nom d'un animal par random dans la liste d'animaux de la bibliotheque.
 /// Le random choisi un index du tableau (de 0 à 8).
 /// </summary>
 /// <param name="tete"></param>
 /// <param name="corps"></param>
 public void RandomAnimal(Tete tete, Corps corps)
 {
     Bibliotheque liste = new Bibliotheque();
     Random rand = new Random();
     do
     {
         _indexPattes = rand.Next(liste.ListAnimaux.Count);
     } while (_indexPattes == tete.IndexTete || _indexPattes == corps.IndexCorps);
     _nomAnimal = liste.ListAnimaux[_indexPattes];
 }
        /// <summary>
        /// Constructeur de l'Animorphe
        /// </summary>
        public Animorphe()
        {
            Tete teteChoisie = new Tete();
            Corps corpsChoisi = new Corps(teteChoisie);
            Pattes pattesChoisies = new Pattes(teteChoisie, corpsChoisi);

            this.Tete = teteChoisie.NomAnimal;
            this.SyllabeNomTete = teteChoisie.ParticuleNom;

            this.Corps = corpsChoisi.NomAnimal;
            this.SyllabeNomCorps = corpsChoisi.ParticuleNom;

            this.Pattes = pattesChoisies.NomAnimal;
            this.SyllabeNomPattes = pattesChoisies.ParticuleNom;

            this.Nom = this.SyllabeNomTete + this.SyllabeNomCorps + this.SyllabeNomPattes;
        }
 public SpecialisedSoldier(int id, string firstName, string lastName, decimal salary, Corps corps)
     : base(id, firstName, lastName, salary)
 {
     this.Corps = corps;
 }
Beispiel #4
0
    public override void Calculate(RoamingNPC t)
    {
        if (!t.isDead)
        {
            t.isDead = true;
        }
        else
        {
            return;
        }

        if (t.enemySO.leavesCorpse)
        {
            MapManager.map[t.__position.x, t.__position.y].enemy      = null;
            MapManager.map[t.__position.x, t.__position.y].isWalkable = true;
            Corps corpse = new Corps();

            //ITEM IN CORPSE

            bool droppedItem = false;


            //CHANCE TO DROP CORPSE ITEM
            if (t.enemySO.E_possileDrops != null && t.enemySO.E_possileDrops.Count > 0)
            {
                corpse.itemInCorpse = t.enemySO.E_possileDrops[Random.Range(0, t.enemySO.E_possileDrops.Count)];
                if (corpse.itemInCorpse != null)
                {
                    droppedItem = true;
                }
            }

            if (MapManager.map[t.__position.x, t.__position.y].structure == null)
            {
                /*if (droppedItem)
                 * {
                 *  /*MapManager.map[t.__position.x, t.__position.y].timeColor = new Color(0, 0, 0);
                 *  MapManager.map[t.__position.x, t.__position.y].letter = "";
                 *  GameManager.manager.itemSpawner.SpawnAt(t.__position.x, t.__position.y, corpse.itemInCorpse);
                 * }
                 * else
                 * {
                 *  MapManager.map[t.__position.x, t.__position.y].baseChar = t.EnemySymbol;
                 *  MapManager.map[t.__position.x, t.__position.y].exploredColor = new Color(0.2784f, 0, 0);
                 *  MapManager.map[t.__position.x, t.__position.y].letter = "";
                 * }*/

                if (droppedItem)
                {
                    GameManager.manager.itemSpawner.SpawnAt(MapManager.CurrentFloor, t.__position.x, t.__position.y, corpse.itemInCorpse);
                }

                MapManager.map[t.__position.x, t.__position.y].baseChar      = t.EnemySymbol;
                MapManager.map[t.__position.x, t.__position.y].exploredColor = new Color(0.2784f, 0, 0);
                MapManager.map[t.__position.x, t.__position.y].letter        = "";

                corpse.enemyBody = t.enemySO;
                MapManager.map[t.__position.x, t.__position.y].structure = corpse;
            }
        }
        else
        {
            MapManager.map[t.__position.x, t.__position.y].enemy      = null;
            MapManager.map[t.__position.x, t.__position.y].letter     = "";
            MapManager.map[t.__position.x, t.__position.y].isWalkable = true;
        }

        t.manager.playerStats.__sanity += 10;

        t.manager.UpdateMessages($"You have killed the <color=#{t.EnemyColor}>{t.EnemyName}</color>");
        RunManager.CurrentRun.Set(RunManager.Names.EnemiesKilled,
                                  RunManager.CurrentRun.Get <int>(RunManager.Names.EnemiesKilled) + 1);

        RunManager.UnitKilledWithAttack();
        // handle xp and stuff like that

        t.manager.playerStats.UpdateLevel(t.xpDrop);

        /*
         * GameObject e = null;
         *
         * foreach (var enemy in manager.enemies)
         * {
         *  if(enemy.GetComponent<RoamingNPC>().__position == __position)
         *  {
         *      e = enemy;
         *  }
         * }
         *
         * foreach (var enemy in t.manager.enemies)
         * {
         *  if (enemy == t.gameObject)
         *  {
         *      e = enemy;
         *  }
         * }
         */

        t.manager.StartPlayersTurn();

        // t.manager.gameObject.GetComponent<Bestiary>().UpdateEnemyList(t.enemySO);

        t.manager.enemies.Remove(t.gameObject);

        DungeonGenerator.dungeonGenerator.DrawMap(MapManager.map);


        Destroy(t.gameObject);
    }
Beispiel #5
0
 public Engineer(string id, string firstName, string lastName, decimal salary, Corps corps)
 {
     this.Id        = id;
     this.FirstName = firstName;
     this.LastName  = lastName;
     this.Corps     = corps;
     this.Salary    = salary;
     this.Repairs   = new List <Repair>();
 }
 public Commando(int id, string firstName, string lastName, decimal salary, Corps corps, ICollection <IMission> missions)
     : base(id, firstName, lastName, salary, corps)
 {
     Missions = missions;
 }
Beispiel #7
0
 public Engineer(int id, string firstname, string lastname, decimal salary, Corps corps)
     : base(id, firstname, lastname, salary, corps)
 {
 }
Beispiel #8
0
        /// <summary>
        /// Pour pouvoir obtenir une référence unique pour chaque dossier de corps, identiques
        /// dans l'assemblage, on passe par la création d'une propriété dans chaque dossier.
        /// Cette propriété est liée à une cote dans une esquisse dont la valeur est égale au repère.
        /// Suivant la configuration, la valeur de la cote peut changer et donc le repère du dossier.
        /// C'est le seul moyen pour avoir un lien entre les dossiers et la configuration du modèle.
        /// Les propriétés des dossiers ne sont pas configurables.
        /// </summary>
        protected override void Command()
        {
            try
            {
                App.Sw.CommandInProgress = true;

                // Si aucun corps n'a déjà été repéré, on reinitialise tout
                if (ListeCorps.Count == 0)
                {
                    // On supprime tout les fichiers
                    foreach (FileInfo file in new DirectoryInfo(MdlBase.pDossierPiece()).GetFiles())
                    {
                        file.Delete();
                    }
                }

                if (ReinitCampagneActuelle && (ListeCorps.Count > 0))
                {
                    // On supprime les repères de la campagne actuelle

                    // On recherche les repères appartenant aux campagnes précédentes
                    // pour ne pas supprimer les fichiers
                    // Si la somme des quantités des campagnes précédente est superieure à 0
                    // on garde le repère
                    ListeSortedCorps FichierAsauvegarder = new ListeSortedCorps();
                    FichierAsauvegarder.CampagneDepartDecompte = ListeCorps.CampagneDepartDecompte;

                    foreach (var corps in ListeCorps.Values)
                    {
                        int nb = 0;
                        foreach (var camp in corps.Campagne)
                        {
                            if (camp.Key < IndiceCampagne)
                            {
                                nb += camp.Value;
                            }
                            else
                            {
                                break;
                            }
                        }

                        if (nb > 0)
                        {
                            FichierAsauvegarder.Add(corps.Repere, corps);
                        }
                    }

                    // On nettoie les fichiers précedement crées
                    foreach (var corps in ListeCorps.Values)
                    {
                        if (FichierAsauvegarder.ContainsKey(corps.Repere))
                        {
                            continue;
                        }

                        corps.SupprimerFichier();
                    }

                    ListeCorps = FichierAsauvegarder;
                }

                // On supprime les campagnes superieures à l'indice actuelle
                foreach (var corps in ListeCorps.Values)
                {
                    for (int i = IndiceCampagne; i < corps.Campagne.Keys.Max(); i++)
                    {
                        if (corps.Campagne.ContainsKey(i + 1))
                        {
                            corps.Campagne.Remove(i + 1);
                        }
                    }
                }


                WindowLog.SautDeLigne();
                WindowLog.EcrireF("Campagne de départ : {0}", ListeCorps.CampagneDepartDecompte);

                // On charge les corps existant à partir des fichiers
                // et seulement ceux dont la quantité pour CampagneDepartDecompte est supérieure à 0
                if (CombinerCorpsIdentiques && (ListeCorps.Count > 0))
                {
                    var FiltreCampagne = IndiceCampagne;

                    if (CombinerAvecCampagnePrecedente)
                    {
                        FiltreCampagne = ListeCorps.CampagneDepartDecompte;
                    }

                    WindowLog.SautDeLigne();
                    WindowLog.Ecrire("Chargement des corps existants :");

                    foreach (var corps in ListeCorps.Values)
                    {
                        // On additionne les quantités pour les corps supperieur à filtreCampagne
                        // S
                        if (corps.Campagne.ContainsKey(FiltreCampagne) &&
                            corps.Campagne.Sum(d => d.Key >= FiltreCampagne? d.Value : 0) > 0 &&
                            File.Exists(corps.CheminFichierRepere)
                            )
                        {
                            WindowLog.EcrireF(" - {0}", corps.RepereComplet);
                            corps.ChargerCorps();
                        }
                    }
                }

                // On reinitialise la quantité pour la campagne actuelle à 0
                foreach (var corps in ListeCorps.Values)
                {
                    corps.InitCampagne(IndiceCampagne);
                }

                ////////////////////////////////// DEBUT DU REPERAGE ////////////////////////////////////////////////////

                MdlBase.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc);

                MdlBase.eActiverManager(false);

                WindowLog.SautDeLigne();
                WindowLog.Ecrire("Debut du repérage");

                // On recherche l'indice de repere max
                if (ListeCorps.Count > 0)
                {
                    _GenRepereDossier = ListeCorps.Keys.Max();
                }

                // On liste les composants
                var ListeComposants = MdlBase.pListerComposants();

                // On boucle sur les modeles
                foreach (var mdl in ListeComposants.Keys)
                {
                    mdl.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc);

                    mdl.eActiverManager(false);

                    // On met à jour les options
                    mdl.Extension.SetUserPreferenceToggle(((int)(swUserPreferenceToggle_e.swDisableDerivedConfigurations)), 0, false);
                    mdl.Extension.SetUserPreferenceToggle(((int)(swUserPreferenceToggle_e.swWeldmentRenameCutlistDescriptionPropertyValue)), 0, true);
                    mdl.Extension.SetUserPreferenceToggle(((int)(swUserPreferenceToggle_e.swWeldmentCollectIdenticalBodies)), 0, true);
                    mdl.Extension.SetUserPreferenceString(((int)(swUserPreferenceStringValue_e.swSheetMetalDescription)), 0, "Tôle");

                    if (mdl.ePartDoc().eDossierListeDesPiecesSoudees().GetAutomaticUpdate() == false)
                    {
                        mdl.ePartDoc().eMajListeDesPiecesSoudeesAuto(true);
                        mdl.EditRebuild3();
                    }

                    // On crée l'esquisse pour le reperage des dossiers
                    mdl.pEsquisseRepere();

                    // Si le modele est a repérer complètement
                    Boolean InitModele = true;
                    // On recherche l'index de la dimension maximum
                    int IndexDimension = 0;
                    // On liste les dossiers déja traité pour l'attribution des nouveaux index de dimension
                    HashSet <int> HashPieceIdDossiers = new HashSet <int>();

                    // Les données sont stockées dans des propriétés du modèle
                    // Le nom du modèle est stocké dans une propriété, si le modèle est copié
                    // la propriété n'est plus valable, on force le repérage
                    // On récupère également le dernier indice de la dimension utilisée
                    if (mdl.ePropExiste(CONST_PRODUCTION.ID_PIECE) && (mdl.eGetProp(CONST_PRODUCTION.ID_PIECE) == mdl.eNomSansExt()))
                    {
                        InitModele = false;
                        if (mdl.ePropExiste(CONST_PRODUCTION.MAX_INDEXDIM))
                        {
                            IndexDimension = mdl.eGetProp(CONST_PRODUCTION.MAX_INDEXDIM).eToInteger();
                        }

                        if (mdl.ePropExiste(CONST_PRODUCTION.PIECE_ID_DOSSIERS))
                        {
                            var tab = mdl.eGetProp(CONST_PRODUCTION.PIECE_ID_DOSSIERS).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                            foreach (var id in tab)
                            {
                                HashPieceIdDossiers.Add(id.eToInteger());
                            }
                        }
                    }

                    ////////////////////////////////// BOUCLE SUR LES CONFIGS ////////////////////////////////////////////////////
                    foreach (var nomCfg in ListeComposants[mdl].Keys)
                    {
                        mdl.ShowConfiguration2(nomCfg);
                        mdl.EditRebuild3();
                        WindowLog.SautDeLigne();
                        WindowLog.EcrireF("{0} \"{1}\"", mdl.eNomSansExt(), nomCfg);

                        HashSet <int> HashConfigIdDossiers = new HashSet <int>();

                        Boolean InitConfig = true;

                        int IdCfg = mdl.GetConfigurationByName(nomCfg).GetID();

                        // Idem modèle, on stock l'id de la config dans une propriété.
                        // Si une nouvelle config est crée, la valeur de cette propriété devient caduc,
                        // on repère alors les dossiers
                        // On en profite pour récupérer la liste des ids de dossiers déjà traité dans les précédentes
                        // campagne de repérage
                        if (!InitModele && mdl.ePropExiste(CONST_PRODUCTION.ID_CONFIG, nomCfg) && (mdl.eGetProp(CONST_PRODUCTION.ID_CONFIG, nomCfg) == IdCfg.ToString()))
                        {
                            InitConfig = false;
                            if (mdl.ePropExiste(CONST_PRODUCTION.CONFIG_ID_DOSSIERS, nomCfg))
                            {
                                var tab = mdl.eGetProp(CONST_PRODUCTION.CONFIG_ID_DOSSIERS, nomCfg).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                                foreach (var id in tab)
                                {
                                    HashConfigIdDossiers.Add(id.eToInteger());
                                }
                            }
                        }

                        var piece        = mdl.ePartDoc();
                        var ListeDossier = piece.eListeDesFonctionsDePiecesSoudees(
                            swD =>
                        {
                            BodyFolder Dossier = swD.GetSpecificFeature2();

                            // Si le dossier est la racine d'un sous-ensemble soudé, il n'y a rien dedans
                            if (Dossier.IsRef() && (Dossier.eNbCorps() > 0) && !Dossier.eEstExclu() &&
                                FiltrerCorps.HasFlag(Dossier.eTypeDeDossier()))
                            {
                                return(true);
                            }

                            return(false);
                        }
                            );

                        var NbConfig = ListeComposants[mdl][nomCfg];

                        ////////////////////////////////// BOUCLE SUR LES DOSSIERS ////////////////////////////////////////////////////
                        foreach (var fDossier in ListeDossier)
                        {
                            BodyFolder Dossier   = fDossier.GetSpecificFeature2();
                            int        IdDossier = fDossier.GetID();

                            Dimension param = null;

                            if (!HashPieceIdDossiers.Contains(IdDossier))
                            {
                                param = CreerParam(mdl, fDossier, nomCfg, ++IndexDimension);
                            }
                            else
                            {
                                param = GetParam(mdl, fDossier, nomCfg);
                            }

                            var        SwCorps       = Dossier.ePremierCorps();
                            var        NomCorps      = SwCorps.Name;
                            var        MateriauCorps = SwCorps.eGetMateriauCorpsOuPiece(piece, nomCfg);
                            eTypeCorps TypeCorps     = Dossier.eTypeDeDossier();
                            var        nbCorps       = Dossier.eNbCorps() * NbConfig;

                            int Repere = -1;

                            if (CombinerCorpsIdentiques)
                            {
                                // On recherche s'il existe des corps identiques
                                // Si oui, on applique le même repère au parametre

                                foreach (var CorpsTest in ListeCorps.Values)
                                {
                                    if (CorpsTest.SwCorps.IsRef() &&
                                        (CombinerAvecCampagnePrecedente || CorpsTest.Campagne.ContainsKey(IndiceCampagne)) &&
                                        (MateriauCorps == CorpsTest.Materiau) &&
                                        (TypeCorps == CorpsTest.TypeCorps) &&
                                        SwCorps.eComparerGeometrie(CorpsTest.SwCorps) == Sw.Comparaison_e.Semblable)
                                    {
                                        Repere = CorpsTest.Repere;
                                        SetRepere(param, CorpsTest.Repere, nomCfg);
                                        break;
                                    }
                                }
                            }

                            // Initialisation du repère
                            if (Repere.eEstNegatif())
                            {
                                // A tester
                                // Si on est mode "MajCampagnePrecedente", ça évite de repérer une seconde fois les pièces

                                // Si on est pas en mode "Combiner les corps"
                                // on recupère le repère du dossier
                                // Sinon c'est forcément un nouveau repère
                                if (!CombinerCorpsIdentiques)
                                {
                                    Repere = GetRepere(param, nomCfg);
                                }

                                // Création d'un nouveau repère suivant conditions
                                // Dans tous les cas, si la clé est négative, on crée un nouveau repère
                                if (Repere.eEstNegatif() ||
                                    InitConfig ||
                                    !HashConfigIdDossiers.Contains(IdDossier) ||
                                    !ListeCorps.ContainsKey(Repere))
                                {
                                    Repere = GenRepereDossier;
                                    SetRepere(param, Repere, nomCfg);
                                }
                            }

                            // Initialisation du corps
                            Corps corps = null;
                            if (!ListeCorps.ContainsKey(Repere))
                            {
                                corps = new Corps(SwCorps, TypeCorps, MateriauCorps, MdlBase);
                                corps.InitCampagne(IndiceCampagne);
                                ListeCorps.Add(Repere, corps);
                            }
                            else
                            {
                                corps = ListeCorps[Repere];
                            }

                            corps.Campagne[IndiceCampagne] += nbCorps;
                            corps.Repere = Repere;
                            corps.InitCaracteristiques(Dossier, SwCorps);
                            corps.AjouterModele(mdl, nomCfg, IdDossier, NomCorps);

                            HashPieceIdDossiers.Add(IdDossier);
                            HashConfigIdDossiers.Add(IdDossier);

                            WindowLog.EcrireF(" - {1} -> {0}", fDossier.Name, corps.RepereComplet);
                        }
                        mdl.ePropAdd(CONST_PRODUCTION.ID_CONFIG, IdCfg, nomCfg);
                        mdl.ePropAdd(CONST_PRODUCTION.CONFIG_ID_DOSSIERS, String.Join(" ", HashConfigIdDossiers), nomCfg);
                    }
                    mdl.ePropAdd(CONST_PRODUCTION.ID_PIECE, mdl.eNomSansExt());
                    mdl.ePropAdd(CONST_PRODUCTION.PIECE_ID_DOSSIERS, String.Join(" ", HashPieceIdDossiers));
                    mdl.ePropAdd(CONST_PRODUCTION.MAX_INDEXDIM, IndexDimension);

                    mdl.eActiverManager(true);
                    mdl.eSauver();
                    mdl.eFermerSiDifferent(MdlBase);
                }

                MdlBase.eActiverManager(true);
                MdlBase.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc);
                MdlBase.EditRebuild3();
                MdlBase.eSauver();

                ////////////////////////////////// FIN DU REPERAGE ////////////////////////////////////////////////////

                // On fermer les fichiers chargé
                foreach (var corps in ListeCorps.Values)
                {
                    Sw.eFermer(corps.CheminFichierRepere);
                }

                WindowLog.SautDeLigne();
                if (ListeCorps.Count > 0)
                {
                    WindowLog.EcrireF("Nb de repères : {0}", ListeCorps.Keys.Max());
                }
                else
                {
                    WindowLog.Ecrire("Aucun corps repéré");
                }

                // S'il n'y a aucun corps, on se barre
                if (ListeCorps.Count == 0)
                {
                    return;
                }

                ////////////////////////////////// EXPORTER LES CORPS /////////////////////////////////////////////////

                WindowLog.SautDeLigne();
                WindowLog.Ecrire("Export des corps :");

                foreach (var corps in ListeCorps.Values)
                {
                    if (corps.Modele.IsNull())
                    {
                        continue;
                    }

                    // Si on est pas en mode "Combiner corps identique" et que le fichier existe
                    // on le supprime pour le mettre à jour, sinon on peut se retrouver
                    // avec des fichiers ne correpondants pas au corps
                    if (!CombinerCorpsIdentiques)
                    {
                        corps.SupprimerFichier();
                    }

                    // Si le fichier existe, on passe au suivant
                    if (File.Exists(corps.CheminFichierRepere))
                    {
                        continue;
                    }

                    WindowLog.EcrireF("- {0} exporté", CONSTANTES.PREFIXE_REF_DOSSIER + corps.Repere);

                    corps.SauverRepere(CreerDvp);
                }

                ////////////////////////////////// RECAP /////////////////////////////////////////////////

                // Petit récap
                WindowLog.SautDeLigne();
                WindowLog.EcrireF("Nb de corps unique : {0}", ListeCorps.Count);

                int nbtt = 0;

                foreach (var corps in ListeCorps.Values)
                {
                    nbtt += corps.Campagne[IndiceCampagne];
                    if (corps.Campagne[IndiceCampagne] > 0)
                    {
                        WindowLog.EcrireF("{2} P{0} ×{1}", corps.Repere, corps.Campagne[IndiceCampagne], IndiceCampagne);
                    }
                }

                WindowLog.EcrireF("Nb total de corps : {0}", nbtt);

                ////////////////////////////////// SAUVEGARDE DE LA NOMENCLATURE /////////////////////////////////////////////

                ListeCorps.EcrireNomenclature(MdlBase.pDossierPiece(), IndiceCampagne);

                ////////////////////////////////////////////////////////////////////////////////////////////////////////////

                MdlBase.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc);

                App.Sw.CommandInProgress = false;

                var aff = new AffichageElementWPF(ListeCorps, IndiceCampagne);
                aff.ShowDialog();

                ListeCorps      = null;
                ListeComposants = null;
            }
            catch (Exception e) { this.LogErreur(new Object[] { e }); }
        }
        public void Run()
        {
            ICollection <ISoldier> soldiers = new List <ISoldier>();

            string input = string.Empty;

            while ((input = Console.ReadLine()) != "End")
            {
                var tokens = input.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
                var type   = tokens[0];
                tokens.Remove(tokens.First());

                string id        = tokens[0];
                string firstName = tokens[1];
                string lastName  = tokens[2];

                if (type != "Spy")
                {
                    double salary = double.Parse(tokens[3]);

                    if (type == "Private")
                    {
                        soldiers.Add(new Private(id, firstName, lastName, salary));
                    }
                    else if (type == "LeutenantGeneral")
                    {
                        tokens = tokens.Skip(4).ToList();

                        LeutenantGeneral general = new LeutenantGeneral(id, firstName, lastName, salary);
                        foreach (var soldId in tokens)
                        {
                            var currentPrivate = soldiers.First(p => p.Id == soldId);

                            general.Privates.Add(currentPrivate as IPrivate);
                        }
                        soldiers.Add(general);
                    }
                    else if (type == "Engineer" || type == "Commando")
                    {
                        Corps corps = Corps.Marines;

                        if (System.Enum.TryParse(tokens[4], out corps))
                        {
                            if (type == "Engineer")
                            {
                                Engineer engi = new Engineer(id, firstName, lastName, salary, corps);
                                tokens = tokens.Skip(5).ToList();

                                for (int i = 0; i < tokens.Count; i += 2)
                                {
                                    string  partName    = tokens[i];
                                    int     hoursWorked = int.Parse(tokens[i + 1]);
                                    IRepair repair      = new Repair(partName, hoursWorked);
                                    engi.Repairs.Add(repair);
                                }

                                soldiers.Add(engi);
                            }
                            else if (type == "Commando")
                            {
                                Commando comm = new Commando(id, firstName, lastName, salary, corps);
                                tokens = tokens.Skip(5).ToList();

                                for (int i = 0; i < tokens.Count; i += 2)
                                {
                                    string       missionCodeName = tokens[i];
                                    MissionState missionState    = MissionState.inProgress;
                                    if (System.Enum.TryParse(tokens[i + 1], out missionState))
                                    {
                                        IMission mission = new Mission(missionCodeName, missionState);
                                        comm.Missions.Add(mission);
                                    }
                                }

                                soldiers.Add(comm);
                            }
                        }
                    }
                }
                else if (type == "Spy")
                {
                    string codeNumber = tokens[3];

                    Spy spy = new Spy(id, firstName, lastName, int.Parse(codeNumber));
                    soldiers.Add(spy);
                }
            }

            foreach (var sold in soldiers)
            {
                Console.WriteLine(sold.ToString());
            }
        }
Beispiel #10
0
        private ISoldier GetCommando(int id, string firstName, string lastName, decimal salary, Corps corps, string[] comands)
        {
            ICommando solder = new Commando(id, firstName, lastName, salary, corps);

            for (int i = 6; i < comands.Length; i += 2)
            {
                string codeName = comands[i];
                if (!Enum.TryParse(comands[i + 1], out State stat))
                {
                    continue;
                }

                IMission mision = new Mission(codeName, stat);

                solder.Missions.Add(mision);
            }

            return(solder);
        }
 public Engineer(int id, string firstName, string lastName, double salary, Corps corps)
     : base(id, firstName, lastName, salary)
 {
     this.Corps        = corps;
     this.setOfRepairs = new HashSet <Repair>();
 }
Beispiel #12
0
 public IActionResult EditCorp(Corps corp)
 {
     db.Entry(corp).State = EntityState.Modified;
     db.SaveChanges();
     return(RedirectToAction("ShowCorps"));
 }
Beispiel #13
0
 public Engineer(int id, string firstName, string lastName, decimal salary, Corps corps)
     : base(id, firstName, lastName, salary)
 {
     Corps   = corps;
     Repairs = new List <IRepair>();
 }
        static void Main(string[] args)
        {
            //Engineer engineer = new Engineer("12", "first", "last", 1000M, Enums.Corps.Airforces);
            //engineer.AddRepair(new Repair("partName", 4));

            //Console.WriteLine(engineer.ToString());

            //Commando commando = new Commando("15", "commFirst", "commLast", 1500M, Enums.Corps.Marines);
            //commando.AddMission(new Mission("Frenzy", Enums.MissionStatus.inProgress));
            //commando.Missions.FirstOrDefault(k => k.CodeName == "Frenzy").CompleteMission();
            //Console.WriteLine(commando.ToString());
            ;
            List <Private> privates = new List <Private>();
            string         input;

            while ((input = Console.ReadLine()) != "End")
            {
                string[] tokens      = input.Split();
                string   soldierRank = tokens[0];
                string   ID          = tokens[1],
                         firstName   = tokens[2],
                         lastName    = tokens[3];

                switch (soldierRank)
                {
                case "Private":
                    decimal salary    = decimal.Parse(tokens[4]);
                    Private prPrivate = new Private(ID, firstName, lastName, salary);
                    Console.WriteLine(prPrivate.ToString());
                    privates.Add(prPrivate);
                    break;

                case "LieutenantGeneral":
                    salary = decimal.Parse(tokens[4]);
                    LieutenantGeneral lieutenant = new LieutenantGeneral(ID, firstName, lastName, salary);
                    AddPrivates(privates, tokens, lieutenant);

                    Console.WriteLine(lieutenant.ToString());
                    break;

                case "Engineer":
                    salary = decimal.Parse(tokens[4]);
                    Corps corp = Corps.neither;
                    if (tokens[5] == "Airforces")
                    {
                        corp = Corps.Airforces;
                    }
                    else if (tokens[5] == "Marines")
                    {
                        corp = Corps.Marines;
                    }

                    if (!(corp == Corps.neither))
                    {
                        Engineer engineer = new Engineer(ID, firstName, lastName, salary, corp);
                        AddRepairs(tokens, engineer);

                        Console.WriteLine(engineer.ToString());
                    }
                    break;

                case "Commando":
                    salary = decimal.Parse(tokens[4]);
                    corp   = Corps.neither;
                    corp   = ValidateCorps(tokens, corp);

                    if (!(corp == Corps.neither))
                    {
                        Commando commando = new Commando(ID, firstName, lastName, salary, corp);
                        AddValidMissions(tokens, commando);
                        Console.WriteLine(commando.ToString());
                    }
                    break;

                case "Spy":
                    int codeNumber = int.Parse(tokens[4]);
                    Spy spy        = new Spy(ID, firstName, lastName, codeNumber);
                    Console.WriteLine(spy.ToString());
                    break;

                default:
                    break;
                }
            }
        }
        private String CreerBarre(Corps corps)
        {
            string CheminFichierExportBarre = "";

            if (!corps.Dvp)
            {
                return(CheminFichierExportBarre);
            }

            var QuantiteDiff = Quantite * (corps.Qte + corps.QteSup);

            var cheminFichier = corps.CheminFichierRepere;

            if (!File.Exists(cheminFichier))
            {
                return(CheminFichierExportBarre);
            }

            String Repere          = corps.RepereComplet;
            String Profil          = corps.Dimension;
            String Longueur        = corps.Volume;
            String Materiau        = corps.Materiau;
            String NomFichierBarre = ConstruireNomFichierBarre(Repere, IndiceCampagne, QuantiteDiff);

            var mdlCorps = Sw.eOuvrir(cheminFichier);

            if (mdlCorps.IsNull())
            {
                return(CheminFichierExportBarre);
            }

            var Piece = mdlCorps.ePartDoc();

            corps.SwCorps = Piece.ePremierCorps();
            Body2 Barre = corps.SwCorps;

            if (corps.Maj)
            {
                WindowLog.EcrireF("{0}  x{1}", corps.RepereComplet, QuantiteDiff);
            }

            mdlCorps.EditRebuild3();

            try
            {
                List <String> Liste = new List <String>()
                {
                    Repere, Materiau, Profil, Math.Round(Longueur.eToDouble()).ToString(), "× " + QuantiteDiff.ToString()
                };

                if (ListerUsinages)
                {
                    var analyse = new AnalyseBarre(Barre, mdlCorps);

                    Dictionary <String, Double> Dic = new Dictionary <string, double>();

                    foreach (var u in analyse.ListeFaceUsinageSection)
                    {
                        String nom = u.ListeFaceDecoupe.Count + " face - Lg " + Math.Round(u.LgUsinage * 1000, 1);
                        if (Dic.ContainsKey(nom))
                        {
                            Dic[nom] += 1;
                        }
                        else
                        {
                            Dic.Add(nom, 1);
                        }
                    }

                    Liste.Add(Math.Round(analyse.ListeFaceUsinageExtremite[0].LgUsinage * 1000, 1).ToString());

                    if (analyse.ListeFaceUsinageExtremite.Count > 1)
                    {
                        Liste.Add(Math.Round(analyse.ListeFaceUsinageExtremite[1].LgUsinage * 1000, 1).ToString());
                    }
                    else
                    {
                        Liste.Add("");
                    }

                    foreach (var nom in Dic.Keys)
                    {
                        Liste.Add(Dic[nom] + "x [ " + nom + " ]");
                    }
                }

                Nomenclature.AjouterLigne(Liste.ToArray());

                if (corps.Maj && ExporterBarres)
                {
                    ModelDoc2 mdlBarre = Barre.eEnregistrerSous(Piece, DossierBarre, NomFichierBarre, TypeExport, out CheminFichierExportBarre);

                    if (CreerPdf3D)
                    {
                        String CheminPDF = Path.Combine(DossierBarrePDF, NomFichierBarre + eTypeFichierExport.PDF.GetEnumInfo <ExtFichier>());
                        mdlBarre.SauverEnPdf3D(CheminPDF);
                    }

                    mdlBarre.eFermer();
                }
            }
            catch (Exception e)
            {
                WindowLog.Ecrire("  - Erreur");
                this.LogMethode(new Object[] { e });
            }
            finally
            {
                WindowLog.Ecrire("  - Ok");
            }

            mdlCorps.eFermer();

            return(CheminFichierExportBarre);
        }
 public Engineer(int id, string firstName, string lastNAme, decimal salary, Corps corps, ICollection <IRepair> repairs)
     : base(id, firstName, lastNAme, salary, corps)
 {
     this.Repairs = repairs;
 }
 public Commando(int id, string firstname, string lastname, decimal salary, Corps corps)
     : base(id, firstname, lastname, salary, corps)
 {
     this.Missions = new List <IMission>();
 }
Beispiel #18
0
        private ISoldier GetEngineer(int id, string firstName, string lastName, decimal salary, Corps corps, string[] comands)
        {
            IEngineer solder = new Engineer(id, firstName, lastName, salary, corps);

            for (int i = 6; i < comands.Length; i += 2)
            {
                string part  = comands[i];
                int    hours = int.Parse(comands[i + 1]);

                IRepair repair = new Repair(part, hours);
                solder.Repairs.Add(repair);
            }

            return(solder);
        }
Beispiel #19
0
    public static void Main()
    {
        var soldiers = new Dictionary <int, Soldier>();

        string input;

        while ((input = Console.ReadLine()) != "End")
        {
            var split = input.Split();

            Soldier soldier = null;

            int    id        = int.Parse(split[1]);
            string firstName = split[2];
            string lastName  = split[3];

            switch (split[0])
            {
            case "Private":
            {
                double salary = double.Parse(split[4]);
                soldier = new Private(id, firstName, lastName, salary);
                break;
            }

            case "LeutenantGeneral":
            {
                double         salary   = double.Parse(split[4]);
                List <Private> privates = split.Skip(5).Select(pid => (Private)soldiers[int.Parse(pid)]).ToList();
                soldier = new LeutenantGeneral(id, firstName, lastName, salary, privates);
                break;
            }

            case "Engineer":
            {
                double salary = double.Parse(split[4]);
                if (!Enum.TryParse <Corps>(split[5], out Corps corps))
                {
                    continue;
                }

                List <Repair> repairs = new List <Repair>();
                for (int i = 6; i < split.Length - 1; i += 2)
                {
                    repairs.Add(new Repair(split[i], int.Parse(split[i + 1])));
                }
                soldier = new Engineer(id, firstName, lastName, salary, corps, repairs);
                break;
            }

            case "Commando":
            {
                double         salary   = double.Parse(split[4]);
                Corps          corps    = Enum.Parse <Corps>(split[5]);
                List <Mission> missions = new List <Mission>();
                for (int i = 6; i < split.Length - 1; i += 2)
                {
                    if (!Enum.TryParse <MissionState>(split[i + 1], out MissionState state))
                    {
                        continue;
                    }

                    missions.Add(new Mission(split[i], state));
                }
                soldier = new Commando(id, firstName, lastName, salary, corps, missions);
                break;
            }

            case "Spy":
            {
                int codeNumber = int.Parse(split[4]);
                soldier = new Spy(id, firstName, lastName, codeNumber);
                break;
            }
            }

            soldiers.Add(id, soldier);
        }

        foreach (var soldier in soldiers.Values)
        {
            Console.WriteLine(soldier);
        }
    }
Beispiel #20
0
 public SpecialisedSoldier(string id, string firstName, string lastName, double salary, Corps corps)
     : base(id, firstName, lastName, salary)
 {
     this.Corps = corps;
 }
Beispiel #21
0
 public Commando(string id, string firstName, string lastName, decimal salary, Corps corps)
 {
     this.Id        = id;
     this.FirstName = firstName;
     this.LastName  = lastName;
     this.Salary    = salary;
     this.Corps     = corps;
     this.Missions  = new List <Mission>();
 }
Beispiel #22
0
 public Engineer(string id, string firstName, string lastName, decimal salary, Corps corps) : base(id, firstName, lastName, salary, corps)
 {
     repairs = new List <IRepair>();
 }
 protected SpecialisedSoldier(string id, string firstName, string lastName, decimal salary, Corps corps)
     : base(id, firstName, lastName, salary)
 {
     this.Corps = corps;
 }
Beispiel #24
0
 public Engineer(int id, string first, string last, decimal salary, Corps corps)
     : base(id, first, last, salary, corps)
 {
     this.Repairs = new List <IRepair>();
 }
Beispiel #25
0
 protected SpecialisedSoldier(int id, string firstName, string lastName, double salary, Corps corps) : base(id, firstName, lastName, salary)
 {
     Corps = corps;
 }
 public Engineer(string id, string firstName, string lastName, double salary, Corps corps) : base(id, firstName, lastName, salary, corps)
 {
     this.Repairs = new List <IRepair>();
 }
Beispiel #27
0
 /// <summary>
 /// Constructeur de la Class Pattes
 /// </summary>
 /// <param name="tete">Récupère l'objet Tete</param>
 /// <param name="corps">Récupère l'objet Corps</param>
 public Pattes(Tete tete, Corps corps)
 {
     this.RandomAnimal(tete, corps);
     this.RécupererParticuleNom();
 }
 public Commando(string id, string firstName, string lastName, decimal salary, Corps corp)
     : base(id, firstName, lastName, salary, corp)
 {
     this.missions = new List <IMission>();
 }
Beispiel #29
0
 public Commando(string id, string firstName, string lastName, decimal price, Corps corps)
     : base(id, firstName, lastName, price)
 {
     Corps    = corps;
     missions = new List <IMission>();
 }
 public Engineer(int id, string firstName, string lastName, double salary, Corps corps, List <Repair> repairs) : base(id, firstName, lastName, salary, corps)
 {
     Repairs = repairs;
 }
Beispiel #31
0
 public Engineer(int id, string firstName, string lastName, decimal salary, Corps corps, params IRepair[] repairs)
     : base(id, firstName, lastName, salary, corps)
 {
     this.repairs = new List <IRepair>(repairs);
 }
Beispiel #32
0
            /// <summary>
            /// Pour pouvoir obtenir une référence unique pour chaque dossier de corps, identiques
            /// dans l'assemblage, on passe par la création d'une propriété dans chaque dossier.
            /// Cette propriété est liée à une cote dans une esquisse dont la valeur est égale au repère.
            /// Suivant la configuration, la valeur de la cote peut changer et donc le repère du dossier.
            /// C'est le seul moyen pour avoir un lien entre les dossiers et la configuration du modèle.
            /// Les propriétés des dossiers ne sont pas configurables.
            /// </summary>
            protected override void Command()
            {
                try
                {
                    if (MajDossiers)
                    {
                        IndiceMax();
                    }

                    var ListeCorps = new List <Corps>();

                    var lst = MdlBase.ListerComposants(false);

                    foreach (var mdl in lst.Keys)
                    {
                        mdl.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc);
                        EsquisseRepere(mdl);

                        foreach (var cfg in lst[mdl].Keys)
                        {
                            mdl.ShowConfiguration2(cfg);
                            mdl.EditRebuild3();
                            WindowLog.SautDeLigne();
                            WindowLog.EcrireF("{0} \"{1}\"", mdl.eNomSansExt(), cfg);

                            var piece        = mdl.ePartDoc();
                            var NbConfig     = lst[mdl][cfg];
                            var ListeDossier = piece.eListeDesFonctionsDePiecesSoudees(
                                swD =>
                            {
                                BodyFolder Dossier = swD.GetSpecificFeature2();

                                // Si le dossier est la racine d'un sous-ensemble soudé, il n'y a rien dedans
                                if (Dossier.IsRef() && Dossier.eNbCorps() > 0 &&
                                    (eTypeCorps.Barre | eTypeCorps.Tole).HasFlag(Dossier.eTypeDeDossier()))
                                {
                                    return(true);
                                }

                                return(false);
                            }
                                );

                            foreach (var fDossier in ListeDossier)
                            {
                                BodyFolder            Dossier = fDossier.GetSpecificFeature2();
                                CustomPropertyManager PM      = fDossier.CustomPropertyManager;

                                // Si MajDossier et PropExiste, ne pas mettre à jour
                                Boolean Maj = !(MajDossiers && PM.ePropExiste(CONSTANTES.REF_DOSSIER));

                                String NomParam = "";

                                WindowLog.EcrireF("     {0}", fDossier.Name);

                                // On recherche si le dossier à déjà été traité.
                                //      Si non, on ajoute le dossier à la liste
                                //          On met à jour la liste des index des dimensions :
                                //              On ajoute le nom du modele et on itiniatile l'index à 1
                                //              Ou, puisque c'est un nouveau dossier, on ajoute un à l'index existant.
                                //          On créer le nom du paramètre
                                //          On ajoute la propriété au dossier selon le modèle suivant :
                                //              P"D1@REPERAGE_DOSSIER@Nom_de_la_piece.SLDPRT"
                                //      Si oui, on récupère le nom du paramètre
                                var clef = HashDossier(mdl, fDossier);

                                if (!DossierTraite.Contains(clef))
                                {
                                    DossierTraite.Add(clef);

                                    IndexDimension.AddIfNotExistOrPlus(mdl.GetPathName());

                                    NomParam = String.Format("D{0}@{1}", IndexDimension[mdl.GetPathName()]++, CONSTANTES.NOM_ESQUISSE_NUMEROTER);
                                    var propVal = String.Format("{0}\"{1}@{2}\"", CONSTANTES.PREFIXE_REF_DOSSIER, NomParam, mdl.eNomAvecExt());
                                    var r       = PM.ePropAdd(CONSTANTES.REF_DOSSIER, propVal);

                                    if (r > 0)
                                    {
                                        WindowLog.EcrireF("{0}-{1}-{2} : Pas de propriété ajoutée {3}", mdl.eNomSansExt(), cfg, fDossier.Name, (swCustomInfoAddResult_e)r);
                                    }

                                    PM.ePropAdd(CONSTANTES.DESC_DOSSIER, propVal);
                                }
                                else
                                {
                                    String val, result = ""; Boolean wasResolved, link;
                                    var    r = PM.Get6(CONSTANTES.REF_DOSSIER, false, out val, out result, out wasResolved, out link);

                                    if (r == 1)
                                    {
                                        WindowLog.EcrireF("{0}-{1}-{2} : Pas de propriété {3}", mdl.eNomSansExt(), cfg, fDossier.Name, (swCustomInfoGetResult_e)r);
                                    }

                                    NomParam = ExtractNomParam(val);
                                }

                                {
                                    String val, result = ""; Boolean wasResolved, link;
                                    var    r = PM.Get6(CONSTANTES.REF_DOSSIER, false, out val, out result, out wasResolved, out link);

                                    PM.ePropAdd(CONSTANTES.DESC_DOSSIER, val);
                                }

                                // On ajoute la propriété NomDossier
                                // permettant de récupérer le nom du dossier dans la mise en plan
                                if (!PM.ePropExiste(CONSTANTES.NOM_DOSSIER))
                                {
                                    var propVal = String.Format("\"SW-CutListItemName@@@{0}@{1}\"", fDossier.Name, mdl.eNomAvecExt());
                                    PM.ePropAdd(CONSTANTES.NOM_DOSSIER, propVal);
                                }

                                var SwCorps = Dossier.ePremierCorps();

                                Boolean Ajoute = false;

                                var       MateriauCorps = SwCorps.eGetMateriauCorpsOuPiece(piece, cfg);
                                var       nbCorps       = Dossier.eNbCorps() * NbConfig;
                                Dimension param         = mdl.Parameter(NomParam);

                                eTypeCorps TypeCorps = Dossier.eTypeDeDossier();

                                if (CombinerCorpsIdentiques)
                                {
                                    // On recherche s'il existe des corps identiques
                                    // Si oui, on applique le même repère au parametre
                                    foreach (var CorpsTest in ListeCorps)
                                    {
                                        if ((MateriauCorps != CorpsTest.Materiau) || (TypeCorps != CorpsTest.TypeCorps))
                                        {
                                            continue;
                                        }

                                        if (SwCorps.eComparerGeometrie(CorpsTest.SwCorps) == Sw.Comparaison_e.Semblable)
                                        {
                                            CorpsTest.Nb += nbCorps;

                                            if (Maj)
                                            {
                                                var errors = param.SetSystemValue3(CorpsTest.Repere * 0.001, (int)swSetValueInConfiguration_e.swSetValue_InSpecificConfigurations, cfg);
                                                if (errors > 0)
                                                {
                                                    WindowLog.EcrireF(" Erreur de mise à jour {0}", (swSetValueReturnStatus_e)errors);
                                                }
                                            }

                                            CorpsTest.AjouterModele(mdl, cfg, fDossier.GetID());
                                            Ajoute = true;
                                            break;
                                        }
                                    }
                                }

                                if ((Ajoute == false) && Maj)
                                {
                                    var rep    = GenRepereDossier;
                                    var errors = param.SetSystemValue3(rep * 0.001, (int)swSetValueInConfiguration_e.swSetValue_InSpecificConfigurations, cfg);

                                    if (errors > 0)
                                    {
                                        WindowLog.EcrireF(" Erreur de mise à jour {0}", (swSetValueReturnStatus_e)errors);
                                    }

                                    var corps = new Corps(SwCorps, TypeCorps, MateriauCorps);
                                    corps.Nb     = nbCorps;
                                    corps.Repere = rep;
                                    corps.AjouterModele(mdl, cfg, fDossier.GetID());
                                    ListeCorps.Add(corps);
                                }
                            }
                        }

                        mdl.eFermerSiDifferent(MdlBase);
                    }

                    MdlBase.eActiver(swRebuildOnActivation_e.swRebuildActiveDoc);


                    int Errors = 0, Warnings = 0;
                    MdlBase.Save3((int)swSaveAsOptions_e.swSaveAsOptions_SaveReferenced + (int)swSaveAsOptions_e.swSaveAsOptions_Silent, ref Errors, ref Warnings);
                    MdlBase.EditRebuild3();

                    // Petit récap
                    WindowLog.SautDeLigne();
                    WindowLog.EcrireF("Nb de corps unique : {0}", ListeCorps.Count);

                    int nbtt = 0;

                    foreach (var corps in ListeCorps)
                    {
                        nbtt += corps.Nb;
                        WindowLog.EcrireF("P{0} ×{1}", corps.Repere, corps.Nb);
                    }

                    WindowLog.EcrireF("Nb total de corps : {0}", nbtt);
                }
                catch (Exception e)
                {
                    this.LogErreur(new Object[] { e });
                }
            }
Beispiel #33
0
 public Engineer(string id, string firstName, string lastName, decimal salary, Corps corps, IEnumerable <Repair> repairs)
     : base(id, firstName, lastName, salary, corps)
 {
     this.Repairs = repairs;
 }