/// <summary> /// Si le numéro d'enclos est 0 ou 1 : demande le type de l'animal que l'enclos contiendra/ajoute un animal dans l'enclos /// 2 ou 3 : ajoute un animal dans l'enclos. /// </summary> /// <param name="numEnclos">Le numéro de l'enclos où l'animal doit être ajouté</param> /// <param name="tuile">La tuile sur laquelle l'animal apparaîtra</param> private void AjouterAnimalDansEnclos(int numEnclos, TuileZoo tuile) { Enclos enclos = ListeEnclos[numEnclos]; switch (numEnclos) { case 0: goto case 1; case 1: if (enclos.Espece == Animal.TypeAnimal.Inexistant) { ChoisirEtAcheterAnimal(tuile, enclos); } else { AcheterAnimal(enclos, enclos.PrixEspece, tuile, enclos.Espece); } break; case 2: AcheterAnimal(enclos, Animal.PRIX_LION, tuile, Animal.TypeAnimal.Lion); break; case 3: AcheterAnimal(enclos, Animal.PRIX_GRIZZLY, tuile, Animal.TypeAnimal.Grizzly); break; } }
/// <summary> /// Si la tuile cliquée est à côté du héros : /// nourrit les animaux, ou ajoute un animal dans un enclos, ou ramasse les déchets, ou ajoute un concierge /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CliqueGauche(object sender, MouseEventArgs e) { TuileZoo tuile = Terrain[e.X / 32, e.Y / 32]; if (tuile.EstACoteDuHeros()) { if (tuile.ContientAnimal()) { NourrirAnimal(tuile); } else if (tuile.EstDansQuelEnclos().HasValue&& tuile.Tuile != TuileZoo.TypeTuile.Interdit) { AjouterAnimalDansEnclos(tuile.EstDansQuelEnclos().Value, tuile); } else if (tuile.ContientDechet()) { HerosRamasseDechet(tuile); } else if (!tuile.ContientEntite() && tuile.Tuile == TuileZoo.TypeTuile.Allee) { new Concierge(tuile); } } }
/// <summary> /// Affiche un message contenant les informations de l'entité cliquée, si la case contient une entité. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CliqueDroit(object sender, MouseEventArgs e) { FrmInfos infos = new FrmInfos(); TuileZoo tuile = Terrain[e.X / 32, e.Y / 32]; foreach (Entite entite in ListeEntites.Where(entite => entite.Position == tuile)) { if (entite is Animal) { Animal a = entite as Animal; MontrerInformations(infos, a.Type.ToString(), a.Image, a.Sexe.ToString(), a.Age.ToString(), a.Enceinte ? "Enceinte" : "Pas enceinte", a.DerniereFoisNourri.AddMinutes(a.MinutesPourNourrir) > DateTime.Now ? "A mangé récemment" : "A faim depuis " + a.DerniereFoisNourri.ToShortTimeString()); } else if (entite is Visiteur) { Visiteur v = entite as Visiteur; MontrerInformations(infos, v.Nom, v.Image, v.SexeVisiteur.ToString(), (DateTime.Now - v.QuandEntreZoo).ToString()); } else if (entite is Concierge) { Concierge c = entite as Concierge; MontrerInformations(infos, c.GetType().ToString(), c.Image); } break; } }
/// <summary> /// Methode pour ajouter (acheter) un animal dans un enclos /// </summary> /// <param name="enclos"></param> /// <param name="prixAnimal"></param> /// <param name="tuile"></param> /// <param name="type"></param> private void AcheterAnimal(Enclos enclos, double prixAnimal, TuileZoo tuile, Animal.TypeAnimal type) { if (!tuile.ContientAnimal() && Heros.AAssezDArgent(prixAnimal)) { enclos.Espece = type; enclos.PrixEspece = prixAnimal; enclos.AnimauxPresents.Add(new Animal(tuile, type)); } }
/// <summary> /// Le clique gauche sur une tuile adjacente au Héros enlève les déchets /// </summary> /// <param name="tuile">La tuile cliquée</param> private void HerosRamasseDechet(TuileZoo tuile) { Dechet dechetEntite = null; foreach (Entite entite in ListeEntites.OfType <Dechet>().Where(e => e.Position == tuile)) { dechetEntite = entite as Dechet; } ListeEntites.Remove(dechetEntite); }
/// <summary> /// Nourrit un animal et il émet le son approprié. Si le temps pour nourrir l'animal est écoulé, ça coûtera 2$ au lieu de 1$. /// </summary> /// <param name="tuile"></param> private void NourrirAnimal(TuileZoo tuile) { if (Heros.AAssezDArgent(1)) { foreach (Entite e in ListeEntites.OfType <Animal>().Where(e => e.Position == tuile)) { Animal a = e as Animal; Heros.Argent -= a.DerniereFoisNourri.AddMinutes(a.MinutesPourNourrir) > DateTime.Now ? 1 : 2; a.DerniereFoisNourri = DateTime.Now; a.EmettreSon(); } } }
/// <summary> /// Methode pour la selection d'animal (licorne ou mouton) /// </summary> /// <param name="tuile"></param> /// <param name="enclos"></param> private void ChoisirEtAcheterAnimal(TuileZoo tuile, Enclos enclos) { ChoixAnimal choix = new ChoixAnimal(); choix.ShowDialog(); switch (choix.Selection) { case Animal.TypeAnimal.Licorne: AcheterAnimal(enclos, Animal.PRIX_LICORNE, tuile, Animal.TypeAnimal.Licorne); break; case Animal.TypeAnimal.Mouton: AcheterAnimal(enclos, Animal.PRIX_MOUTON, tuile, Animal.TypeAnimal.Mouton); break; } }
/// <summary> /// Pour chaque tuile, la methode la dessine et l'ajoute dans le tableau de tuile Terrain /// </summary> /// <param name="g"></param> /// <param name="image"></param> /// <param name="x"></param> /// <param name="y"></param> /// <param name="typeTuile"></param> private void DessinerUneImageEtInitialiserTerrain(Graphics g, Bitmap image, int x, int y, TuileZoo.TypeTuile typeTuile) { if (image == TileSetGenerator.GetTile(TileSetGenerator.TB_CLOTURE_ENCLOS)) { g.DrawImage(image, x * 32 + 8, y * 32); } else if (image == TileSetGenerator.GetTile(TileSetGenerator.BR_CLOTURE_ENCLOS)) { g.DrawImage(image, x * 32 - 8, y * 32); } else { g.DrawImage(image, x * 32, y * 32); } Terrain[x, y] = new TuileZoo(typeTuile, x, y); }