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 } }
/*******************IAvecCapacity*****************/ public void addCapacity(CapaciteMetier capaToAdd) { if (capaToAdd.IdTypeCapacite == ConstanteIdObjet.ID_CAPACITE_MODIF_PRODUCTION_RESSOURCE) { capaToAdd.transformToAddMode(ProductionWithCapacity); } else if (capaToAdd.IdTypeCapacite == ConstanteIdObjet.ID_CAPACITE_MODIF_STOCK_RESSOURCE) { capaToAdd.transformToAddMode(StockWithCapacity); } listCapaciteRessource.Add(capaToAdd); }
/*********************************IAvecCapacite*********************/ public void addCapacity(CapaciteMetier capaToAdd) { listCapaciteDeck.Add(capaToAdd); }
/*********************************IAvecCapacite*********************/ public void addCapacity(CapaciteMetier capaToAdd) { listEffetCapacite.Add(capaToAdd); }
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; } } } }