public BaseQuestion GetUIQuestion(int questionIndex, int answerButtons = 4) { ConfusionTouch questionType = ConfusionTouchList[questionIndex]; AnswerInfos.Clear(); CurrentColorID = AnswerID.None; int colors = EnumUtil.GetValues <ColorEnum>().Count; //Initializing a Question BaseQuestion bq = new BaseQuestion(); bq.IgnoreClickCount = true; bq.IgnoreClickTime = true; bq.HasSequenceAnswer = false; bq.HasBoolValue = false; bq.HasTimerValue = true; bq.HasSequentialQuestions = true; bq.Pattern = QPattern.ConfusionTouch; bq.QuestionType = QuestionType.Base; bq.TimeForQuestion = 0; bq.Options = new List <AnswerSpriteHolder>(); for (int i = 0; i < answerButtons; i++) { AnswerSpriteHolder answer = new AnswerSpriteHolder(); bq.Options.Add(answer); } // //Getting a random color for the question int randomColorIndex = (int)Random.Range(0, colors); //Shuffle FisherYatesShuffle shuffle = new FisherYatesShuffle(colors); shuffle.ShuffleList(); List <int> colorIndex = shuffle.ShuffledList; //Setting up button info for later assignment and setting up current answerID Color for the current question for (int i = 0; i < answerButtons; i++) { ConfusionTouchAnswerInfo answerInfo = GetNewAnswerButton(); AnswerInfos.Add(answerInfo); } SetAnswerForQuestion(); SetAnswerID((ColorEnum)randomColorIndex); //Assignment to answer buttons SetAnswerOption(ref bq, (ColorEnum)randomColorIndex, questionType); return(bq); }
private void SetAnswerOption(ref BaseQuestion question, ColorEnum randomColor, ConfusionTouch questionType) { ColorEnum color = GetColorBasedOnAnswerOrSpriteID(IDType.AnswerID, CurrentColorID); switch (questionType) { case ConfusionTouch.ColorX: for (int i = 0; i < question.Options.Count; i++) { question.Options[i].Sprite = AnswerInfos[i].SpriteID; question.Options[i].ID = AnswerInfos[i].AnswerID; question.Options[i].text = AnswerInfos[i].TextInBalloon.ToString(); question.Options[i].TextColor = GetColorBasedOnColorEnum(AnswerInfos[i].TextColor); if (CurrentColorID == AnswerInfos[i].AnswerID) { question.Options[i].IsCorrect = true; question.Question = "Touch the " + color.ToString() + " balloon."; } else { question.Options[i].IsCorrect = false; } } break; case ConfusionTouch.WordColorX: for (int i = 0; i < question.Options.Count; i++) { question.Options[i].Sprite = AnswerInfos[i].SpriteID; question.Options[i].ID = AnswerInfos[i].AnswerID; question.Options[i].text = AnswerInfos[i].TextInBalloon.ToString(); question.Options[i].TextColor = GetColorBasedOnColorEnum(AnswerInfos[i].TextColor); if (CurrentColorID == AnswerInfos[i].AnswerID) { question.Options[i].IsCorrect = true; question.Question = "Touch the " + AnswerInfos[i].TextColor.ToString() + " word."; } else { question.Options[i].IsCorrect = false; } } break; case ConfusionTouch.WordX: for (int i = 0; i < question.Options.Count; i++) { question.Options[i].Sprite = AnswerInfos[i].SpriteID; question.Options[i].ID = AnswerInfos[i].AnswerID; question.Options[i].text = AnswerInfos[i].TextInBalloon.ToString(); question.Options[i].TextColor = GetColorBasedOnColorEnum(AnswerInfos[i].TextColor); if (CurrentColorID == AnswerInfos[i].AnswerID) { question.Options[i].IsCorrect = true; question.Question = "Touch the word " + question.Options[i].text + "."; } else { question.Options[i].IsCorrect = false; } } break; } }