예제 #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;
	}
예제 #2
0
	// Use this for initialization
	void Start () {
		GameObject cam = GameObject.FindGameObjectWithTag ("MainCamera").transform.FindChild ("inGame").gameObject;

		iconTracker = GameObject.FindGameObjectWithTag ("trackerManager").GetComponent<charTrackerManager> ();

		popCounter = cam.transform.FindChild ("popTotal").GetComponent<UILabel>();
		yearLabel = cam.transform.FindChild ("curYear").GetComponent<UILabel>();
		avgAgeLabel = cam.transform.FindChild ("avgAge").GetChild(0).GetComponentInChildren<UILabel> ();

		UnityEngine.Random.seed = (int)System.DateTime.Now.Ticks;

		deathsData = CSVReader.SplitCsvGrid (deathStatistics.text);

		string[,] temp = CSVReader.SplitCsvGrid (populationData.text);
		popData = new int[temp.GetLength(1)];

		chart = new GameObject[popData.Length];

		for(int i = 0; i < popData.Length; i++)
		{
			if(temp[0,i] != null)
			{
				popData[i] = int.Parse(temp[0,i]);
			}
		}

		sims = new List<personSim> ();

		causesOfDeath = new causeOfDeath[]{
			new causeOfDeath ("an intestinal infection", deathsData, 0, 95),
			new causeOfDeath ("a bacterial disease", deathsData, 2, 100),
			new causeOfDeath ("Septicaemia", deathsData, 4),
			new causeOfDeath ("cancer", deathsData, 6, 95),
			new causeOfDeath ("a disease of the blood", deathsData, 8, 100),
			new causeOfDeath ("diabetes", deathsData, 10),
			new causeOfDeath ("dementia", deathsData, 12, 93),
			new causeOfDeath ("Parkinson's disease", deathsData, 14, 98),
			new causeOfDeath ("Alzheimer’s disease", deathsData, 16, 98),
			new causeOfDeath ("heart disease", deathsData, 18, 98),
			new causeOfDeath ("pneumonia", deathsData, 20, 98),
			new causeOfDeath ("a lower respiratory disease", deathsData, 22),
			new causeOfDeath ("chronic obstructive pulmonary disease", deathsData, 24),
			new causeOfDeath ("a disease of the digestive system", deathsData, 26),
			new causeOfDeath ("a disease of the musculoskeletal system", deathsData, 28),
			new causeOfDeath ("a genital disease", deathsData, 30),
			new causeOfDeath ("conditions originating during birth", deathsData, 32),
			new causeOfDeath ("general senility", deathsData, 34, 98),
			new causeOfDeath ("sudden infant death syndrome", deathsData, 36),
			new causeOfDeath ("a fall", deathsData, 38, 95),
			new causeOfDeath ("an accident", deathsData, 40),
			new causeOfDeath ("self harm", deathsData, 42)
		};

		updateCurrentPopCount(); 

		for(int i = 0; i < popData.Length; i++)
		{
			chart[i] = Instantiate(Resources.Load("PopChart")) as GameObject;
			chart[i].transform.parent = graphParent.transform;
			chart[i].transform.localScale = new Vector3(8,8,1);
			chart[i].transform.localPosition = new Vector3( i*8 -460, 0, 0);
			chart[i].name = "Age_"+i.ToString();
			chart[i].GetComponent<popChart>().totalPop = currentPop;
			chart[i].GetComponent<popChart>().updateAge(i);
		}



	}