public Concierge(TuileZoo position) { Position = position; Image = TileSetGenerator.GetTile(TileSetGenerator.C_DOWN_IDLE); Zoo.ListeEntites.Add(this); TileSetSprite = 75; }
/// <summary> /// Ajout d'une case à la liste si l'animal peut s'y déplacer /// </summary> /// <param name="possibilite"></param> /// <param name="casesDisponibles"></param> private void AjouterCaseAListe(TuileZoo possibilite, List <TuileZoo> casesDisponibles) { if (PeutSeDeplacer(possibilite)) { casesDisponibles.Add(possibilite); } }
/// <summary> /// Ajoute une TuileZoo à la liste de cases où l'humain peut se déplacer. /// </summary> /// <param name="possibilite">Une TuileZoo autour de l'humain</param> /// <param name="casesDisponibles">La liste de TuileZoos autour de l'humain</param> /// <param name="d">La direction de la possibilité par rapport à sa case actuelle</param> /// <returns></returns> protected List <KeyValuePair <TuileZoo, Direction> > AjouterCaseAListe(TuileZoo possibilite, List <KeyValuePair <TuileZoo, Direction> > casesDisponibles, Direction d) { if (PeutSeDeplacer(possibilite)) { casesDisponibles.Add(new KeyValuePair <TuileZoo, Direction>(possibilite, d)); } return(casesDisponibles); }
/// <summary> /// Création de l'animal, selon le type en paramètre. Un sexe est assigné au hasard /// </summary> /// <param name="position">La position où l'animal débutera</param> /// <param name="type">Le type de l'animal (enum, soit Licorne, Lion, Mouton ou Grizzly</param> /// <param name="enclos"></param> /// <param name="age">Enum, soit Bebe ou Adulte</param> public Animal(TuileZoo position, TypeAnimal type, Enclos enclos = null, AgeAnimal age = AgeAnimal.Adulte) { Type = type; switch (type) { case TypeAnimal.Grizzly: JoursGestation = 220; JoursJusquaAdulte = 220; JoursAvantNaissance = 220; MinutesPourNourrir = 2; Prix = PRIX_GRIZZLY; Zoo.Heros.Argent -= PRIX_GRIZZLY; Image = TileSetGenerator.GetTile(TileSetGenerator.GRIZZLY); Enclos = Zoo.ListeEnclos[3]; break; case TypeAnimal.Lion: JoursGestation = 110; JoursJusquaAdulte = 110; JoursAvantNaissance = 110; MinutesPourNourrir = 2; Prix = PRIX_LION; Zoo.Heros.Argent -= PRIX_LION; Image = TileSetGenerator.GetTile(TileSetGenerator.LION); Enclos = Zoo.ListeEnclos[2]; break; case TypeAnimal.Mouton: JoursGestation = 150; JoursJusquaAdulte = 150; JoursAvantNaissance = 150; MinutesPourNourrir = 2; Prix = PRIX_MOUTON; Zoo.Heros.Argent -= PRIX_MOUTON; Image = TileSetGenerator.GetTile(TileSetGenerator.MOUTON); Enclos = enclos; break; case TypeAnimal.Licorne: JoursGestation = 360; JoursJusquaAdulte = 360; JoursAvantNaissance = 360; MinutesPourNourrir = 3; Prix = PRIX_LICORNE; Zoo.Heros.Argent -= PRIX_LICORNE; Image = TileSetGenerator.GetTile(TileSetGenerator.LICORNE); Enclos = enclos; break; } DerniereFoisNourri = DateTime.Now; AFaim = false; Age = age; Enceinte = false; Sexe = (SexeEntite)_r.Next(0, 2); Position = position; Zoo.ListeEntites.Add(this); Zoo.InstanceForm.AjusterLblAnimaux(); }
/// <summary> /// </summary> /// <param name="possibilite">Une case adjacente à l'animal</param> /// <returns>Si la case est libre ou non</returns> protected override bool PeutSeDeplacer(TuileZoo possibilite) { if (Zoo.ListeEntites.Where(e => (e is Humain || e is Dechet) && e.Position == possibilite).Count() > 0) { return(false); } return(possibilite.Tuile == TuileZoo.TypeTuile.Allee); }
/// <summary> /// À partir de la liste de TuileZoos disponible, un random détermine la nouvelle position de l'humain et change son image en conséquent. /// </summary> internal void DeplacerEtModifierImage() { List <KeyValuePair <TuileZoo, Direction> > casesDisponibles = DeterminerCasesDisponibles(); if (casesDisponibles.Count != 0) { var caseDirection = casesDisponibles[_r.Next(0, casesDisponibles.Count)]; TuileZoo prochaineTuile = caseDirection.Key; Position = prochaineTuile; ModifierImage(caseDirection.Value); } }
/// <summary> /// Crée une liste de cases où le concierge peut aller. Sa prochaine case est déterminée selon: /// Si elle contient un déchet; /// Sinon, un random est effectué sur la liste et le concierge prend la nouvelle position. /// La direction sert à donner une image au concierge. /// </summary> internal new void DeplacerEtModifierImage() { List <KeyValuePair <TuileZoo, Direction> > casesDisponibles = DeterminerCasesDisponibles(); if (casesDisponibles.Count != 0) { KeyValuePair <TuileZoo, Direction> caseDirection = DeterminerProchaineTuileSelonDechetsProches(casesDisponibles); TuileZoo prochaineTuile = caseDirection.Key; Position = prochaineTuile; ModifierImage(caseDirection.Value); } }
/// <summary> /// Le héros peut se déplacer dans l'allée et dans les enclos. /// </summary> /// <param name="possibilite">La case où le héros veut se déplacer</param> /// <returns>S'il peut se déplacer sur la case ou non</returns> protected override bool PeutSeDeplacer(TuileZoo possibilite) { if (Zoo.ListeEntites.Where(e => e.Position == possibilite).Count() > 0) { return(false); } return(possibilite.Tuile == TuileZoo.TypeTuile.Allee || possibilite.Tuile == TuileZoo.TypeTuile.Enclos || possibilite.Tuile == TuileZoo.TypeTuile.Gazon || possibilite.Tuile == TuileZoo.TypeTuile.Glace || possibilite.Tuile == TuileZoo.TypeTuile.Sable || possibilite.Tuile == TuileZoo.TypeTuile.Terre); }
/// <summary> /// Les déchets ne se déplacent pas /// </summary> /// <param name="tuile"></param> /// <returns></returns> protected override bool PeutSeDeplacer(TuileZoo tuile) { return(false); }
public Dechet(TuileZoo position) { Position = position; Image = DeterminerImage(); Zoo.ListeEntites.Add(this); }
/// <summary> /// Les entités ne peuvent pas se déplacer sur le même type de tuile /// </summary> /// <param name="tuile">La tuile où l'entité veut se déplacer</param> /// <returns>True si l'entité peut s'y déplacer</returns> protected abstract bool PeutSeDeplacer(TuileZoo tuile);