/** * Appeler sur server * */ private void addJoueur(JoueurMinimalDTO joueurToAdd) { if (isServer) { if (null == listJoueurs) { listJoueurs = new List <JoueurMinimalDTO> (); } listJoueurs.Add(joueurToAdd); //TODO chercher mode pour nb joueur if ((listJoueurs.Count >= 2 || tester) && !gameBegin) { gameBegin = true; //Remplissage de la main initial foreach (JoueurMinimalDTO joueurDTO in listJoueurs) { Joueur joueur = JoueurUtils.getJoueur(joueurDTO.netIdJoueur); if (null != joueur) { joueur.DeckConstruction.piocheDeckConstructionByServer(); joueur.DeckConstruction.piocheDeckConstructionByServer(); } } chooseFirstPlayer(); } } }
public static void executeCapacity(SelectionCiblesExecutionCapacite selectionCiblesResult, NetworkInstanceId netIdTaskEvent) { Joueur joueurSource = JoueurUtils.getJoueur(selectionCiblesResult.IdJoueurCarteSource); CapaciteDTO capacite; if (ActionEventManager.capacityInUse.TryGetValue(selectionCiblesResult.IdCapaciteSource, out capacite)) { foreach (int idCible in selectionCiblesResult.ListIdCiblesProbables) { ISelectionnable cibleSelectionne = SelectionnableUtils.getSelectiobleById(idCible); if (listIdCapaciteEffetImmediat.Contains(selectionCiblesResult.IdTypeCapacite)) { if (cibleSelectionne is CarteMetierAbstract) { traitementCapaciteImmediateCarte((CarteMetierAbstract)cibleSelectionne, capacite, joueurSource, netIdTaskEvent); } else { //TODO traitement capacite immediate autre } } else if (null != selectionCiblesResult.ListIdRessouceCible && cibleSelectionne is IAvecCapacite) { List <RessourceMetier> listRessouceCible = new List <RessourceMetier> (); foreach (int idRessourceCible in selectionCiblesResult.ListIdRessouceCible) { ISelectionnable ressourceCible = SelectionnableUtils.getSelectiobleById(idRessourceCible); if (null != ressourceCible && ressourceCible is RessourceMetier) { listRessouceCible.Add((RessourceMetier)ressourceCible); } } //TODO faire le trie ressource ou non traitementCapaciteRessource(capacite, listRessouceCible, (IAvecCapacite)cibleSelectionne, joueurSource, selectionCiblesResult.IdCarteSource); foreach (RessourceMetier ressourceCible in listRessouceCible) { ressourceCible.synchroniseListCapacite(); } } else if (cibleSelectionne is IAvecCapacite) { //TODO faire le trie ressource ou non traitementAutreCible((IAvecCapacite)cibleSelectionne, capacite, selectionCiblesResult.IdCarteSource); ((IAvecCapacite)cibleSelectionne).synchroniseListCapacite(); } } //Fin d'utilisation de la capacite ActionEventManager.capacityInUse.Remove(selectionCiblesResult.IdCapaciteSource); } else { //TODO capacite not found } }
public static void putCardFromServer(IConteneurCarte emplacementCible, CarteMetierAbstract carteDeplacer) { if (emplacementCible is EmplacementMetierAbstract) { ((EmplacementMetierAbstract)emplacementCible).RpcPutCard(carteDeplacer.netId); } else if (emplacementCible is Mains) { Joueur joueur = JoueurUtils.getJoueur(((Mains)emplacementCible).NetIdJoueur); joueur.RpcPutCardInHand(carteDeplacer.netId); } else if (emplacementCible is DeckMetierAbstract) { ((DeckMetierAbstract)emplacementCible).RpcPutCard(carteDeplacer.netId); } else if (emplacementCible is CartePlaneteMetier) { ((CartePlaneteMetier)emplacementCible).RpcPutCard(carteDeplacer.netId); } }
private static HashSet <Joueur> getJoueursCible(string conditionCible, NetworkInstanceId netIdJoueurSource, NetworkInstanceId netIdJoueurCible, CarteMetierAbstract carteSource) { HashSet <Joueur> joueursCible = new HashSet <Joueur>(); if (netIdJoueurCible != netIdJoueurSource && conditionCible.Contains(ConstanteIdObjet.STR_CONDITION_POUR_ENNEMIE)) { joueursCible.Add(JoueurUtils.getJoueur(netIdJoueurCible)); } if (netIdJoueurCible == netIdJoueurSource && conditionCible.Contains(ConstanteIdObjet.STR_CONDITION_POUR_ALLIER)) { joueursCible.Add(JoueurUtils.getJoueur(netIdJoueurSource)); } if (null != carteSource && null != carteSource.JoueurProprietaire && conditionCible.Contains(ConstanteIdObjet.STR_CONDITION_POUR_PROVENANCE)) { joueursCible.Add(carteSource.JoueurProprietaire); } return(joueursCible); }
public void progressStepServer(int actionPlayer) { if (isServer) { if (actionPlayer == PHASE_ATTAQUE) { phase = PHASE_ATTAQUE; GameObject goBtnLastPlayer = NetworkServer.FindLocalObject(listJoueurs [indexPlayerPlaying].netIdBtnTour); if (null != goBtnLastPlayer && null != goBtnLastPlayer.GetComponent <BoutonTour> ()) { BoutonTour boutonTour = goBtnLastPlayer.GetComponent <BoutonTour> (); boutonTour.setEtatBoutonServer(BoutonTour.enumEtatBouton.terminerTour); } List <CarteConstructionMetierAbstract> listAttaquant = CarteUtils.getListCarteCapableAttaque(listJoueurs [indexPlayerPlaying].netIdJoueur); foreach (CarteConstructionMetierAbstract attaquant in listAttaquant) { attaquant.RpcSetEtatSelectionPlayer(listJoueurs [indexPlayerPlaying].netIdJoueur, SelectionnableUtils.ETAT_HIGH_LIGHT); } } else if (actionPlayer == FIN_TOUR) { Joueur joueurTour = JoueurUtils.getJoueur(listJoueurs [indexPlayerPlaying].netIdJoueur); int phasePrecedente = phase; phase = FIN_TOUR; if (phasePrecedente == PHASE_ATTAQUE) { ActionEventManager.EventActionManager.CreateTask(NetworkInstanceId.Invalid, joueurTour.netId, -1, ConstanteIdObjet.ID_CONDITION_ACTION_FIN_ATTAQUE, NetworkInstanceId.Invalid, false); } else { ActionEventManager.EventActionManager.CreateTask(NetworkInstanceId.Invalid, joueurTour.netId, -1, ConstanteIdObjet.ID_CONDITION_ACTION_FIN_TOUR, NetworkInstanceId.Invalid, false); } } } }
public void finTour(Joueur joueurTour) { GameObject goBtnLastPlayer = NetworkServer.FindLocalObject(listJoueurs [indexPlayerPlaying].netIdBtnTour); if (null != goBtnLastPlayer && null != goBtnLastPlayer.GetComponent <BoutonTour> ()) { BoutonTour boutonTour = goBtnLastPlayer.GetComponent <BoutonTour> (); if (boutonTour.getEtatBouton() == BoutonTour.enumEtatBouton.terminerTour) { boutonTour.setEtatBoutonServer(BoutonTour.enumEtatBouton.enAttente); CapaciteUtils.endOfTurnOfCapacityPlayer(listJoueurs [indexPlayerPlaying].netIdJoueur); bool tourSupJoueur = 0 < CapaciteUtils.valeurAvecCapacite(0, joueurTour.CartePlaneteJoueur.containCapacityOfType(ConstanteIdObjet.ID_CAPACITE_PERTE_TOUR_JEU), ConstanteIdObjet.ID_CAPACITE_PERTE_TOUR_JEU); if (!tourSupJoueur) //Pas de tour supplementaire { if (indexPlayerPlaying < listJoueurs.Count - 1) { indexPlayerPlaying++; } else { indexPlayerPlaying = 0; nbTurn++; } this.idJoueurTour = listJoueurs [indexPlayerPlaying].netIdJoueur; joueurTour = JoueurUtils.getJoueur(listJoueurs [indexPlayerPlaying].netIdJoueur); } RpcAffichagePseudo(listJoueurs [indexPlayerPlaying].Pseudo); ActionEventManager.EventActionManager.CreateTask(NetworkInstanceId.Invalid, joueurTour.netId, -1, ConstanteIdObjet.ID_CONDITION_ACTION_DEBUT_TOUR, NetworkInstanceId.Invalid, false); } } }
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; } } } }