public int EvaluateEnergyPlus(Food food) { switch (food.Type) { case FoodType.Valuable: return FoodDigestions[food.Item].EnergyPlus*food.N*2; case FoodType.TastyButUseLess: return FoodDigestions[food.Item].EnergyPlus*food.N/2; case FoodType.Neutral: return FoodDigestions[food.Item].EnergyPlus*food.N; case FoodType.Harmful: return FoodDigestions[food.Item].EnergyPlus*food.N/2; default: return 0; } }
public FoodReaction GiveFood(Food food) { return Animal.EatFood(food); }
public FoodReaction GetFoodReaction(Food food) { switch (food.Type) { case FoodType.Valuable: ChangeState(food, 3); return FoodReaction.Alive; case FoodType.TastyButUseLess: ChangeState(food, 4); return FoodReaction.Alive; case FoodType.Neutral: ChangeState(food, 2); return FoodReaction.Alive; case FoodType.Harmful: ChangeState(food, -2); return FoodReaction.Alive; case FoodType.Killing: return FoodReaction.Dead; default: return FoodReaction.Alive; } }
public void ChangeState(Food food, int happiness) { TimeSpan timeSpan = new TimeSpan(0, 0, Math.Abs(FoodValueEvaluator.EvaluateEnergyPlus(food) - FoodValueEvaluator.EvaluateEnergyMinus(food))); Console.Write("{0}{1} to life", food.Type == FoodType.Harmful ? '-' : '+', timeSpan.TotalSeconds); RemainingLifeTime = food.Type == FoodType.Harmful ? RemainingLifeTime.Subtract(timeSpan) : RemainingLifeTime.Add(timeSpan); Happiness += HappinessEvaluator.Evaluate(happiness); }
public FoodReaction EatFood(Food food) { Console.Write("Animal is eating... "); if (GetFoodReaction(food) == FoodReaction.Dead) { if (RemainingLifeTime.TotalSeconds/RemainingLifeTimeLimit.TotalSeconds < 0.5) { Console.WriteLine("\n"); return FoodReaction.Dead; } Console.Write("Food was refused"); } Console.WriteLine("\n\nAnimal's remaining life time: {0} sec.\n", RemainingLifeTime.TotalSeconds); return FoodReaction.Alive; }