private int CountFood(FoodKind kind) { int num = 0; foreach (var food in _Game.Cages.SelectedCage.Food) { if (food.Kind == kind) { ++num; } } return(num); }
/* // Serialization disabled for now * /// <summary> * /// Initializes a new instance of the <see cref="Jantu.Species"/> class * /// from serialized data. * /// </summary> * /// <param name='info'> * /// Info. * /// </param> * /// <param name='ctx'> * /// Context. * /// </param> * public Species(SerializationInfo info, StreamingContext ctx) * { * _name = (string)info.GetValue("Name", typeof(string)); * _movingSpeed = (double)info.GetValue("MovingSpeed", typeof(double)); * _excrementRate = (double)info.GetValue("ExcrementRate", typeof(double)); * _foodRate = (double)info.GetValue("FoodRate", typeof(double)); * _mutationProbability = (double)info.GetValue("MutationProbability", typeof(double)); * _maxHealth = (int)info.GetValue("MaxHealth", typeof(int)); * _symbol = (char)info.GetValue("Symbol", typeof(char)); * * // During serialization we stored name strings instead of references (references * // change between program invokations and thus can't be serialized). The ctx * // argument is expected to provide a pre-initialized data manager, which we can use * // to restore the references. * DataManager data = ctx.Context as DataManager; * * List<string> foodNames = (List<string>)info.GetValue("Food", typeof(List<string>)); * _food = new List<FoodKind>(foodNames.Count); * foreach (string kindName in foodNames) * _food.Add(data.FoodKinds.GetByName(kindName)); * * List<string> preyNames = (List<string>)info.GetValue("Preys", typeof(List<string>)); * _preys = new List<Species>(preyNames.Count); * foreach (string preyName in preyNames) * _preys.Add(data.Species.GetByName(preyName)); * * List<string> enemyNames = (List<string>)info.GetValue("Enemies", typeof(List<string>)); * _enemies = new List<Species>(enemyNames.Count); * foreach (string enemyName in enemyNames) * _enemies.Add(data.Species.GetByName(enemyName)); * * List<string> breedingPartnerNames = (List<string>)info.GetValue("BreedingPartners", typeof(List<string>)); * _breedingPartners = new List<Species>(breedingPartnerNames.Count); * foreach (string breedingPartnerName in breedingPartnerNames) * _breedingPartners.Add(data.Species.GetByName(breedingPartnerName)); * } * * /// <summary> * /// Serielizes the object. * /// </summary> * /// <param name='info'> * /// Info. * /// </param> * /// <param name='ctx'> * /// Context. * /// </param> * public void GetObjectData(SerializationInfo info, StreamingContext ctx) * { * info.AddValue("Name", _name); * info.AddValue("MovingSpeed", _movingSpeed); * info.AddValue("ExcrementRate", _excrementRate); * info.AddValue("FoodRate", _foodRate); * info.AddValue("MutationProbability", _mutationProbability); * info.AddValue("MaxHealth", _maxHealth); * info.AddValue("Symbol", _symbol); * * // We can't serialize references. Instead we write name strings and use these to * // restore the references from the game data managers during deserialization. * List<string> foodNames = new List<string>(_food.Count); * foreach (FoodKind kind in _food) * foodNames.Add(kind.Name); * info.AddValue("Food", foodNames); * * List<string> preyNames = new List<string>(_preys.Count); * foreach (Species prey in _preys) * preyNames.Add(prey.Name); * info.AddValue("Preys", preyNames); * * List<string> enemyNames = new List<string>(_enemies.Count); * foreach (Species enemy in _enemies) * enemyNames.Add(enemy.Name); * info.AddValue("Enemies", enemyNames); * * List<string> breedingPartnerNames = new List<string>(_breedingPartners.Count); * foreach (Species breedingPartner in _breedingPartners) * breedingPartnerNames.Add(breedingPartner.Name); * info.AddValue("BreedingPartners", breedingPartnerNames); * } */ /// <summary> /// Returns whether animals of this species eat the given type of food. /// </summary> /// <param name='food'> /// Type of food. /// </param> public bool Eats(FoodKind food) { // The comparision by object identity is intentional! return(_food.Exists(k => k == food)); }
/// <summary> /// Initializes a new instance of the <see cref="Jantu.FoodEntity"/> class. /// </summary> /// <param name='kind'> /// Kind. /// </param> public FoodEntity(FoodKind kind) { _kind = kind; }
/// <summary> /// Add the specified food kind. /// </summary> /// <param name='kind'> /// Kind. /// </param> public void Add(FoodKind kind) { _kinds.Add(kind.Name, kind); }