Пример #1
0
    public void CmdPoseCarte(NetworkInstanceId netIdJoueur, NetworkInstanceId netIdCarteSource, int idSelectionnableCible, NetworkInstanceId netIdTaskEvent)
    {
        CarteMetierAbstract carteOrigineAction = ConvertUtils.convertNetIdToScript <CarteMetierAbstract> (netIdCarteSource, false);
        ISelectionnable     cible = SelectionnableUtils.getSelectiobleById(idSelectionnableCible);

        if (null != carteOrigineAction)
        {
            if (carteOrigineAction is CarteConstructionMetierAbstract)
            {
                if (null != onPoseConstruction)
                {
                    onPoseConstruction(netIdJoueur, carteOrigineAction, cible, netIdTaskEvent);
                }
            }

            //TODO carteAmeliration

            /*if (carteOrigineAction is CarteAmeliorationMetier && null != onPoseConstruction) {
             * onPoseConstruction (netIdJoueur);
             * }*/
            /*
             * if (null != onInvocation) {
             *      //TODO carteInvoque?
             *      onInvocation (netIdJoueur, carteOrigineAction, cible);
             * }*/
        }
    }
Пример #2
0
    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
    public void CmdPiocheAmelioration(NetworkInstanceId netIdJoueur, NetworkInstanceId netIdCarteSource, int idSelectionnableCible, NetworkInstanceId netIdTaskEvent)
    {
        CarteMetierAbstract carteOrigineAction = ConvertUtils.convertNetIdToScript <CarteMetierAbstract> (netIdCarteSource, false);
        ISelectionnable     cible = SelectionnableUtils.getSelectiobleById(idSelectionnableCible);

        if (null != onPiocheAmelioration)
        {
            onPiocheAmelioration(netIdJoueur, carteOrigineAction, cible, netIdTaskEvent);
        }
    }
Пример #4
0
    public IEnumerator phaseChoixCible(List <ISelectionnable> listCibleSelectionnable)
    {
        float tempsDecision = TEMPS_DECISION_MAX;

        listCiblesSelectionnes = new List <ISelectionnable> ();

        //La phase dure 30 secondes ou jusqu' demande d'arret ou si le nombre de carte selectionne est correct
        while (tempsDecision > 0 && !finish && listCiblesSelectionnes.Count < selectionCibles.NbCible)
        {
            tempsDecision -= .25f;
            yield return(new WaitForSeconds(.25f));
        }

        finish = true;

        //TODO vérifier listCiblesSelectionnes présent dans cibleProbale
        if (listCiblesSelectionnes.Count > 0)
        {
            selectionCibles.ListIdCiblesProbables.Clear();

            if (selectionCibles.IdCapaciteSource > 0 && selectionCibles.IdTypeCapacite > 0)
            {
                //Cas où l'on choisi les cibles d'une capacité
                foreach (ISelectionnable cible in listCiblesSelectionnes)
                {
                    selectionCibles.ListIdCiblesProbables.Add(cible.IdISelectionnable);
                }

                ActionEventManager.EventActionManager.CmdExecuteCapacity(selectionCibles.ListIdCiblesProbables.ToArray(), netId);
            }
            else
            {
                NetworkBehaviour netBehaviour = ConvertUtils.convertNetIdToScript <NetworkBehaviour> (originAction, true);
                ISelectionnable  cible        = SelectionnableUtils.getSelectiobleById(this.idSelectionnableTarget);

                if (typeEvent == ConstanteIdObjet.ID_CONDITION_ACTION_DEFEND && netBehaviour is CartePlaneteMetier && cible is CarteVaisseauMetier)
                {
                    //Cas où le choix de cible provient de la défense d'une plante
                    foreach (ISelectionnable selection in listCiblesSelectionnes)
                    {
                        if (selection is IDefendre)
                        {
                            ((IDefendre)selection).preDefense((CarteVaisseauMetier)cible, netId);
                        }
                    }
                }
            }



            //TODO miseHorsBrillance toute les cartes
        }
    }
Пример #5
0
    public static ISelectionnable getSelectiobleById(int id)
    {
        ISelectionnable selectionnableResult = null;

        List <ISelectionnable> listSelectionnable = GameObject.FindObjectsOfType <MonoBehaviour> ().OfType <ISelectionnable>().ToList <ISelectionnable>();

        if (id > 0 && null != listSelectionnable && listSelectionnable.Count > 0)
        {
            foreach (ISelectionnable selectionnable in listSelectionnable)
            {
                if (selectionnable.IdISelectionnable == id)
                {
                    selectionnableResult = selectionnable;
                    break;
                }
            }
        }

        return(selectionnableResult);
    }
Пример #6
0
    private void RpcDisplayCapacityChoice()
    {
        if (null != JoueurUtils.getJoueurLocal() && JoueurUtils.getJoueurLocal().netId == joueur)
        {
            List <ISelectionnable> listCibleSelectionnable = new List <ISelectionnable> ();
            foreach (int idCible in selectionCibles.ListIdCiblesProbables)
            {
                ISelectionnable cible = SelectionnableUtils.getSelectiobleById(idCible);
                if (null != cible)
                {
                    cible.EtatSelectionnable = SelectionnableUtils.ETAT_SELECTIONNABLE;
                    listCibleSelectionnable.Add(cible);
                }
            }

            StartCoroutine(phaseChoixCible(listCibleSelectionnable));
        }
        else
        {
            StartCoroutine(waitOtherPlayer());
        }
    }
    public void useDeplacementCapacity(NetworkInstanceId netIdJoueur, CarteMetierAbstract carteSourceAction, ISelectionnable cible, NetworkInstanceId netIdTaskEvent)
    {
        if (cible is EmplacementAttaque && this.getConteneur() is EmplacementMetierAbstract)
        {
            List <CapaciteDTO> capaciteDeplacementAttaque = getListCapaciteToCall(netIdJoueur, carteSourceAction.netId, ConstanteIdObjet.ID_CONDITION_ACTION_DEPLACEMENT_LIGNE_ATTAQUE);

            foreach (CapaciteDTO capacite in capaciteDeplacementAttaque)
            {
                CapaciteUtils.callCapacite(this, carteSourceAction, cible, capacite, netIdJoueur, ConstanteIdObjet.ID_CONDITION_ACTION_DEPLACEMENT_LIGNE_ATTAQUE, netIdTaskEvent);
            }
        }
        else if (cible is EmplacementMetierAbstract)
        {
            List <CapaciteDTO> capaciteDeplacementAttaque = getListCapaciteToCall(netIdJoueur, carteSourceAction.netId, ConstanteIdObjet.ID_CONDITION_ACTION_DEPLACEMENT_STANDART);

            foreach (CapaciteDTO capacite in capaciteDeplacementAttaque)
            {
                CapaciteUtils.callCapacite(this, carteSourceAction, cible, capacite, netIdJoueur, ConstanteIdObjet.ID_CONDITION_ACTION_DEPLACEMENT_STANDART, netIdTaskEvent);
            }
        }
    }
    public void useRecoitDegatCapacity(NetworkInstanceId netIdJoueur, CarteMetierAbstract carteSourceAction, ISelectionnable cible, NetworkInstanceId netIdTaskEvent)
    {
        if (this.getConteneur() is EmplacementMetierAbstract)
        {
            List <CapaciteDTO> capaciteDegatRecu = getListCapaciteToCall(netIdJoueur, carteSourceAction.netId, ConstanteIdObjet.ID_CONDITION_ACTION_RECOIT_DEGAT);

            foreach (CapaciteDTO capacite in capaciteDegatRecu)
            {
                CapaciteUtils.callCapacite(this, carteSourceAction, cible, capacite, netIdJoueur, ConstanteIdObjet.ID_CONDITION_ACTION_RECOIT_DEGAT, netIdTaskEvent);
            }
        }
    }
    public void usePoseConstructionCapacity(NetworkInstanceId netIdJoueur, CarteMetierAbstract carteSourceAction, ISelectionnable cible, NetworkInstanceId netIdTaskEvent)
    {
        if (CarteUtils.checkCarteActive(this) &&
            (this.getConteneur() is EmplacementMetierAbstract || carteSourceAction.netId == this.netId))
        {
            List <CapaciteDTO> capacitePoseConstruction = getListCapaciteToCall(netIdJoueur, carteSourceAction.netId, ConstanteIdObjet.ID_CONDITION_ACTION_POSE_CONSTRUCTION);

            foreach (CapaciteDTO capacite in capacitePoseConstruction)
            {
                CapaciteUtils.callCapacite(this, carteSourceAction, cible, capacite, netIdJoueur, ConstanteIdObjet.ID_CONDITION_ACTION_POSE_CONSTRUCTION, netIdTaskEvent);
            }
        }
    }
Пример #10
0
    public static void callCapacite(CarteMetierAbstract carteSourceCapacite, CarteMetierAbstract carteSourceAction, ISelectionnable cible, CapaciteDTO capaciteSource, NetworkInstanceId netIdJoueur, int actionAppelante, NetworkInstanceId netIdEventTaskAction)
    {
        SelectionCiblesExecutionCapacite selectionCiblesResult = getCiblesOfCapacity(carteSourceCapacite, carteSourceAction, cible, capaciteSource, netIdJoueur, actionAppelante);
        int idSelection = null != cible ? cible.IdISelectionnable : -1;

        ActionEventManager.EventActionManager.createTaskChooseTarget(selectionCiblesResult, carteSourceAction.netId, netIdJoueur, idSelection, actionAppelante, netIdEventTaskAction);
    }
Пример #11
0
    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);
    }
Пример #12
0
    public static void launchEventAction(int idActionEvent, NetworkInstanceId netIdSourceAction, NetworkInstanceId netIdJoueurSourceAction, int idSelectionCible, NetworkInstanceId netIdEventTask)
    {
        NetworkBehaviour scriptSource = ConvertUtils.convertNetIdToScript <NetworkBehaviour> (netIdSourceAction, false);

        //TODO remplacer les -1

        if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_PIOCHE_CONSTRUCTION)
        {
            if (scriptSource is CarteConstructionMetierAbstract)
            {
                ((CarteConstructionMetierAbstract)scriptSource).CmdPiocheCard(netIdJoueurSourceAction);
            }
            else
            {
                aucuneActionEffectuer();
            }
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_PIOCHE_AMELIORATION)
        {
            //TODO
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_POSE_CONSTRUCTION ||
                 idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_POSE_AMELIORATION ||
                 idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_DEPLACEMENT_STANDART ||
                 idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_DEPLACEMENT_LIGNE_ATTAQUE)
        {
            ISelectionnable cible = SelectionnableUtils.getSelectiobleById(idSelectionCible);

            if (null != cible && cible is IConteneurCarte && scriptSource is CarteConstructionMetierAbstract)
            {
                if (((CarteConstructionMetierAbstract)scriptSource).isDeplacable())
                {
                    EmplacementUtils.putCardFromServer((IConteneurCarte)cible, (CarteConstructionMetierAbstract)scriptSource);
                }
            }
            else
            {
                aucuneActionEffectuer();
            }
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_DEBUT_TOUR)
        {
            Joueur joueur = ConvertUtils.convertNetIdToScript <Joueur> (netIdJoueurSourceAction, false);
            if (null != joueur)
            {
                TourJeuSystem.getTourSystem().debutTour(joueur);
            }
            else
            {
                aucuneActionEffectuer();
            }
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_FIN_TOUR)
        {
            Joueur joueur = ConvertUtils.convertNetIdToScript <Joueur> (netIdJoueurSourceAction, false);
            if (null != joueur)
            {
                TourJeuSystem.getTourSystem().finTour(joueur);
            }
            else
            {
                aucuneActionEffectuer();
            }
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_ATTAQUE && scriptSource is IAttaquer)
        {
            ISelectionnable cible = SelectionnableUtils.getSelectiobleById(idSelectionCible);

            if (null != cible && cible is CarteConstructionMetierAbstract)
            {
                ((IAttaquer)scriptSource).attaqueCarte((CarteConstructionMetierAbstract)cible, netIdEventTask);
            }
            else if (null != cible && cible is CartePlaneteMetier)
            {
                ((IAttaquer)scriptSource).attaquePlanete((CartePlaneteMetier)cible, netIdEventTask);
            }
            else
            {
                aucuneActionEffectuer();
            }
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_DEFEND && scriptSource is CarteMetierAbstract)
        {
            ISelectionnable cible = SelectionnableUtils.getSelectiobleById(idSelectionCible);

            if (null != cible && cible is CarteVaisseauMetier && scriptSource is IDefendre)
            {
                ((IDefendre)scriptSource).defenseSimultanee((CarteVaisseauMetier)cible, netIdEventTask);
            }
            else if (scriptSource is CartePlaneteMetier)
            {
                List <CarteConstructionMetierAbstract> listDefenseur = CarteUtils.getListCarteCapableDefendrePlanete(((CartePlaneteMetier)scriptSource).JoueurProprietaire);

                if (null != listDefenseur && listDefenseur.Count > 0)
                {
                    SelectionCiblesExecutionCapacite selectionCible = new SelectionCiblesExecutionCapacite(1, (CartePlaneteMetier)scriptSource, idActionEvent);

                    foreach (CarteConstructionMetierAbstract defenseur in listDefenseur)
                    {
                        selectionCible.ListIdCiblesProbables.Add(defenseur.IdISelectionnable);
                    }

                    ActionEventManager.EventActionManager.createTaskChooseTarget(selectionCible, scriptSource.netId, ((CartePlaneteMetier)scriptSource).JoueurProprietaire.netId, cible.IdISelectionnable, idActionEvent, netIdEventTask);
                }

                ActionEventManager.EventActionManager.CreateTask(scriptSource.netId, ((CartePlaneteMetier)scriptSource).JoueurProprietaire.netId, cible.IdISelectionnable, ConstanteIdObjet.ID_CONDITION_ACTION_RECOIT_DEGAT, netIdEventTask, false);
            }
            else
            {
                aucuneActionEffectuer();
            }
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_UTILISE)
        {
            //TODO
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_DESTRUCTION_CARTE && scriptSource is IVulnerable)
        {
            ((IVulnerable)scriptSource).destruction(netIdEventTask);
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_FIN_ATTAQUE)
        {
            ActionEventManager.EventActionManager.CreateTask(NetworkInstanceId.Invalid, netIdJoueurSourceAction, -1, ConstanteIdObjet.ID_CONDITION_ACTION_FIN_TOUR, NetworkInstanceId.Invalid, false);
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_GAIN_XP)
        {
            //TODO
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_INVOCATION)
        {
            //TODO
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_RECOIT_DEGAT && scriptSource is IVulnerable)
        {
            ISelectionnable cible = SelectionnableUtils.getSelectiobleById(idSelectionCible);

            if (null != cible && cible is CarteVaisseauMetier)
            {
                ((IVulnerable)scriptSource).recevoirDegat(((CarteVaisseauMetier)cible).getPointDegat(), (CarteVaisseauMetier)cible, netIdEventTask);
            }
            else if (null != cible && cible is CarteDefenseMetier)
            {
                ((IVulnerable)scriptSource).recevoirDegat(((CarteDefenseMetier)cible).getPointDegat(), (CarteDefenseMetier)cible, netIdEventTask);
            }
            else
            {
                aucuneActionEffectuer();
            }
        }
        else if (idActionEvent == ConstanteIdObjet.ID_CONDITION_ACTION_EVOLUTION_CARTE)
        {
            //TODO
        }
        else
        {
            aucuneActionEffectuer();
        }
    }