private static CapaciteDTO getRessourceFromCarte(CapaciteDTO capaciteSource, IAvecCapacite cibleSelectionne, string typeRessource) { CapaciteDTO capaciteResult = capaciteSource.Clone(); foreach (string conditionCible in capaciteSource.ConditionsCible) { if ((conditionCible.Contains(ConstanteIdObjet.ID_CONDITION_CIBLE_BATIMENT.ToString()) && cibleSelectionne is CarteBatimentMetier) || (conditionCible.Contains(ConstanteIdObjet.ID_CONDITION_CIBLE_DEFENSE.ToString()) && cibleSelectionne is CarteDefenseMetier) || (conditionCible.Contains(ConstanteIdObjet.ID_CONDITION_CIBLE_VAISSEAU.ToString()) && cibleSelectionne is CarteVaisseauMetier)) { capaciteResult.ModeCalcul = ConstanteEnum.TypeCalcul.Ajout; int ajouterAuRessource = 0; if (typeRessource == "Metal") { ajouterAuRessource = getNewValue(((CarteConstructionMetierAbstract)cibleSelectionne).getCoutMetalReelCarte(), capaciteSource.Quantite, capaciteSource.ModeCalcul); } else if (cibleSelectionne is CarteVaisseauMetier && typeRessource == "Carburant") { ajouterAuRessource = getNewValue(((CarteVaisseauMetier)cibleSelectionne).getConsomationCarburant(), capaciteSource.Quantite, capaciteSource.ModeCalcul); } else if (typeRessource == "XP") { ajouterAuRessource = getNewValue(((CarteConstructionMetierAbstract)cibleSelectionne).NiveauActuel, capaciteSource.Quantite, capaciteSource.ModeCalcul); } //TODO autre cible ? capaciteResult.Quantite = ajouterAuRessource; } } return(capaciteResult); }
private static void traitementAutreCible(IAvecCapacite cible, CapaciteDTO capacite, NetworkInstanceId netIdCarteSourceCapacite) { //TODO utilisation de nbCible if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_NB_CARTE_PIOCHE) { if (cible is DeckMetierAbstract) { CapaciteMetier capaciteMetier = convertCapaciteDTOToMetier(capacite, netIdCarteSourceCapacite); cible.addCapacity(capaciteMetier); } //TODO autre cible? } else if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_PERTE_TOUR_JEU || capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_DISSIMULER_PLATEAU) { if (cible is Joueur) { CapaciteMetier capaciteMetier = convertCapaciteDTOToMetier(capacite, netIdCarteSourceCapacite); cible.addCapacity(capaciteMetier); } //TODO autre cible } else if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_NB_PLACE_PLATEAU) { //TODO en cas de nombre nzgatif desactiver emplacement //TODO en cas de nombre positif mettre l'emplacement sur un autre } }
private static HashSet <ISelectionnable> getRessourceProvenanceCible(CapaciteDTO capaciteSource, NetworkInstanceId netIdJoueurSource, NetworkInstanceId netIdJoueurCible, CarteMetierAbstract carteSource) { HashSet <ISelectionnable> listResult = new HashSet <ISelectionnable> (); foreach (string conditionCible in capaciteSource.ConditionsCible) { string[] tabConditionCible = conditionCible.Split(char.Parse("-")); if (tabConditionCible.Length >= 2) { int idConditionCible = int.Parse(tabConditionCible [0]); string allegeance = tabConditionCible [1]; if (idConditionCible == ConstanteIdObjet.ID_CONDITION_CIBLE_RESSOURCE) { HashSet <Joueur> joueursCible = getJoueursCible(conditionCible, netIdJoueurSource, netIdJoueurCible, carteSource); foreach (Joueur joueurRessource in joueursCible) { if (!capaciteSource.AppelUnique || !joueurRessource.RessourceMetal.containCapacityWithId(capaciteSource.Id)) { listResult.Add(joueurRessource.RessourceMetal); } if (!capaciteSource.AppelUnique || !joueurRessource.RessourceCarburant.containCapacityWithId(capaciteSource.Id)) { listResult.Add(joueurRessource.RessourceCarburant); } if (!capaciteSource.AppelUnique || !joueurRessource.RessourceXP.containCapacityWithId(capaciteSource.Id)) { listResult.Add(joueurRessource.RessourceXP); } } } else if (ConditionCarteUtils.listIdCondtionCibleCarte.Contains(idConditionCible)) { List <IConteneurCarte> emplacementsOccuper = ConvertUtils.convertToListParent <IConteneurCarte, EmplacementMetierAbstract>(EmplacementUtils.getListEmplacementOccuperJoueur <EmplacementMetierAbstract> (NetworkInstanceId.Invalid)); List <CarteMetierAbstract> listCartesCibleProbable = ConditionCarteUtils.getMethodeCarteCible(idConditionCible, allegeance, emplacementsOccuper, carteSource, netIdJoueurSource); if (capaciteSource.AppelUnique) { foreach (CarteMetierAbstract carteProbable in listCartesCibleProbable) { //On vérifie que la carte ne possède pas déjà l'effet if (!carteProbable.containCapacityWithId(capaciteSource.Id)) { listResult.Add(carteProbable); } } } else { listResult.UnionWith(ConvertUtils.convertToListParent <ISelectionnable, CarteMetierAbstract> (listCartesCibleProbable)); } } } } return(listResult); }
private static SelectionCiblesExecutionCapacite getCiblesOfCapacity(CarteMetierAbstract carteSourceCapacite, CarteMetierAbstract carteSourceAction, ISelectionnable cible, CapaciteDTO capaciteSource, NetworkInstanceId netIdJoueur, int actionAppelante) { SelectionCiblesExecutionCapacite selectionCiblesResult; CapaciteDTO capacite = capaciteSource.Clone(); if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_ACTION_HASARD) { capacite.Capacite = Random.Range(1, 40); } if (ConditionCarteUtils.listIdCapacitePourCarte.Contains(capacite.Capacite) && (null == cible || cible is CarteMetierAbstract)) { List <CarteMetierAbstract> cartesCible = getCartesCible(carteSourceCapacite, (CarteMetierAbstract)cible, capacite, netIdJoueur); //TODO use ConstanteIdObjet.ID_CAPACITE_CONDITION selectionCiblesResult = new SelectionCiblesExecutionCapacite(capacite, carteSourceCapacite, actionAppelante); foreach (CarteMetierAbstract cibleProbable in cartesCible) { selectionCiblesResult.ListIdCiblesProbables.Add(cibleProbable.IdISelectionnable); } } else { selectionCiblesResult = findCiblesHorsCarte(capacite, carteSourceCapacite, carteSourceAction, netIdJoueur, NetworkInstanceId.Invalid /*TODO cible.netIdJoueurCible*/, actionAppelante); } return(selectionCiblesResult); }
public static bool isCapaciteCall(CapaciteDTO capaciteTest, int idConditionAction, bool isAllier, bool isProvenance) { bool capable = false; string allieOuEnnemi = isAllier ? ConstanteIdObjet.STR_CONDITION_POUR_ALLIER : ConstanteIdObjet.STR_CONDITION_POUR_ENNEMIE; foreach (string conditionAction in capaciteTest.ConditionsAction) { string[] tabConditionAction = conditionAction.Split(char.Parse("-")); if (tabConditionAction.Length >= 2 && tabConditionAction [0] == idConditionAction.ToString() && (tabConditionAction [1].Contains(allieOuEnnemi) || (isProvenance && tabConditionAction [1].Contains(ConstanteIdObjet.STR_CONDITION_POUR_PROVENANCE)))) { capable = true; } } return(capable); }
public CapaciteDTO Clone() { CapaciteDTO clone = new CapaciteDTO(this.Id); clone.Nom = this.Nom; clone.Capacite = this.Capacite; clone.Quantite = this.Quantite; clone.ModeCalcul = this.ModeCalcul; //TODO clone enum obligatoire? clone.Specification = this.Specification; clone.AppelUnique = this.AppelUnique; clone.LierACarte = this.LierACarte; clone.ChoixCible = this.ChoixCible; clone.Duree = this.Duree; clone.NbCible = this.NbCible; clone.ConditionsCible = new List <string>(); foreach (string conditionCible in this.ConditionsCible) { clone.ConditionsCible.Add(conditionCible); } clone.ConditionsEmplacement = new List <string>(); foreach (string conditionEmplacement in this.ConditionsEmplacement) { clone.ConditionsEmplacement.Add(conditionEmplacement); } clone.ConditionsAction = new List <string>(); foreach (string conditionAction in this.ConditionsAction) { clone.ConditionsAction.Add(conditionAction); } //TODO Clone carte? clone.CarteInvocation = this.CarteInvocation; clone.ComportementSiModulSimilaire = this.ComportementSiModulSimilaire; //TODO clone enum obligatoire? clone.NiveauInvocation = this.NiveauInvocation; return(clone); }
//CARTE INVOQUER //Niv CARTE INVOQUER public SelectionCiblesExecutionCapacite(CapaciteDTO capacite, CarteMetierAbstract carteSource, int idActionAppelante) { this.idTypeCapacite = capacite.Capacite; this.libelleCapacite = capacite.Nom; // TODO rajouter fonction descriptive de action this.choixManuelle = capacite.ChoixCible; this.nbChoixCible = capacite.NbCible; int newIdCapacityInUse = ActionEventManager.sequenceCapacityInUse++; this.idCapaciteSource = newIdCapacityInUse; ActionEventManager.capacityInUse.Add(newIdCapacityInUse, capacite.Clone()); //this.capaciteBase = capacite.Clone (); this.idActionAppelante = idActionAppelante; this.idCarteSource = carteSource.netId; this.idJoueurCarteSource = carteSource.JoueurProprietaire.netId; this.listIdCiblesProbables = new List <int> (); this.listIdRessouceCible = null; }
private static List <DeckMetierAbstract> getDecksCibles(CapaciteDTO capacite, NetworkInstanceId netIdJoueurSource, NetworkInstanceId netIdJoueurCible, CarteMetierAbstract carteSouce) { List <DeckMetierAbstract> listDeckCible = new List <DeckMetierAbstract>(); foreach (string conditionCible in capacite.ConditionsCible) { HashSet <Joueur> joueursCible = getJoueursCible(conditionCible, netIdJoueurSource, netIdJoueurCible, carteSouce); foreach (Joueur joueurRessource in joueursCible) { if (conditionCible.Contains(ConstanteIdObjet.ID_CONDITION_CIBLE_DECK_CONSTRUCTION.ToString()) && null != joueurRessource.DeckConstruction && (!capacite.AppelUnique || !joueurRessource.DeckConstruction.containCapacityWithId(capacite.Id))) { listDeckCible.Add(joueurRessource.DeckConstruction); } else if (conditionCible.Contains(ConstanteIdObjet.ID_CONDITION_CIBLE_DECK_AMELIORATION.ToString())) { //TODO ajouter deck amelioration } } } return(listDeckCible); }
public static void callCapacite(CarteMetierAbstract carteSourceCapacite, CarteMetierAbstract carteSourceAction, ISelectionnable cible, CapaciteDTO capaciteSource, NetworkInstanceId netIdJoueur, int actionAppelante, NetworkInstanceId netIdEventTaskAction) { SelectionCiblesExecutionCapacite selectionCiblesResult = getCiblesOfCapacity(carteSourceCapacite, carteSourceAction, cible, capaciteSource, netIdJoueur, actionAppelante); int idSelection = null != cible ? cible.IdISelectionnable : -1; ActionEventManager.EventActionManager.createTaskChooseTarget(selectionCiblesResult, carteSourceAction.netId, netIdJoueur, idSelection, actionAppelante, netIdEventTaskAction); }
private static void traitementCapaciteRessource(CapaciteDTO capacite, List <RessourceMetier> ressourcesCible, IAvecCapacite cibleSelectionne, Joueur joueurCarteSource, NetworkInstanceId netIdCarteSource /*, NetworkInstanceId netIdJoueurAction, NetworkInstanceId netIdJoueurCible, int actionAppelante*/) { if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_PRODUCTION_RESSOURCE || capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_STOCK_RESSOURCE) { //Cas ou l on rajoute une capaciteMetier foreach (RessourceMetier ressource in ressourcesCible) { if (cibleSelectionne is CarteBatimentMetier || cibleSelectionne is CarteDefenseMetier || cibleSelectionne is CarteVaisseauMetier) { CapaciteDTO capaciteRessource = getRessourceFromCarte(capacite, cibleSelectionne, ressource.TypeRessource); CapaciteMetier capaciteMetier = convertCapaciteDTOToMetier(capaciteRessource, netIdCarteSource); ressource.addCapacity(capaciteMetier); } else { CapaciteMetier capaciteMetier = convertCapaciteDTOToMetier(capacite, netIdCarteSource); ressource.addCapacity(capaciteMetier); } } } else if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_VOL_RESSOURCE && null != joueurCarteSource) { foreach (RessourceMetier ressource in ressourcesCible) { CapaciteDTO capaciteUtile = null; if (ressource.NetIdJoueur != joueurCarteSource.netId) //on ne peut se voler soit même { if (cibleSelectionne is CarteBatimentMetier || cibleSelectionne is CarteDefenseMetier || cibleSelectionne is CarteVaisseauMetier) { capaciteUtile = getRessourceFromCarte(capacite, cibleSelectionne, ressource.TypeRessource); } else { capaciteUtile = capacite; } int stockActuel = ressource.Stock; int newStock = getNewValue(stockActuel, capaciteUtile.Quantite, capaciteUtile.ModeCalcul); int montantVoler = newStock - stockActuel; if (ressource.Stock < montantVoler) { montantVoler = ressource.Stock; } ressource.Stock -= montantVoler; int montantReelVole = joueurCarteSource.addRessourceServer(ressource.TypeRessource, montantVoler); if (montantReelVole != montantVoler) { ressource.Stock += montantVoler - montantReelVole; } } } } else if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_TYPE_RESSOURCE) { foreach (RessourceMetier ressource in ressourcesCible) { CapaciteDTO capaciteUtile; if (cibleSelectionne is CarteBatimentMetier || cibleSelectionne is CarteDefenseMetier || cibleSelectionne is CarteVaisseauMetier) { capaciteUtile = getRessourceFromCarte(capacite, cibleSelectionne, ressource.TypeRessource); } else { capaciteUtile = capacite; } int stockActuel = ressource.Stock; int newStock = getNewValue(stockActuel, capaciteUtile.Quantite, capaciteUtile.ModeCalcul); int montantEchange = newStock - stockActuel; if (ressource.Stock < montantEchange) { montantEchange = ressource.Stock; } ressource.Stock -= montantEchange; string ressourceOppose = ""; if (ressource.TypeRessource == "Metal") { ressourceOppose = "Carburant"; } else if (ressource.TypeRessource == "Carburant") { ressourceOppose = "Metal"; } Joueur joueurRessource = JoueurUtils.getJoueur(ressource.NetIdJoueur); int montantReelEchange = joueurRessource.addRessourceServer(ressourceOppose, montantEchange); if (montantReelEchange != montantEchange) { ressource.Stock += montantEchange - montantReelEchange; } } } }
/** * carteCibleCapacite : Carte vers laquelle la capacite va aller * capaciteImmediate : capacite applicable immediatement * carteOrigine : carte d'ou provient la capacite * carteCibleAction : carte cibler lors de l'appel de l'event * */ private static void traitementCapaciteImmediateCarte(CarteMetierAbstract carteCibleCapacite, CapaciteDTO capaciteReference, Joueur joueur, NetworkInstanceId netIdTaskEvent) { if (capaciteReference.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_EMPLACEMENT_CARTE) { //TODO } else if (capaciteReference.Capacite == ConstanteIdObjet.ID_CAPACITE_VOLE_CARTE) { //TODO Definir le conteneur mains, deck, emplacement carteCibleCapacite.deplacerCarte(joueur.Main, joueur.netId, netIdTaskEvent); } else if (capaciteReference.Capacite == ConstanteIdObjet.ID_CAPACITE_DESTRUCTION_CARTE) { //TODO que faire si pas IVulnerable? if (carteCibleCapacite is IVulnerable) { ((IVulnerable)carteCibleCapacite).destruction(netIdTaskEvent); } } else if (capaciteReference.Capacite == ConstanteIdObjet.ID_CAPACITE_INVOQUE_CARTE && null != capaciteReference.CarteInvocation) { GameObject carteGO = CarteUtils.convertCarteDTOToGameobject(capaciteReference.CarteInvocation, true); //TODO ne prends pas en compte l'emplacement cible ou l invocation chez l ennemie CarteUtils.invoquerCarteServer(carteGO, capaciteReference.NiveauInvocation, joueur.Main, joueur); } else if (capaciteReference.Capacite == ConstanteIdObjet.ID_CAPACITE_REVELE_CARTE) { //TODO RPC carteCibleCapacite.generateVisualCard (); } }
private static List <CarteMetierAbstract> getCartesCible(CarteMetierAbstract carteOrigin, CarteMetierAbstract carteCible, CapaciteDTO capacite, NetworkInstanceId netIdJoueur) { List <CarteMetierAbstract> listCartesCible = new List <CarteMetierAbstract> (); List <IConteneurCarte> listEmplacementsCible = new List <IConteneurCarte> (); foreach (string conditionEmplacement in capacite.ConditionsEmplacement) { string[] tabConditionEmplacement = conditionEmplacement.Split(char.Parse("-")); if (tabConditionEmplacement.Length >= 2) { int idEmplacement = int.Parse(tabConditionEmplacement [0]); listEmplacementsCible.AddRange(ConditionEmplacementUtils.getMethodeEmplacement(idEmplacement, tabConditionEmplacement[1], carteOrigin.getConteneur(), carteCible, netIdJoueur)); } } //TODO si capacite a cible pas besoin de faire la suite foreach (string conditionCible in capacite.ConditionsCible) { string[] tabConditionCible = conditionCible.Split(char.Parse("-")); if (tabConditionCible.Length >= 2) { int idCible = int.Parse(tabConditionCible [0]); List <CarteMetierAbstract> listCartesCibleProbable = ConditionCarteUtils.getMethodeCarteCible(idCible, tabConditionCible[1], listEmplacementsCible, carteOrigin, netIdJoueur); if (capacite.AppelUnique) { foreach (CarteMetierAbstract carteProbable in listCartesCibleProbable) { //On vérifie que la carte ne possède pas déjà l'effet if (!carteProbable.containCapacityWithId(capacite.Id)) { listCartesCible.Add(carteProbable); } } } else { listCartesCible.AddRange(listCartesCibleProbable); } } } return(listCartesCible); }
private static SelectionCiblesExecutionCapacite findCiblesHorsCarte(CapaciteDTO capacite, CarteMetierAbstract carteSourceCapacite, CarteMetierAbstract carteSourceAction, NetworkInstanceId netIdJoueurAction, NetworkInstanceId netIdJoueurCible, int actionAppelante) { SelectionCiblesExecutionCapacite selectionCible; if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_PRODUCTION_RESSOURCE || capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_PRODUCTION_RESSOURCE || (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_VOL_RESSOURCE && null != carteSourceCapacite && null != carteSourceCapacite.JoueurProprietaire) || capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_TYPE_RESSOURCE) { selectionCible = new SelectionCiblesExecutionCapacite(capacite, carteSourceCapacite, actionAppelante); List <RessourceMetier> ressourcesCible = getRessourceMetierCible(capacite.ConditionsEmplacement, netIdJoueurAction, netIdJoueurCible, carteSourceCapacite); selectionCible.initModeRessourceCapa(ressourcesCible); if (capacite.NbCible == 1 && !capacite.ChoixCible && (actionAppelante == ConstanteIdObjet.ID_CONDITION_ACTION_DESTRUCTION_CARTE || actionAppelante == ConstanteIdObjet.ID_CONDITION_ACTION_INVOCATION) && isCardCibleCapacity(carteSourceAction, capacite.ConditionsCible, netIdJoueurAction)) { selectionCible.ListIdCiblesProbables.Add(carteSourceAction.IdISelectionnable); //TODO prise en compte appel unique } else { HashSet <ISelectionnable> provenanceRessource = getRessourceProvenanceCible(capacite, netIdJoueurAction, netIdJoueurCible, carteSourceCapacite); foreach (ISelectionnable cibleProbable in provenanceRessource) { selectionCible.ListIdCiblesProbables.Add(cibleProbable.IdISelectionnable); } } } else if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_NB_CARTE_PIOCHE) { selectionCible = new SelectionCiblesExecutionCapacite(capacite, carteSourceCapacite, actionAppelante); List <DeckMetierAbstract> decksCible = getDecksCibles(capacite, netIdJoueurAction, netIdJoueurCible, carteSourceCapacite); foreach (DeckMetierAbstract cibleProbable in decksCible) { selectionCible.ListIdCiblesProbables.Add(cibleProbable.IdISelectionnable); } } else if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_PERTE_TOUR_JEU || capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_DISSIMULER_PLATEAU) { HashSet <Joueur> joueursCible = new HashSet <Joueur> (); selectionCible = new SelectionCiblesExecutionCapacite(capacite, carteSourceCapacite, actionAppelante); foreach (string conditionCible in capacite.ConditionsCible) { joueursCible.UnionWith(getJoueursCible(conditionCible, netIdJoueurAction, netIdJoueurCible, carteSourceCapacite)); } foreach (Joueur joueurCible in joueursCible) { if (!(capacite.AppelUnique && joueurCible.CartePlaneteJoueur.containCapacityWithId(capacite.Id))) { selectionCible.ListIdCiblesProbables.Add(joueurCible.CartePlaneteJoueur.IdISelectionnable); } } } else if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_NB_PLACE_PLATEAU) { //TODO a modifier quelle est la cible (emplacement, plateau, ?) selectionCible = new SelectionCiblesExecutionCapacite(capacite, carteSourceCapacite, actionAppelante); } else { //TODO a modifier selectionCible = new SelectionCiblesExecutionCapacite(capacite, carteSourceCapacite, actionAppelante); } return(selectionCible); }
public static CapaciteMetier convertCapaciteDTOToMetier(CapaciteDTO capaciteDTO, NetworkInstanceId netIdCard) { //TODO prendre en compte module return(new CapaciteMetier(capaciteDTO.Capacite, capaciteDTO.Id, capaciteDTO.ModeCalcul, capaciteDTO.Quantite, netIdCard, capaciteDTO.LierACarte, capaciteDTO.Duree)); }
public static CapaciteDTO convertCapaciteDataToDTO(CapaciteData capaciteData) { CapaciteDTO capaciteDTOResult = new CapaciteDTO(); capaciteDTOResult.Nom = capaciteData.nom; capaciteDTOResult.Capacite = capaciteData.capacite; capaciteDTOResult.Quantite = capaciteData.quantite; capaciteDTOResult.ModeCalcul = capaciteData.typeCalcul; capaciteDTOResult.Specification = capaciteData.specification; capaciteDTOResult.AppelUnique = capaciteData.appelUnique; capaciteDTOResult.LierACarte = capaciteData.lierACarte; capaciteDTOResult.ChoixCible = capaciteData.choixCible; capaciteDTOResult.Duree = capaciteData.duree; capaciteDTOResult.NbCible = capaciteData.nbCible; capaciteDTOResult.ConditionsCible = new List <string> (); if (null != capaciteData.conditionCible) { foreach (string CCData in capaciteData.conditionCible) { capaciteDTOResult.ConditionsCible.Add(CCData); } } capaciteDTOResult.ConditionsEmplacement = new List <string> (); if (null != capaciteData.conditionEmplacement) { foreach (string CEData in capaciteData.conditionEmplacement) { capaciteDTOResult.ConditionsEmplacement.Add(CEData); } } capaciteDTOResult.ConditionsAction = new List <string> (); if (null != capaciteData.conditionAction) { foreach (string CAData in capaciteData.conditionAction) { capaciteDTOResult.ConditionsAction.Add(CAData); } } if (capaciteData is CapaciteInvocationModuleCibleData) { capaciteDTOResult.CarteInvocation = convertCarteAmeliorationDataToDTO(((CapaciteInvocationModuleCibleData)capaciteData).moduleAInvoquer); capaciteDTOResult.ComportementSiModulSimilaire = ((CapaciteInvocationModuleCibleData)capaciteData).comportementSiModulSimilaire; capaciteDTOResult.NiveauInvocation = 1; } else if (capaciteData is CapaciteInvocationVaisseauData) { capaciteDTOResult.CarteInvocation = convertCarteConstructionDataToDTO(((CapaciteInvocationVaisseauData)capaciteData).moduleAInvoquer); capaciteDTOResult.ComportementSiModulSimilaire = ConstanteEnum.TypeInvocation.ajouter; capaciteDTOResult.NiveauInvocation = ((CapaciteInvocationVaisseauData)capaciteData).niveauInvocation; } else { capaciteDTOResult.CarteInvocation = null; capaciteDTOResult.ComportementSiModulSimilaire = ConstanteEnum.TypeInvocation.ajouter; capaciteDTOResult.NiveauInvocation = 0; } return(capaciteDTOResult); }