Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
 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
     }
 }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 5
0
    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);
    }
Exemplo n.º 6
0
    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);
    }
Exemplo n.º 7
0
    //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;
    }
Exemplo n.º 8
0
    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);
    }
Exemplo n.º 9
0
    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);
    }
Exemplo n.º 10
0
    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;
                }
            }
        }
    }
Exemplo n.º 11
0
    /**
     * 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 ();
        }
    }
Exemplo n.º 12
0
    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);
    }
Exemplo n.º 13
0
    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);
    }
Exemplo n.º 14
0
 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));
 }
Exemplo n.º 15
0
    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);
    }