Пример #1
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
     }
 }
Пример #2
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);
    }
Пример #3
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;
                }
            }
        }
    }