public void canon() { SoundManagerEvent.emit(SoundManagerType.INTERFACE, null); if (Artefact_Script.instance.X >= coutCanon) //On vérifie si le joueur a suffisamment de X pour créer une tour { Artefact_Script.instance.DepenseX(coutCanon); //On enlève le coût de la Tour au total de X qu'a le joueur createTourCanon(1); //On lance la fonction de création de tour Canon de niveau 1 //Destroy(this.gameObject); //On détruit l'interface du menu car la tour est en cours de création } }
public void sniper() //Se produit lorsqu'on clique sur le bouton de pose de tour Sniper { SoundManagerEvent.emit(SoundManagerType.INTERFACE, null); if (Artefact_Script.instance.X >= coutSniper) { Artefact_Script.instance.DepenseX(coutSniper); //On enlève le coût de la Tour au total de X qu'a le joueur createTourSniper(1); //On lance la fonction de création de tour Sniper de niveau 1 //Destroy(this.gameObject); //On détruit l'interface du menu car la tour est en cours de création } }
public void rafale() //Se produit lorsqu'on clique sur le bouton de pose de tour Rafale { SoundManagerEvent.emit(SoundManagerType.INTERFACE, null); if (Artefact_Script.instance.X >= coutRafale) //On vérifie si le joueur a suffisamment de X pour créer une tour { Artefact_Script.instance.DepenseX(coutRafale); //On enlève le coût de la Tour au total de X qu'a le joueur Debug.Log("shake your body"); createTourRafale(1); //On lance la fonction de création de tour Rafale de niveau 1 //Destroy(this.gameObject); //On détruit l'interface du menu car la tour est en cours de création } }
void NextWave() { SoundManagerEvent.emit(SoundManagerType.NEWWAVE, null); GameObject spawner = null; spawner = null; foreach (GameObject go in vague) { spawner = (GameObject)Instantiate(go, transform.position, Quaternion.identity); } //On attribue le navmesh à l'ennemi créé NavMeshAgent nav_ennemy = spawner.GetComponent <NavMeshAgent>(); nav_ennemy.destination = destination.position; spawner.GetComponent <Ennemy>().start = this.transform.position; }
public void checkFusionSup(Tour nouvelleTour, string typeDeTour, int level) //On vérifie s'il est possible de fusionner une tour nouvelleTour avec des tours de son typeDeTour et de son Level { List <Tour> tourTrouves = new List <Tour>(); //Comme on va effectuer ce test pour chaque tour détectée pendant le test, on stocke chaque tour valide à la fusion dans une liste pour savoir combien de tours on doit supprimer à la fin du test tourTrouves.Add(nouvelleTour); //On commence par ajouter la tour qui vient d'être posée car c'est à partir de sa position que l'on teste si d'autres tours similaires sont présentes checkFusion(ref tourTrouves, place_script.xRow, place_script.yCol, typeDeTour, level); //On lance la fonction qui teste si des tours similaires sont présentes autour de la tour qui vient d'être posée if (tourTrouves.Count >= 3) //Si on a trouvé au moins 3 tours similaires alors on peut effectuer une fusion { Debug.Log("tour Fusionnée !"); foreach (Tour tour in tourTrouves) //Pour chaque tour que l'on a trouvé, on effectue une action { if (tour.place_tour != null) { tour.place_tour.GetComponent <Place>().libre = true; //La place sur laquelle était posée la tour redevient vide SoundManagerEvent.emit(SoundManagerType.FUSION, null); } DestroyImmediate(tour.gameObject); //On détruit immédiatement (pour ne pas gêner la détection des autres tours) chaque tour trouvée lors du test de fusion } level++; //On incrémente le niveau de la tour qui a été posée (puis détruite) pour en créer une autre de niveau supérieur switch (typeDeTour) //On crée une nouvelle tour d'un type correspondant aux tours fusionnées qui ont été détruites { case "sniper": //Si la tour était du type Sniper, on lance la fonction de création de tour avec cette fois-ci un niveau supplémentaire createTourSniper(level); break; case "rafale": createTourRafale(level); break; case "canon": createTourCanon(level); break; } } }
public void createTourL() //Cette fonction permet de créer une tour L d'un niveau dépendant de s'il y a eu une fusion avant son exécution ou non. { SoundManagerEvent.emit(SoundManagerType.FUSION, null); Debug.Log("fusion IMBA"); cible_script = (MainCanvas)transform.parent.gameObject.GetComponent(typeof(MainCanvas)); GameObject nouvelleTour_L = Instantiate(tour_L) as GameObject; //On crée la tour L contenue dans le tableau à la case level-1 (pour correspondre au tableau qui commence à 0) nouvelleTour_L.transform.position = new Vector3(cible_script.Place_click.transform.position.x, 2.5f, cible_script.Place_click.transform.position.z); //On place la tour aux coordonnées de la tuile cliquée Tour nouvelleTour = nouvelleTour_L.GetComponent <Tour>(); //On crée un gameobject dans lequel on met la tour que l'on a crée juste avant nouvelleTour.panelAmelio = UIamelio; nouvelleTour.type = "L"; //On attribue le type Sniper à la tour que l'on vient de créer place_script.creation_script.plateauTour[place_script.xRow, place_script.yCol] = nouvelleTour; //On accède au script de la tuile PUIS au script de la création du plateau (où sont les variables de positions des tuiles et des tours) PUIS à la position des tours pour attribuer les coordonnées de la nouvelle tour /*if (!(level >= 3)) //Si le niveau de la tour créée n'est pas supérieur ou égal au niveau maximum alors on vérifie si une fusion est possible * { * checkFusionSup(nouvelleTour, "L", level); //On vérifie si une fusion est possible à partir de la nouvelle tour avec des tours de son type et de son niveau * }*/ this.gameObject.SetActive(false); //Désactive le panel après que tous les tests de fusion aient été effectués }
public void checkFusionSupL(Tour nouvelleTour, int level) //On vérifie s'il est possible de fusionner une tour nouvelleTour avec des tours de son typeDeTour et de son Level { List <Tour> tourTrouves = new List <Tour>(); //Comme on va effectuer ce test pour chaque tour détectée pendant le test, on stocke chaque tour valide à la fusion dans une liste pour savoir combien de tours on doit supprimer à la fin du test tourTrouves.Add(nouvelleTour); //On commence par ajouter la tour qui vient d'être posée car c'est à partir de sa position que l'on teste si d'autres tours similaires sont présentes checkFusionL(ref tourTrouves, place_script.xRow, place_script.yCol, level); //On lance la fonction qui teste si des tours similaires sont présentes autour de la tour qui vient d'être posée if (tourTrouves.Count >= 3) //Si on a trouvé au moins 3 tours similaires alors on peut effectuer une fusion { Debug.Log("tour L CREEE !"); foreach (Tour tour in tourTrouves) //Pour chaque tour que l'on a trouvé, on effectue une action { if (tour.place_tour != null) { tour.place_tour.GetComponent <Place>().libre = true; //La place sur laquelle était posée la tour redevient vide SoundManagerEvent.emit(SoundManagerType.FUSION, null); } DestroyImmediate(tour.gameObject); //On détruit immédiatement (pour ne pas gêner la détection des autres tours) chaque tour trouvée lors du test de fusion } createTourL(); } }
IEnumerator attack() { while (file.Count > 0) //Tant que la cible est toujours dans la liste { if (file[0] != null) { prefab_tir_script = (Tir)prefab_tir.GetComponent(typeof(Tir)); //Le projectile vise l'ennemie numero 1 (en position zéro dans la liste) prefab_tir_script.cible = file[0].gameObject; //Le projectile de la TOUR CANON vise l'ennemie numero 1 (en position zéro dans la liste) S'IL n'as pas déjà une destination if (prefab_tir_script.GetDestination == false) { prefab_tir_script.cibleTirCanon = file[0].transform.position; } //La tour tir un nouveau projectile //Vector3 pos = new Vector3(transform.position.x + Random.Range(-1, 1), transform.position.y + Random.Range(1, 3), transform.position.z); //Instantiate(prefab_tir, pos, transform.rotation); if (IsPoison) { prefab_tir_script.IsPoison = true; } if (IsGel) { prefab_tir_script.IsGel = true; } if (IsRadiation) { prefab_tir_script.IsRadiation = true; } Instantiate(prefab_tir, transform.position, transform.rotation); switch (type) { case "rafale": SoundManagerEvent.emit(SoundManagerType.RAFALE, this.gameObject); break; case "sniper": SoundManagerEvent.emit(SoundManagerType.SNIPER, this.gameObject); break; case "canon": SoundManagerEvent.emit(SoundManagerType.CANON, this.gameObject); break; } tir_instance = Instantiate(prefab_tir, transform.position, transform.rotation) as GameObject; if (IsPoison) { tir_instance.GetComponent <Tir>().IsPoison = true; } if (IsGel) { tir_instance.GetComponent <Tir>().IsGel = true; } if (IsRadiation) { tir_instance.GetComponent <Tir>().IsRadiation = true; } //Maintenant on attend le couldown avant de relancer un projectile yield return(new WaitForSeconds(cooldown)); } else { break; } } if (file.Count > 0) //Si il y a des éléments dans le tableau { //Normalement à ce stade la cible est morte, juste pour vérifier on fait ce if if (file[0] == null) //Si il y n'y a pas d'élément en 1ère position on refresh la liste pour en trouver un { refresh(); } } else if (file.Count == 0) //Si il n'y a plus de cible après celle qui vient de disparaître { //Alors on indique à la tour qu'elle est à nouveau prête à tirer mode_attaque = false; //On efface la dernière cible, elle est loin ou détruite prefab_tir_script.cible = null; } yield return(null); }
public GameObject tour_touch; //On accède à la Tour touchée public void quitter() { SoundManagerEvent.emit(SoundManagerType.INTERFACE, null); place_touch.GetComponent <Place>().libre = true; this.gameObject.SetActive(false); }
public void launchNextWave() { SoundManagerEvent.emit(SoundManagerType.INTERFACE, null); Artefact_Script.instance.GainY((int)timeBeforeNextWave); timeBeforeNextWave = 0; }