コード例 #1
0
    /**
     * 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();
            }
        }
    }
コード例 #2
0
ファイル: CapaciteUtils.cs プロジェクト: jdeon/SCGame
    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
        }
    }
コード例 #3
0
ファイル: EmplacementUtils.cs プロジェクト: jdeon/SCGame
 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);
     }
 }
コード例 #4
0
ファイル: CapaciteUtils.cs プロジェクト: jdeon/SCGame
    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);
    }
コード例 #5
0
    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);
                }
            }
        }
    }
コード例 #6
0
    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);
            }
        }
    }
コード例 #7
0
ファイル: CapaciteUtils.cs プロジェクト: jdeon/SCGame
    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;
                }
            }
        }
    }