Esempio n. 1
0
    public void calculateResults()
    {
        currentQuestResult = 0;
        int questnum = 0;

        //Sorted player list
        Playerstats[] playerlist = new Playerstats[Mathf.Max(3, GetComponent <PlayersTracker>().players.Count)];
        foreach (Playerstats player in GetComponent <PlayersTracker>().players)
        {
            //places players in list based on order of tasks
            playerlist [selectedPlayers [player.name] - 1] = player;
        }

        for (int i = 0; i < 3; i++)
        {
            resultsUI [i] = new QuestResults();
        }
        int tasknum = 0;

        //assigns each player to their task
        for (int i = 0; i < activeQuests.Count; i++)
        {
            //if quest doen't have players sullected cause less then 3 people skip
            if (playerlist[tasknum] == null)
            {
                tasknum++;
                continue;
            }
            resultsUI [i] = new QuestResults();
            resultsUI[i].addQuest(activeQuests [i]);
            int i2 = 0;
            //adding to task per quest
            foreach (Task task in activeQuests[i].tasks)
            {
                resultsUI [i].addPlayer(i2, playerlist [tasknum]);
                i2++;
                tasknum++;
            }
        }
        GetComponent <CanvasManager>().displayNextquest();
    }
Esempio n. 2
0
    public void displayNextquest()
    {
        //if end of quests turn off an "reset" results
        if (GetComponent <GameLoopManager> ().currentQuestResult >= GetComponent <GameLoopManager> ().getActiveQuestNumber())
        {
            ToggleResults();
            GetComponent <GameLoopManager> ().RollJobs();
            GetComponent <GameLoopManager> ().currentQuestResult = 0;
            return;
        }
        QuestResults result = GetComponent <GameLoopManager> ().resultsUI [GetComponent <GameLoopManager> ().currentQuestResult];

        //if quest was not given a player move on to next quest
        while (!result.unselected)
        {
            GetComponent <GameLoopManager> ().currentQuestResult++;
            if (GetComponent <GameLoopManager> ().currentQuestResult >= GetComponent <GameLoopManager> ().getActiveQuestNumber())
            {
                ToggleResults();
                GetComponent <GameLoopManager> ().RollJobs();
                GetComponent <GameLoopManager> ().currentQuestResult = 0;
                return;
            }
            result = GetComponent <GameLoopManager> ().resultsUI [GetComponent <GameLoopManager> ().currentQuestResult];
        }
        Quest quest = result.quest;

        //set quest name, i think this needs a fix sorry
        resultsCanvas.transform.GetChild(2).GetComponent <Text> ().text = result.quest.title;

        int  taskWins     = 0;
        bool questSuccess = true;

        //figuring out task results for sake of quest success/failure and also setting task success + name
        for (int taskNum = 0; taskNum < 4; taskNum++)
        {
            GameObject taskUI = taskUIs[taskNum];
            Text[]     texts  = taskUI.GetComponentsInChildren <Text> ();
            //if task doesn't exist skipp and set blank
            if (taskNum >= quest.tasks.Length)
            {
                texts [0].text = "";
                texts [2].text = "";
                //set image to blank
                continue;
            }
            Playerstats player = result.playerlist [taskNum];
            Task        task   = quest.tasks[taskNum];
            texts [0].text = player.name;
            int stat = 0;
            if (task.stat == Task.Stat.Fight)
            {
                stat = 0;
                //also set image
            }
            else if (task.stat == Task.Stat.Charm)
            {
                stat = 1;
                //also set image
            }
            else if (task.stat == Task.Stat.Agility)
            {
                stat = 2;
                //also set image
            }
            else if (task.stat == Task.Stat.Smarts)
            {
                stat = 3;
                //also set image
            }
            else if (task.stat == Task.Stat.Magic)
            {
                stat = 4;
                //also set image
            }
            //sucesses at task text
            if (task.difficulty <= player.Skill [stat])
            {
                //Successful task
                texts [2].text = player.name + " has succeeded at their " + statTypes[stat] + " task.\n";
                taskWins++;
            }
            else
            {
                texts [2].text = player.name + " has failed their " + statTypes[stat] + " task.\n";
            }
        }
        //sets if the quest failed or succeded
        if (taskWins == 0 || taskWins * 2 < quest.tasks.Length)
        {
            questSuccess = false;
            GameObject.Find("Fail/Success").GetComponent <Text> ().text = "Failed Quest";
        }
        else
        {
            GameObject.Find("Fail/Success").GetComponent <Text> ().text = "Successful Quest";
        }

        // Set the quest result text
        if (questSuccess)
        {
            resultsCanvas.transform.GetChild(4).GetComponent <Text>().text = quest.succeed;
        }
        else
        {
            resultsCanvas.transform.GetChild(4).GetComponent <Text>().text = quest.fail;
        }

        // set image for money based on success/failure/ammount of money
        string output = "";

        if (!questSuccess)
        {
            output += "You got no money,";
            GameObject.Find("MoneyAmount").GetComponent <Image>().sprite = moneySprites[0];
        }
        else
        {
            if (quest.money == -5)
            {
                output += "You got no money,";
                GameObject.Find("MoneyAmount").GetComponent <Image>().sprite = moneySprites[0];
            }
            else if (quest.money == 5)
            {
                output += "You got a lot of money,";
                GameObject.Find("MoneyAmount").GetComponent <Image>().sprite = moneySprites[4];
            }
            else if (quest.money <= -2)
            {
                output += "You got very little money,";
                GameObject.Find("MoneyAmount").GetComponent <Image>().sprite = moneySprites[1];
            }
            else if (quest.money <= 1)
            {
                output += "You got an average amount of money,";
                GameObject.Find("MoneyAmount").GetComponent <Image>().sprite = moneySprites[2];
            }
            else
            {
                output += "You got a good amount of money,";
                GameObject.Find("MoneyAmount").GetComponent <Image>().sprite = moneySprites[3];
            }
        }

        if (questSuccess)
        {
            if (Mathf.Abs(quest.money - quest.need) >= 7)
            {
                output += " but\n";
            }
            else
            {
                output += " and\n";
            }
        }
        else
        {
            if (quest.need <= -2)
            {
                output += " but\n";
            }
            else
            {
                output += " and\n";
            }
        }

        //set world stat text based on success/failure/ammount of world change
        if (questSuccess)
        {
            if (quest.need == -5)
            {
                output += "the world is worse now.";
            }
            else if (quest.need == 5)
            {
                output += "you did a great deed!";
            }
            else if (quest.need <= -2)
            {
                output += "you did a pretty bad thing.";
            }
            else if (quest.need <= 1)
            {
                output += "life goes on as usual.";
            }
            else
            {
                output += "you helped some people today!";
            }
        }
        else
        {
            if (quest.need == -5)
            {
                output += "the world is glad you failed.";
            }
            else if (quest.need == 5)
            {
                output += "you failed, when the world desperately needed you.";
            }
            else if (quest.need <= -2)
            {
                output += "it's probably a good thing you failed...";
            }
            else if (quest.need <= 1)
            {
                output += "life goes on as usual anyway.";
            }
            else
            {
                output += "you missed an opportunity to help others.";
            }
        }

        GameObject.Find("Money&Need").GetComponent <Text>().text = output;

        //going through tasks to set ikigai
        for (int taskNum = 0; taskNum < 4; taskNum++)
        {
            GameObject taskUI = taskUIs[taskNum];
            Text[]     texts  = taskUI.GetComponentsInChildren <Text> ();
            if (taskNum >= quest.tasks.Length)
            {
                texts [1].text = "";
                //set image to blank
                taskUI.SetActive(false);
                continue;
            }
            taskUI.SetActive(true);

            Playerstats player = result.playerlist [taskNum];
            Task        task   = quest.tasks[taskNum];
            int         stat   = 0;
            if (task.stat == Task.Stat.Fight)
            {
                stat = 0;
            }
            else if (task.stat == Task.Stat.Charm)
            {
                stat = 1;
            }
            else if (task.stat == Task.Stat.Agility)
            {
                stat = 2;
            }
            else if (task.stat == Task.Stat.Smarts)
            {
                stat = 3;
            }
            else if (task.stat == Task.Stat.Magic)
            {
                stat = 4;
            }

            // set stat picture
            taskUI.GetComponentInChildren <Image>().sprite = statSprites[stat];

            //setting ikigai number
            int ikigai = 0;
            if (questSuccess)
            {
                //Successful quest
                ikigai = GetComponent <GameLoopManager> ().calculateIkigai(player.Passion[stat], quest.money, player.Greed, quest.need, player.Need);
            }
            else
            {
                //Failed quest
                ikigai = GetComponent <GameLoopManager> ().calculateIkigai(player.Passion[stat], -5, player.Greed, quest.need * -1, player.Need);
            }
            texts[1].text = ikigai.ToString();
            if (ikigai > 0)
            {
                texts[1].color = Color.green;
            }
            else if (ikigai < 0)
            {
                texts[1].color = Color.red;
            }
            else
            {
                texts[1].color = Color.white;
            }
        }
        GetComponent <GameLoopManager> ().currentQuestResult++;
    }