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