public void DecisionMade(string candidate, string chosenName, string rejectName) { chosenCandidate = candidate; chosenCandidateName = chosenName; rejectCandidateName = rejectName; int[] goodArray; //Replace with retrieving array from candidate int[] badArray; changeInMorale = 0; badProbability = 0; if (candidate.Equals("first")) { firstCandidate = FindObjectOfType <CandidateAController>(); Probability(firstCandidate.moral); goodArray = stringToArray(firstCandidate.goodArray); badArray = stringToArray(firstCandidate.badArray); } else { secondCandidate = FindObjectOfType <CandidateBController>(); Probability(secondCandidate.moral); goodArray = stringToArray(secondCandidate.goodArray); badArray = stringToArray(secondCandidate.badArray); } //Retrieve decision stats for candidate //5 stats good/bad values placed in array in order int bestCase = 0; foreach (int x in goodArray) { bestCase += x; } //Retrieve probability for candidate (e.g: 80/20) int i; for (i = 0; i < 5; i++) { if (Random.Range(0f, 1f) <= badProbability) { changeInMorale += badArray[i]; } else { changeInMorale += goodArray[i]; } } if (bestCase >= 0) { if (bestCase / 2 > changeInMorale) { goodOutcome = false; } else { goodOutcome = true; } } else { if (bestCase * 2 > changeInMorale) { goodOutcome = false; } else { goodOutcome = true; } } // Call UpdateSlider on morale slider with input changeInMorale // If health goes below 20, then no next level. They will be taken to game over screen. sliderScript.UpdateHealth(changeInMorale); // TODO if Evadndria health go below 0, Then set day=-1 else day++ decisionCanvas.SetActive(false); outcomeCanvas.SetActive(true); FindObjectOfType <OutcomeScript>().PresentOutcome(); }
void Start() { ic = CandidateContainer.Load(path); while (true) { randCandidateA = findValidCandidate("A"); if (randCandidateA != -1) { availableCandidates[randCandidateA] = -1; randAMoral = ic.candidates[randCandidateA].moral; break; } } while (true) { randCandidateB = findValidCandidate("B"); if (randCandidateB != -1) { availableCandidates[randCandidateB] = -1; break; } } GameObject player = GameObject.Find("Player"); CandidateAssociations cAssociations = FindObjectOfType <CandidateAssociations>(); Vector3[] townSpawn = { new Vector3(-105.9f, -220.2f, 0), new Vector3(-109, -194.4f, 0), new Vector3(-102.8f, -162.2f, 0), new Vector3(-90, -194, 0), new Vector3(-77.2f, -210, 0), new Vector3(-70.6f, -191, 0), new Vector3(-61.5f, -200.5f, 0), new Vector3(-48.2f, -162, 0), new Vector3(-32, -213, 0), new Vector3(-23, -181.2f, 0), new Vector3(-19.7f, -162.4f, 0) }; cAssociations.locations.Add(new Locations.Location(new Vector3(-48, -220, 0), "Town Square", townSpawn)); foreach (CandidateXML candidate in ic.candidates) { if (candidate.id.Equals(randCandidateA.ToString())) { candidateA = transform.Find("First Candidate Profile"); try { candidateAController = candidateA.GetComponent <CandidateAController>(); candidateAController.sprite = sprites[randCandidateA]; candidateAController.fullname = candidate.fullname; cAssociations.CandidateAName = candidate.fullname.Split(' ')[0]; candidateAController.moral = candidate.moral; candidateAController.goodArray = candidate.goodArray; candidateAController.badArray = candidate.badArray; candidateAController.houseSize = candidate.houseSize; Locations locations = player.GetComponent <Locations>(); for (int i = 0; i < locations.locations.Count; i++) { Locations.Location loco = (Locations.Location)locations.locations[i]; if (candidateAController.houseSize.Equals(loco.size)) { cAssociations.houseA = loco; cAssociations.locations.Add(loco); locations.locations.RemoveAt(i); break; } } cAssociations.npcNameA = candidate.npcName; cAssociations.itemNamesA.Add(candidate.itemName1); cAssociations.itemNamesA.Add(candidate.itemName2); candidateAController.birthdate = candidate.birthdate; candidateAController.ethnicity = candidate.ethnicity; candidateAController.occupation = candidate.occupation; candidateAController.skills = candidate.skills; candidateAController.description = candidate.description; candidateAController.traits = candidate.traits; } catch (NullReferenceException) { print("stupid exception"); } } else if (candidate.id.Equals(randCandidateB.ToString())) { candidateB = transform.Find("Second Candidate Profile"); try { candidateBController = candidateB.GetComponent <CandidateBController>(); candidateBController.sprite = sprites[randCandidateB]; candidateBController.fullname = candidate.fullname; cAssociations.CandidateBName = candidate.fullname.Split(' ')[0]; candidateBController.moral = candidate.moral; candidateBController.goodArray = candidate.goodArray; candidateBController.badArray = candidate.badArray; candidateBController.houseSize = candidate.houseSize; Locations locations = player.GetComponent <Locations>(); for (int i = 0; i < locations.locations.Count; i++) { Locations.Location loco = (Locations.Location)locations.locations[i]; if (candidateBController.houseSize.Equals(loco.size)) { cAssociations.houseB = loco; cAssociations.locations.Add(loco); locations.locations.RemoveAt(i); break; } } cAssociations.npcNameB = candidate.npcName; cAssociations.itemNamesB.Add(candidate.itemName1); cAssociations.itemNamesB.Add(candidate.itemName2); candidateBController.birthdate = candidate.birthdate; candidateBController.ethnicity = candidate.ethnicity; candidateBController.occupation = candidate.occupation; candidateBController.skills = candidate.skills; candidateBController.description = candidate.description; candidateBController.traits = candidate.traits; } catch (NullReferenceException) { print("stupid exception"); } } } FindObjectOfType <ObjectSpawning>().spawnItems(); }