/*****************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(); } }
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(); } }
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); }
/** * 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); }
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(); } }
public void CmdProgressStep(int actionPlayer) { TourJeuSystem.getTourSystem().progressStepServer(actionPlayer); }