示例#1
0
    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();
    }
示例#2
0
    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();
    }