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 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); }
//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; }