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