/*****************ISelectionnable*****************/
    public override void onClick()
    {
        Joueur joueurLocal = JoueurUtils.getJoueurLocal();

        if (null != joueurLocal)
        {
            TourJeuSystem systemTour = TourJeuSystem.getTourSystem();

            //Si un joueur clique sur une carte capable d'attaquer puis sur une carte ennemie cela lance une attaque
            EventTask eventTask = EventTaskUtils.getEventTaskEnCours();
            if (systemTour.getPhase(joueurLocal.netId) == TourJeuSystem.PHASE_ATTAQUE &&
                null != joueurLocal.CarteSelectionne && joueurLocal.CarteSelectionne.JoueurProprietaire != JoueurProprietaire &&
                joueurLocal.CarteSelectionne is IAttaquer && ((IAttaquer)joueurLocal.CarteSelectionne).isCapableAttaquer() &&
                !(null != eventTask && eventTask is EventTaskChoixCible))                     //On ne peut attaquer si choix de defense en cours

            //TODO vérifier l'emplacement sol
            {
                JoueurUtils.getJoueurLocal().CmdCreateTask(joueurLocal.CarteSelectionne.netId, joueurLocal.netId, this.IdISelectionnable, ConstanteIdObjet.ID_CONDITION_ACTION_ATTAQUE, NetworkInstanceId.Invalid, false);
            }
            else
            {
                base.onClick();
            }
        }
        else
        {
            base.onClick();
        }
    }
예제 #2
0
    public override void onClick()
    {
        Joueur joueurLocal = JoueurUtils.getJoueurLocal();

        //Selection de la defense lors de la phase attaque adverse
        if (SelectionnableDefense && null != joueurLocal)
        {
            TourJeuSystem systemTour = TourJeuSystem.getTourSystem();

            if (systemTour.getPhase() == TourJeuSystem.PHASE_ATTAQUE &&
                systemTour.getPhase(joueurLocal.netId) == TourJeuSystem.EN_ATTENTE)
            {
                defenseSelectionne = true;
                defenduCeTour      = true;
            }
            else
            {
                base.onClick();
            }
        }
        else
        {
            base.onClick();
        }
    }
예제 #3
0
    private void CmdInitSystemeTour()
    {
        BoutonTour boutonTour = goPlateau.GetComponentInChildren <BoutonTour> ();

        NetworkUtils.assignObjectToPlayer(boutonTour.GetComponent <NetworkIdentity> (), GetComponent <NetworkIdentity> (), -1);

        TourJeuSystem systemTour = TourJeuSystem.getTourSystem();

        systemTour.addInSystemeTour(netId, pseudo, boutonTour.netId);
    }
예제 #4
0
    /**
     * Retourne si la carte est déplaçable par le joueur
     * */
    protected bool isMovableByPlayer(Joueur joueur)
    {
        bool movable = false;

        if (null != joueur && joueur.isLocalPlayer)
        {
            TourJeuSystem systemTour = TourJeuSystem.getTourSystem();

            if (systemTour.getPhase(joueur.netId) == TourJeuSystem.PHASE_DEPLACEMENT &&
                null != joueur.CarteSelectionne && joueur.netId == joueur.CarteSelectionne.JoueurProprietaire.netId)
            {
                movable = true;
            }
        }

        return(movable);
    }
예제 #5
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();
        }
    }
예제 #6
0
파일: BoutonTour.cs 프로젝트: jdeon/SCGame
 public void CmdProgressStep(int actionPlayer)
 {
     TourJeuSystem.getTourSystem().progressStepServer(actionPlayer);
 }