private ProcessSimulatedMonthResponse ProcessPeople(List <Person> peopleToProcess) { var processResponse = new ProcessSimulatedMonthResponse(); var unmarriedPeople = peopleToProcess.Where(p => p.AgeType == AgeType.Adult && p.Spouse == null).ToList(); foreach (var person in peopleToProcess) { ProcessPerson(person, processResponse, unmarriedPeople); } return(processResponse); }
private void ProcessPerson(Person person, ProcessSimulatedMonthResponse processResponse, ICollection <Person> unmarriedPeople) { person.Age = IncrementPersonAgeOneMonth(person.Age); if (KillPersonOnRandomChance(person, new Odds(Random, 1, 1000))) { person.IsAlive = false; processResponse.DeadPeople.Add(person); } var newCouple = MarryPersonOnRandomChance(unmarriedPeople, person, new Odds(Random, 2, 10)); if (newCouple != null) { processResponse.NewCouples.Add(newCouple); } if (BirthOccursWhenPregnancyIsDue(person)) { processResponse.NewMothers.Push(person); } AdvancePregnancyByOneMonth(person); if (PregnancyOccursOnRandomChanceForMarriedWomen(person, new Odds(Random, 3, 100))) { person.IsPregnant = true; } }