public World(IPopulation pop, IPersonFactory pf, IRandomGenerator random, IMortalityCurve mc) { _mortalityCurve = mc; _registeredGenes = new GeneBank(this); WorldSeeds.BaseGenes(_registeredGenes, this); _population = pop; _personFactory = pf; _random = random; SeedWorld(1001); }
public World(IPopulation pop, IPersonFactory pf, IMortalityCurve mortalityCurve, IRandomGenerator random) { if (pop?.Populus?.Count > 0) pop.Populus.Clear(); _random = random; _population = pop; _registeredGenes = new GeneBank(this); _personFactory = pf; _mortalityCurve = mortalityCurve; WorldSeeds.BaseGenes(_registeredGenes, this); SeedWorld(1000); _population?.UpdatePopulus(); }
/// <summary> /// Increase the age of the current person /// </summary> public bool AgePerson(IMortalityCurve curve) { _eligibleForBreeding = CheckIfBreedingEligible(); _age++; if (_hadBaby) { _hadBaby = false; } if (_pregnant) { _hadBaby = true; _pregnant = false; } return CheckSurvival(curve); }
/// <summary> /// Check if a person object is going to survive the current generation /// </summary> /// <param name="curve">The mortality curve used for that world</param> /// <returns></returns> public bool CheckSurvival(IMortalityCurve curve) { var survivalRate = curve.GetMortalityByAge(_age); return _random.BooleanGenerator(1000, survivalRate); }