public void createTaskChooseTarget(SelectionCiblesExecutionCapacite selectionCibles, NetworkInstanceId netIdSourceAction, NetworkInstanceId netIdJoueurSourceAction, int idSelectionCible, int typeAction, NetworkInstanceId netIdParentTask) { if (isServer) { GameObject eventTaskChooseTargetGO = Instantiate <GameObject> (ConstanteInGame.eventTaskChooseTargetPrefab); GameObject eventParnetTaskGO; if (netIdParentTask == NetworkInstanceId.Invalid) { eventParnetTaskGO = GameObject.Find(ConstanteInGame.strSystemActionEvent); } else { eventParnetTaskGO = NetworkServer.FindLocalObject(netIdParentTask); } eventTaskChooseTargetGO.transform.SetParent(eventParnetTaskGO.transform); EventTaskChoixCible eventTask = eventTaskChooseTargetGO.GetComponent <EventTaskChoixCible> (); eventTask.initVariable(netIdSourceAction, netIdJoueurSourceAction, idSelectionCible, typeAction, false); NetworkServer.Spawn(eventTaskChooseTargetGO); eventTask.SelectionCibles = selectionCibles; } else { print("Create TaskChooseTarget call on client"); } }
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 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 } }
private static SelectionCiblesExecutionCapacite findCiblesHorsCarte(CapaciteDTO capacite, CarteMetierAbstract carteSourceCapacite, CarteMetierAbstract carteSourceAction, NetworkInstanceId netIdJoueurAction, NetworkInstanceId netIdJoueurCible, int actionAppelante) { SelectionCiblesExecutionCapacite selectionCible; if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_PRODUCTION_RESSOURCE || capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_PRODUCTION_RESSOURCE || (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_VOL_RESSOURCE && null != carteSourceCapacite && null != carteSourceCapacite.JoueurProprietaire) || capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_TYPE_RESSOURCE) { selectionCible = new SelectionCiblesExecutionCapacite(capacite, carteSourceCapacite, actionAppelante); List <RessourceMetier> ressourcesCible = getRessourceMetierCible(capacite.ConditionsEmplacement, netIdJoueurAction, netIdJoueurCible, carteSourceCapacite); selectionCible.initModeRessourceCapa(ressourcesCible); if (capacite.NbCible == 1 && !capacite.ChoixCible && (actionAppelante == ConstanteIdObjet.ID_CONDITION_ACTION_DESTRUCTION_CARTE || actionAppelante == ConstanteIdObjet.ID_CONDITION_ACTION_INVOCATION) && isCardCibleCapacity(carteSourceAction, capacite.ConditionsCible, netIdJoueurAction)) { selectionCible.ListIdCiblesProbables.Add(carteSourceAction.IdISelectionnable); //TODO prise en compte appel unique } else { HashSet <ISelectionnable> provenanceRessource = getRessourceProvenanceCible(capacite, netIdJoueurAction, netIdJoueurCible, carteSourceCapacite); foreach (ISelectionnable cibleProbable in provenanceRessource) { selectionCible.ListIdCiblesProbables.Add(cibleProbable.IdISelectionnable); } } } else if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_NB_CARTE_PIOCHE) { selectionCible = new SelectionCiblesExecutionCapacite(capacite, carteSourceCapacite, actionAppelante); List <DeckMetierAbstract> decksCible = getDecksCibles(capacite, netIdJoueurAction, netIdJoueurCible, carteSourceCapacite); foreach (DeckMetierAbstract cibleProbable in decksCible) { selectionCible.ListIdCiblesProbables.Add(cibleProbable.IdISelectionnable); } } else if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_PERTE_TOUR_JEU || capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_DISSIMULER_PLATEAU) { HashSet <Joueur> joueursCible = new HashSet <Joueur> (); selectionCible = new SelectionCiblesExecutionCapacite(capacite, carteSourceCapacite, actionAppelante); foreach (string conditionCible in capacite.ConditionsCible) { joueursCible.UnionWith(getJoueursCible(conditionCible, netIdJoueurAction, netIdJoueurCible, carteSourceCapacite)); } foreach (Joueur joueurCible in joueursCible) { if (!(capacite.AppelUnique && joueurCible.CartePlaneteJoueur.containCapacityWithId(capacite.Id))) { selectionCible.ListIdCiblesProbables.Add(joueurCible.CartePlaneteJoueur.IdISelectionnable); } } } else if (capacite.Capacite == ConstanteIdObjet.ID_CAPACITE_MODIF_NB_PLACE_PLATEAU) { //TODO a modifier quelle est la cible (emplacement, plateau, ?) selectionCible = new SelectionCiblesExecutionCapacite(capacite, carteSourceCapacite, actionAppelante); } else { //TODO a modifier selectionCible = new SelectionCiblesExecutionCapacite(capacite, carteSourceCapacite, actionAppelante); } return(selectionCible); }
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(); } }