Example #1
0
	public bool yearlyUpdate(List<personSim> chars, causeOfDeath[] causes, int currentYear)
	{
		if(currentYear <= lastYearRun)
		{
			return false;
		}

		lastYearRun = currentYear;

		if(charManager == null)
		{
			charManager = GameObject.FindGameObjectWithTag("trackerManager").GetComponent<charTrackerManager>();
		}

		int age = getAge(currentYear);
		if(isAlive){

			if(partner != null && partner.isAlive)
			{
				partner.diedThisYear (causes, currentYear);
			}

			//make sure parents get updated!
			if(guard1 != null && guard1.isAlive)
			{
				guard1.yearlyUpdate(chars, causes, currentYear);
			}
			if(guard2 != null && guard2.isAlive)
			{
				guard2.yearlyUpdate(chars, causes, currentYear);
			}

			if(partner != null && partner.isAlive && age >= 20 && age <= 53  && children.Count < 2 && charManager.getNumChars() < 8)
			{
				//chance of gaining child
				if((UnityEngine.Random.value >= 0.95f) || (charManager.getNumChars() < 3 && (UnityEngine.Random.value >= 0.85f)))
				{
					personSim child = new personSim(currentYear, 0, this, partner);
					chars.Add(child);
					children.Add(child);
					partner.children.Add(child);

					if(partner.isMale != isMale)
						evManager.addEvent(getName() + " and " + partner.getName() + " gave birth to " + child.getName() + " in " + currentYear.ToString());
					else
						evManager.addEvent(getName() + " and " + partner.getName() + " adopted " + child.getName() + " in " + currentYear.ToString());

					GameObject.FindGameObjectWithTag("trackerManager").GetComponent<charTrackerManager>().addTracker(child);
				}
			}

			//check if should marry
			if(partner != null && partner.isAlive && isMarried == false && UnityEngine.Random.value >= 0.9f)
			{
				partner.isMarried = true;
				isMarried = true;
				marriedSince = currentYear;
				evManager.addEvent(getName() + " married " + partner.getName() + " in " + currentYear + "!");
				if(partner.isMale)
				{	
					string message = getName() + " is now ";
					surname = partner.surname;
					Debug.Log(message + getName());

					foreach(personSim child in children)
					{
						child.surname = surname;
					}
				}
				else
				{
					partner.surname = surname;
				}
			}

			//check if find a partner
			else if(partner == null && age >= 18 && UnityEngine.Random.value >= 0.88f)
			{
				//create partner with adjusted gender odds
				if(isMale)partner = new personSim( yearBorn + UnityEngine.Random.Range(-5, 5), -0.3f);
				else partner = new personSim(currentYear  + UnityEngine.Random.Range(-5, 5), 0.3f);
				evManager.addEvent(getName() + " started going out with " + partner.getName() + " in " + currentYear);
				coupledSince = currentYear;
			}

			updateThoughts(currentYear);

			return diedThisYear (causes, currentYear);
		}

		return false;
	}