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; }
// 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); } }