Exemplo n.º 1
0
 /// <summary>
 /// It is the method that works when the page(Swich Character Canvas) is opened.
 /// Creates buttons.
 /// </summary>
 private void GetCharacterButtons()
 {
     foreach (string characterName in characterList)
     {
         CharacterButtonScript listing = Instantiate(characterButtonScript, content);
         listing.SetCharacterName(characterName);
         Buttons.Add(listing);
     }
 }
    //This gets the answers from the database, and then places them on the answer panel randomly using the random function.
    private void setAnswers()
    {
        string          connection = "URI=file:" + Application.persistentDataPath + "/FYP_Database";
        List <string[]> answers    = new List <string[]>();

        IDbConnection dbCon = new SqliteConnection(connection);

        dbCon.Open();

        IDataReader reader;
        IDbCommand  dbcmd = dbCon.CreateCommand();

        string query = "SELECT AnswerID, CorrectAnswer, word.L2Text FROM TblAnswer JOIN TblWord as word ON TblAnswer.TextID = word.WordID WHERE ConversationID = " + conversationID.ToString();

        dbcmd.CommandText = query;

        reader = dbcmd.ExecuteReader();

        int counter = 0;

        while (reader.Read())
        {
            Debug.Log("AnswerID: " + reader[0].ToString() + "; Correct Answer: " + reader[1].ToString() + " Text: " + reader[2].ToString());
            string[] tempArray = { reader[0].ToString(), reader[1].ToString(), reader[2].ToString(), counter.ToString() };
            answers.Add(tempArray);
            counter++;
            if (questionType == 2 && reader[1].ToString() == "1")
            {
                correctAnswerIndex = counter - 1;
            }
        }

        dbCon.Close();

        currentAnswers = answers.ToArray();

        if (answers.Count == 4)
        {
            questionType = 2; // multiple choice

            //TOP LEFT ANSWER
            int rNumber = random(0, 3); //get random answer

            button.transform.GetChild(0).gameObject.GetComponent <UnityEngine.UI.Text>().text = answers[rNumber][2];
            Debug.Log(answers[rNumber][2]);

            GameObject temp = Instantiate(button, gameObject.transform.GetChild(0).GetChild(1).GetChild(0).transform);
            temp.transform.localPosition       = new Vector3(-100f, 100f, 0f);
            characterButtonScript              = temp.GetComponent <CharacterButtonScript>();
            characterButtonScript.answersIndex = int.Parse(answers[rNumber][3]);
            answers.RemoveAt(rNumber);

            //TOP RIGHT ANSWER
            rNumber = random(0, 2);

            button.transform.GetChild(0).gameObject.GetComponent <UnityEngine.UI.Text>().text = answers[rNumber][2];
            Debug.Log(answers[rNumber][2]);

            temp = Instantiate(button, gameObject.transform.GetChild(0).GetChild(1).GetChild(0).transform);
            temp.transform.localPosition       = new Vector3(100f, 100f, 0f);
            characterButtonScript              = temp.GetComponent <CharacterButtonScript>();
            characterButtonScript.answersIndex = int.Parse(answers[rNumber][3]);
            answers.RemoveAt(rNumber);

            //MIDDLE LEFT ANSWER
            rNumber = random(0, 1);

            button.transform.GetChild(0).gameObject.GetComponent <UnityEngine.UI.Text>().text = answers[rNumber][2];
            Debug.Log(answers[rNumber][2]);

            temp = Instantiate(button, gameObject.transform.GetChild(0).GetChild(1).GetChild(0).transform);
            temp.transform.localPosition       = new Vector3(-100f, 0f, 0f);
            characterButtonScript              = temp.GetComponent <CharacterButtonScript>();
            characterButtonScript.answersIndex = int.Parse(answers[rNumber][3]);
            answers.RemoveAt(rNumber);

            //MIDDLE RIGHT ANSWER
            button.transform.GetChild(0).gameObject.GetComponent <UnityEngine.UI.Text>().text = answers[0][2];
            Debug.Log(answers[0][2]);

            temp = Instantiate(button, gameObject.transform.GetChild(0).GetChild(1).GetChild(0).transform);
            temp.transform.localPosition       = new Vector3(100f, 0f, 0f);
            characterButtonScript              = temp.GetComponent <CharacterButtonScript>();
            characterButtonScript.answersIndex = int.Parse(answers[0][3]);
        }
        else if (answers.Count == 6)
        {
            questionType = 3; // answer blocks

            //TOP LEFT ANSWER
            int rNumber = random(0, 5);

            button.transform.GetChild(0).gameObject.GetComponent <UnityEngine.UI.Text>().text = answers[rNumber][2];
            Debug.Log(answers[rNumber][2]);

            GameObject temp = Instantiate(button, gameObject.transform.GetChild(0).GetChild(1).GetChild(0).transform);
            temp.transform.localPosition       = new Vector3(-100f, 100f, 0f);
            characterButtonScript              = temp.GetComponent <CharacterButtonScript>();
            characterButtonScript.answersIndex = int.Parse(answers[rNumber][3]);
            answers.RemoveAt(rNumber);

            //TOP RIGHT ANSWER
            rNumber = random(0, 4);

            button.transform.GetChild(0).gameObject.GetComponent <UnityEngine.UI.Text>().text = answers[rNumber][2];
            Debug.Log(answers[rNumber][2]);

            temp = Instantiate(button, gameObject.transform.GetChild(0).GetChild(1).GetChild(0).transform);
            temp.transform.localPosition       = new Vector3(100f, 100f, 0f);
            characterButtonScript              = temp.GetComponent <CharacterButtonScript>();
            characterButtonScript.answersIndex = int.Parse(answers[rNumber][3]);
            answers.RemoveAt(rNumber);

            //MIDDLE LEFT ANSWER
            rNumber = random(0, 3);

            button.transform.GetChild(0).gameObject.GetComponent <UnityEngine.UI.Text>().text = answers[rNumber][2];
            Debug.Log(answers[rNumber][2]);

            temp = Instantiate(button, gameObject.transform.GetChild(0).GetChild(1).GetChild(0).transform);
            temp.transform.localPosition       = new Vector3(-100f, 0f, 0f);
            characterButtonScript              = temp.GetComponent <CharacterButtonScript>();
            characterButtonScript.answersIndex = int.Parse(answers[rNumber][3]);
            answers.RemoveAt(rNumber);

            //MIDDLE RIGHT ANSWER
            rNumber = random(0, 2);

            button.transform.GetChild(0).gameObject.GetComponent <UnityEngine.UI.Text>().text = answers[rNumber][2];
            Debug.Log(answers[rNumber][2]);

            temp = Instantiate(button, gameObject.transform.GetChild(0).GetChild(1).GetChild(0).transform);
            temp.transform.localPosition       = new Vector3(100f, 0f, 0f);
            characterButtonScript              = temp.GetComponent <CharacterButtonScript>();
            characterButtonScript.answersIndex = int.Parse(answers[rNumber][3]);
            answers.RemoveAt(rNumber);

            //BOTTOM LEFT ANSWER
            rNumber = random(0, 1);

            button.transform.GetChild(0).gameObject.GetComponent <UnityEngine.UI.Text>().text = answers[rNumber][2];
            Debug.Log(answers[rNumber][2]);

            temp = Instantiate(button, gameObject.transform.GetChild(0).GetChild(1).GetChild(0).transform);
            temp.transform.localPosition       = new Vector3(-100f, -100f, 0f);
            characterButtonScript              = temp.GetComponent <CharacterButtonScript>();
            characterButtonScript.answersIndex = int.Parse(answers[rNumber][3]);
            answers.RemoveAt(rNumber);

            //BOTTOM RIGHT ANSWER
            button.transform.GetChild(0).gameObject.GetComponent <UnityEngine.UI.Text>().text = answers[0][2];
            Debug.Log(answers[0][2]);

            temp = Instantiate(button, gameObject.transform.GetChild(0).GetChild(1).GetChild(0).transform);
            temp.transform.localPosition       = new Vector3(100f, -100f, 0f);
            characterButtonScript              = temp.GetComponent <CharacterButtonScript>();
            characterButtonScript.answersIndex = int.Parse(answers[0][3]);
        }
        else if (answers.Count == 0 || answers.Count == 1)
        {
            questionType = 1;
            GameObject container = GameObject.Find("Building Block Container");
            foreach (Transform child in container.transform)
            {
                child.gameObject.SetActive(false);
            }
        }
    }