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); * }*/ } }
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 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); } }
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 } }
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); }
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); } } }
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); }
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); }
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(); } }