private IEnumerator Start() { int nbrJoueurs = 1, nbrIas = 1, i = 0; joueurs = new Dictionary <int, Joueur>(nbrJoueurs); Transform joueursGameObject = GameObject.Find("Joueurs").transform; // Création des joueurs. for (i = 0; i < nbrJoueurs; i++) { Instantiate(playerPrefabs[0], joueursGameObject); Joueur joueur = joueursGameObject.GetChild(joueursGameObject.childCount - 1).GetComponent <Joueur>(); InitialisePlayer(joueur, "Joueur" + (i + 1), true, (Utils.couleurs)i); joueurs.Add(i, joueur); } for (i = 0; i < nbrIas; i++) { Instantiate(playerPrefabs[1], joueursGameObject); IAEasy iae = joueursGameObject.GetChild(joueursGameObject.childCount - 1).GetComponent <IAEasy>(); InitialisePlayer(iae, "IA" + (i + 1), false, (Utils.couleurs)nbrJoueurs + i); joueurs.Add(nbrJoueurs + i, iae); } territoires = coloredTerritories.Territoires; routes = coloredTerritories.Routes; List <Territoire> territoireAAttribuer = new List <Territoire>(territoires.Count); System.Random rand = new System.Random(); for (i = 0; i < territoires.Count; i++) { territoireAAttribuer.Add(territoires[i]); } i = 0; BoutiqueManager boutique = GameObject.Find("Boutique button").GetComponent <BoutiqueManager>(); // Ajout de territoires aux joueurs de façon arbitraire. while (territoireAAttribuer.Count > 0) { // Sélection aléatoire du territoire à attribuer. int index = rand.Next(0, territoireAAttribuer.Count); while (joueurs[i % joueurs.Count].Ready == false) { yield return(null); } joueurs[i % joueurs.Count].Territoires.Add(territoireAAttribuer[index].Num, territoireAAttribuer[index]); // Ajout d'une infanterie pour marquer quel territoire appartient à qui. Infanterie newUnit = boutique.CreateUnit( (int)Utils.unitCode.Infanterie, GameObject.Find("Unites").transform, territoireAAttribuer[index].position, joueurs[i % joueurs.Count] ).GetComponent <Infanterie>(); newUnit.territoire = territoireAAttribuer[index]; territoireAAttribuer[index].unites.Add(newUnit); territoireAAttribuer[index].joueur = joueurs[i % joueurs.Count]; territoireAAttribuer.RemoveAt(index); i++; // Au cas où ce serait un peu long. yield return(null); } // Application des bonnes couleurs pour chaque unité. for (i = 0; i < joueurs.Count; i++) { foreach (Unite unit in joueurs[i].Unites) { unit.lightMaterial = joueurs[i].Material; unit.darkMaterial = joueurs[i].DarkMaterial; unit.ApplyMaterial(unit.darkMaterial); } } // Initialisation des fonds du premier joueur. joueurs[0].AjouterCredits(joueurs[0].EstimatedEarnings()); }
/// <summary> /// Active le changement de phase/tour /// </summary> public void PasserButton() { if (!GetComponent <GUIController>().dialogOpened) // S'il n'y a pas de fenêtre de dialogue d'ouverte { if (phaseActive == phases.Deploiement) { List <Unite> .Enumerator unitsEnum = joueurs[joueurActif].Unites.GetEnumerator(); bool canPass = true; while (canPass && unitsEnum.MoveNext()) { if (unitsEnum.Current is Terrestre) { Terrestre unit = unitsEnum.Current as Terrestre; if (unit.territoire == null) { canPass = false; } } else if (unitsEnum.Current is Aerienne) { Aerienne unit = unitsEnum.Current as Aerienne; if (unit.territoire == null) { canPass = false; } } else { Maritime unit = unitsEnum.Current as Maritime; if (unit.route == null) { canPass = false; } } } if (canPass) { phaseActive = phases.Attaque; if (!joueurs[joueurActif].Humain) { IAEasy joueurIA = joueurs[joueurActif] as IAEasy; joueurIA.IAPlay(); } } else { InvalidAction("Vous ne pouvez passer votre tour sans déployer toutes les unités nouvellement achetées."); } } else if (phaseActive == phases.Attaque) { phaseActive = phases.Mouvement; if (!joueurs[joueurActif].Humain) { IAEasy joueurIA = joueurs[joueurActif] as IAEasy; joueurIA.IAPlay(); } else { button.transform.GetChild(0).GetComponent <Text>().text = "Fin du tour"; } } else if (phaseActive == phases.Mouvement) { ChangeActivePlayer(); } } }