Inheritance: MonoBehaviour
示例#1
0
        protected void New_Tutorial(object sender, EventArgs e)
        {
            List <TutorialPage> pages = new List <TutorialPage>()
            {
                new TutorialPage()
                {
                    PageNumber = 1,
                    Text       = "Some text",
                    Video      = ""
                }
            };
            TutorialItem item = new TutorialItem()
            {
                Title         = "Title",
                Author        = ((Person)Session["User"]).Username,
                Published     = false,
                DatePublished = DateTime.Now,
                DateModified  = DateTime.Now,
                Pages         = pages.ToArray()
            };

            using (Service1Client client = new Service1Client())
            {
                InsertTutorialItemResponse response = client.InsertTutorialItem(new InsertTutorialItemRequest()
                {
                    TutorialItem = item
                });
                if (!response.Errored)
                {
                    string idlink = response._idtutorial;
                    Response.Redirect("~/TutorialEditor?id=" + idlink);
                }
            }
        }
示例#2
0
    public async Task Simple()
    {
        var sb = new Storyboard();

        sb.Root.ForwardQueue.Enqueue(new MusicItem("abertura", null));
        sb.Root.ForwardQueue.Enqueue(new BackgroundItem("floresta", null));
        sb.Root.ForwardQueue.Enqueue(new ProtagonistChangeItem("eva", null));

        var t1 = new TutorialItem(null);

        t1.Block.ForwardQueue.Enqueue(new TutorialTextItem("tutorial1", null));
        t1.Block.ForwardQueue.Enqueue(new TutorialTextItem("tutorial2", null));
        sb.Root.ForwardQueue.Enqueue(t1);

        var listener = new EventListener(sb.Context);
        var data     = await listener.ForwardAsync(sb);

        data.Should().BeEquivalentTo(
            @"-- next --
OnMusicChange(abertura)
OnBackgroundChange(floresta)
OnProtagonistChange(eva)
OnTutorialOpen()
OnTutorialChange(tutorial1)
-- next --
OnTutorialChange(tutorial2)
-- next --
OnTutorialClose()
OnProtagonistChange()
OnBackgroundChange()
OnMusicChange()
");
    }
    private void HandleTutorialItem(TutorialItem tutorialItem)
    {
        _tutorialTextField.Type(PlayerPrefStringResolver.Instance.Resolve(tutorialItem.Text));

        switch (tutorialItem.Action)
        {
        case TutorialItemActionType.ShowTemperatureMeter:
            _temperatureUiController.Hide(false);
            break;

        case TutorialItemActionType.CameraShake:
            CameraManager.Instance.Shake(0.2f);
            break;

        case TutorialItemActionType.SpawnFireball:
            _fireballSpawner.Spawn();
            _fireballSpawner.Invoke("Spawn", 0.6f);
            break;

        case TutorialItemActionType.Mayhem:
            NpcManager.Instance.UnleashTheChaos();
            break;

        case TutorialItemActionType.None:
        default:
            break;
        }
    }
示例#4
0
    private void OffGyroallback()
    {
        PlayerPrefs.SetInt("GUIDE3D", 3);
        MsgBase.MsgAdd <GameObject, MySkyInputEvent.DragState, Vector2, Vector2, Vector3>("EventDrag", EventDrag);
        MsgBase.MsgAdd <GameObject, MySkyInputEvent.ClickState, Vector2>("EventClick", OnClickPhoto);


        PhotoCameraObj      = new GameObject();
        PhotoCameraObj.name = "PhotoCameraObj1111111";
        PhotoCameraObj.transform.SetParent(SCameraManager.currentCamera.gameObject.transform.parent.gameObject.transform);



        Royboj = Instantiate(Resources.Load("photo/Rotation")) as GameObject;
        Royboj.SetActive(false);
        Royboj.transform.SetParent(PhotoCameraObj.transform);
        Royboj.transform.localPosition = new Vector3(0, -2.5f, 6.22f);

        tutorialProcess2 = new TutorialProcess2(TutorialUIObj, TutorialUIObj2);


        FindConfig      = MonoBehaviour.Instantiate(Resources.Load("photo/Find_config")) as GameObject;
        FindConfig.name = "FindConfig";
        FindConfig.transform.SetParent(gameObject.transform);
        m_FindConfig       = FindConfig.GetComponent <Find_Item_Config>();
        m_PhotoConfigArray = new PhotoConfigArray();
        TutorialItem tutorialItem = new TutorialItem(gameObject);

        tutorialItem.Init(20);
        MsgBase.SendMsg("OpenGyroController");
    }
示例#5
0
 private void OnSelectedItem(object sender, SelectedItemChangedEventArgs e)
 {
     if (e.SelectedItem is TutorialItem)
     {
         TutorialItem selectedItem = e.SelectedItem as TutorialItem;
         image.Source = GetImageSource(selectedItem.Id);
     }
 }
 public void NextTutorialItem()
 {
     if (index < items.Length - 1)
     {
         currenItem.gameObject.SetActive(false);
         index++;
         currenItem = items[index];
         currenItem.gameObject.SetActive(true);
     }
     else
     {
         StopTutorial();
     }
 }
示例#7
0
    public void StartTutorial(string name)
    {
        if (!string.IsNullOrEmpty(_item.name))
        {
            StopTutorial();
        }

        foreach (TutorialItem item in tutorials)
        {
            if (item.name == name)
            {
                _item = item;
                window.SetActive(true);
                ui.TriggerUI(item);
            }
        }
    }
示例#8
0
        private IEnumerable TutorialScript()
        {
            if (this.items == null)
            {
                yield break;
            }

            while (this.items.Count > 0)
            {
                TutorialItem item = this.items[0];

                this.items.RemoveAt(0);
                yield return(new WaitForSeconds(item.WaitForSeconds));

                this.ApplyText(item.Text);
            }
        }
示例#9
0
    public async Task BackAndForth()
    {
        var target   = new Storyboard();
        var listener = new EventListener(target.Context);

        target.Root.ForwardQueue.Enqueue(new MusicItem("abertura", null));
        target.Root.ForwardQueue.Enqueue(new BackgroundItem("floresta", null));
        target.Root.ForwardQueue.Enqueue(new ProtagonistChangeItem("eva", null));
        var t1 = new TutorialItem(null);

        t1.Block.ForwardQueue.Enqueue(new TutorialTextItem("tutorial1", null));
        t1.Block.ForwardQueue.Enqueue(new TutorialTextItem("tutorial2", null));
        target.Root.ForwardQueue.Enqueue(t1);

        (await target.MoveNextAsync()).Should().BeTrue();
        (await target.MoveNextAsync()).Should().BeTrue();
        (await target.MovePreviousAsync()).Should().BeTrue();
        (await target.MovePreviousAsync()).Should().BeFalse();
        (await target.MoveNextAsync()).Should().BeTrue();
        (await target.MoveNextAsync()).Should().BeTrue();
        (await target.MoveNextAsync()).Should().BeFalse();

        listener.ToString().Should().Be(
            @"OnMusicChange(abertura)
OnBackgroundChange(floresta)
OnProtagonistChange(eva)
OnTutorialOpen
OnTutorialChange(tutorial1)
OnTutorialChange(tutorial2)
OnTutorialChange(tutorial1)
OnProtagonistChange()
OnTutorialClose
OnBackgroundChange()
OnMusicChange()
OnMusicChange(abertura)
OnBackgroundChange(floresta)
OnProtagonistChange(eva)
OnTutorialOpen
OnTutorialChange(tutorial1)
OnTutorialChange(tutorial2)
OnTutorialClose"
            );
    }
示例#10
0
    public async Task SimpleNarration()
    {
        var sb = new Storyboard();

        sb.Root.ForwardQueue.Enqueue(new MusicItem("abertura", null));
        sb.Root.ForwardQueue.Enqueue(new BackgroundItem("floresta", null));
        var tutorial = new TutorialItem(null);

        tutorial.Block.ForwardQueue.Enqueue(new TutorialTextItem("Tutorial 1", null));
        sb.Root.ForwardQueue.Enqueue(tutorial);

        var listener = new EventListener(sb.Context);
        var data     = await listener.ForwardAsync(sb);

        data.Should().Be(
            @"-- next --
OnMusicChange(abertura)
OnBackgroundChange(floresta)
OnTutorialOpen()
OnTutorialChange(Tutorial 1)
-- next --
OnTutorialClose()
OnBackgroundChange()
OnMusicChange()
"
            );

        data = await listener.BackwardAsync(sb);

        data.Should().Be(
            @"-- previous --
OnMusicChange(abertura)
OnBackgroundChange(floresta)
OnTutorialOpen()
OnTutorialChange(Tutorial 1)
-- previous --
OnTutorialClose()
OnBackgroundChange()
OnMusicChange()
"
            );
    }
示例#11
0
    void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Destination")
        {
            fade.GetComponent <FadeInOut>().isFadeOut = true;
            fade.GetComponent <FadeInOut>().isNext    = true;
        }

        if (other.tag == "TutorialItem")
        {
            tutorialItem = other.GetComponent <TutorialItem>();
            if (!tutorialItem.find)
            {
                questionMark.SetActive(true);
            }
        }

        if (other.tag == "item" || other.tag == "Npc")
        {
            questionMark.SetActive(true);
        }
    }
示例#12
0
    /// <summary>
    /// Tutorial button on RHS clicked, open up relevant tutorial UI based on supplied item
    /// </summary>
    /// <param name="item"></param>
    private void OpenTutorialItem(int index = -1)
    {
        //flush input buffer
        Input.ResetInputAxes();
        if (GameManager.i.inputScript.ModalState == ModalState.Normal)
        {
            if (index > -1)
            {
                //get tutorialItem
                if (index < listOfSetItems.Count)
                {
                    currentItem = listOfSetItems[index];
                    if (currentItem != null)
                    {
                        //switch off all arrows
                        for (int i = 0; i < numOfItems; i++)
                        {
                            listOfInteractions[i].arrowImage.gameObject.SetActive(false);
                        }
                        //display arrow next to selected + 1 tutorial button (shows the next one you need to click on)
                        if (index + 1 < numOfItems)
                        {
                            listOfInteractions[index + 1].arrowImage.gameObject.SetActive(true);
                        }
                        //what type of item
                        switch (currentItem.tutorialType.name)
                        {
                        case "Dialogue":
                            //open special outcome window
                            ModalOutcomeDetails details = new ModalOutcomeDetails()
                            {
                                side          = GameManager.i.sideScript.PlayerSide,
                                textTop       = GameManager.Formatt(currentItem.dialogue.topText, ColourType.moccasinText),
                                textBottom    = currentItem.dialogue.bottomText,
                                sprite        = GameManager.i.tutorialScript.tutorial.sprite,
                                isAction      = false,
                                isSpecial     = true,
                                isSpecialGood = true
                            };
                            EventManager.i.PostNotification(EventType.OutcomeOpen, this, details);
                            break;

                        case "Goal":
                            GameManager.i.tutorialScript.UpdateGoal(currentItem.goal);
                            //change colour to completed (indicates that you're currently doing, or have done, the goal)
                            ColorBlock goalColours = listOfButtons[index].colors;
                            goalColours.normalColor     = colourCompleted;
                            listOfButtons[index].colors = goalColours;
                            break;

                        case "Information":
                            EventManager.i.PostNotification(EventType.GameHelpOpen, this, currentItem.gameHelp);
                            break;

                        case "Query":
                            /*
                             * if (currentItem.isQueryDone == false)
                             * {
                             *  TopicUIData data = GetTopicData(currentItem);
                             *  if (data != null)
                             *  { EventManager.i.PostNotification(EventType.TopicDisplayOpen, this, data); }
                             *  //change colour to completed (indicates that you're currently doing, or have done, the query)
                             *  ColorBlock itemColours = listOfButtons[index].colors;
                             *  itemColours.normalColor = colourCompleted;
                             *  listOfButtons[index].colors = itemColours;
                             * }
                             * else
                             * {
                             *  //query has already been done
                             *  ModalOutcomeDetails detailsDone = new ModalOutcomeDetails()
                             *  {
                             *      side = GameManager.i.sideScript.PlayerSide,
                             *      textBottom = "Haven't we already covered that?<br><br>I must be having a <b>Senior Moment</b>",
                             *      sprite = GameManager.i.tutorialScript.tutorial.sprite,
                             *      isAction = false,
                             *      isSpecial = true,
                             *      isSpecialGood = false
                             *  };
                             *  if (string.IsNullOrEmpty(currentItem.queryHeader) == false)
                             *  { detailsDone.textTop = GameManager.Formatt(currentItem.queryHeader, ColourType.moccasinText); }
                             *  else
                             *  {
                             *      detailsDone.textTop = GameManager.Formatt("I beg your pardon", ColourType.moccasinText);
                             *      Debug.LogWarningFormat("Invalid queryHeader (Null or Empty) for \"{0}\"", currentItem.name);
                             *  }
                             *  //special outcome
                             *  EventManager.i.PostNotification(EventType.OutcomeOpen, this, detailsDone);
                             * }*/

                            TopicUIData data = GetTopicData(currentItem);
                            if (data != null)
                            {
                                EventManager.i.PostNotification(EventType.TopicDisplayOpen, this, data);
                            }

                            /*//change colour to completed (indicates that you're currently doing, or have done, the query)
                             * ColorBlock itemColours = listOfButtons[index].colors;
                             * itemColours.normalColor = colourCompleted;
                             * listOfButtons[index].colors = itemColours;*/

                            break;

                        default: Debug.LogWarningFormat("Unrecognised item.TutorialType \"{0}\"", currentItem.tutorialType.name); break;
                        }
                    }
                    else
                    {
                        Debug.LogWarningFormat("Invalid currentItem (tutorial) (Null)");
                    }
                }
                else
                {
                    Debug.LogWarningFormat("Invalid index (is {0}, listOfSetItems.Count is {1})", index, listOfSetItems.Count);
                }
            }
            else
            {
                Debug.LogWarning("Invalid index (button.buttonInteraction.returnValue (-1)");
            }
        }
    }
 private void Start()
 {
     items      = GetComponentsInChildren <TutorialItem>(true);
     currenItem = items[0];
     currenItem.gameObject.SetActive(true);
 }
示例#14
0
 private void Start()
 {
     m_Master = GetComponent <TutorialItem>();
 }
示例#15
0
        private IStoryboardItem HandlePromptTriggerElement(bool triggerFound)
        {
            void Validate()
            {
                var elementName = reader.LocalName;

                if (triggerFound)
                {
                    throw new StoryboardParsingException(reader, $"O elemento '{elementName}' é inválido porque existe outro elemento de pausa dentro do '{Prompt}'.");
                }
                if (reader.MoveToNextAttribute())
                {
                    throw new StoryboardParsingException(reader, $"Não são permitidos atributos no elemento '{elementName}' dentro do elemento '{Prompt}'.");
                }
            }

            void CloseToProtagonist()
            {
                for (; ;)
                {
                    if (Is <ProtagonistItem>() || Is <ProtagonistMoodItem>() || Is <ProtagonistBumpItem>())
                    {
                        return;
                    }

                    if (blocks.Count == 0)
                    {
                        throw new StoryboardParsingException(reader, $"O elemento '{reader.LocalName}' só pode ser usado em um '{Prompt}' quando o mesmo estiver ligado a um '{Protagonist}'.");
                    }

                    CloseBlock();
                }
            }

            switch (reader.LocalName)
            {
            case Narration:
            {
                CloseToRootOrDo();
                Validate();
                var item = new NarrationItem(null);
                item.Block.ForwardQueue.Enqueue(new NarrationTextItem(GetContent(), null));
                return(item);
            }

            case Tutorial:
            {
                CloseToRootOrDo();
                Validate();
                var item = new TutorialItem(null);
                item.Block.ForwardQueue.Enqueue(new TutorialTextItem(GetContent(), null));
                return(item);
            }

            case Speech:
            {
                CloseToProtagonist();
                Validate();
                var item = new ProtagonistSpeechItem(null);
                item.Block.ForwardQueue.Enqueue(new ProtagonistSpeechTextItem(GetContent(), null));
                return(item);
            }

            case Thought:
            {
                CloseToProtagonist();
                Validate();
                var item = new ProtagonistThoughtItem(null);
                item.Block.ForwardQueue.Enqueue(new ProtagonistThoughtTextItem(GetContent(), null));
                return(item);
            }

            case Observe:
                CloseToRootOrDo();
                Validate();
                return(new PauseItem(null));

            default:
                throw new StoryboardParsingException(reader, $"O elemento '{reader.LocalName}' não é suportado dentro do elemento 'prompt'.");
            }
        }
示例#16
0
    /// <summary>
    /// Populates and returns a data package suitable for TopicUI. Returns null if a problem.
    /// </summary>
    /// <param name="item"></param>
    /// <returns></returns>
    private TopicUIData GetTopicData(TutorialItem item)
    {
        if (item != null)
        {
            int index, limit, count;

            //data package
            TopicUIData data = new TopicUIData();
            data.topicName            = item.tag;
            data.header               = item.query.queryHeader;
            data.text                 = item.query.queryText;
            data.isBoss               = false;
            data.nodeID               = -1;
            data.uiType               = TopicDecisionType.Tutorial;
            data.spriteMain           = GameManager.i.tutorialScript.tutorial.sprite;
            data.ignoreTooltipHeader  = string.Format("<size=120%>{0}</size>", GameManager.Formatt("Disappointed", ColourType.badText));
            data.ignoreTooltipMain    = "Yes, I am. Being able to make a decision is important, what's wrong with you?";
            data.ignoreTooltipDetails = string.Format("<size=115%>{0}</size>", GameManager.Formatt("I'll have to make it for you", ColourType.neutralText));
            if (item.query.queryType != null)
            {
                //query item type
                GameManager.i.tutorialScript.queryType = item.query.queryType;
                //Topic options
                TopicOption[] arrayOfTopicOptions = GameManager.i.tutorialScript.tutorial.arrayOfOptions;
                if (arrayOfTopicOptions != null)
                {
                    //ignore option
                    TopicOption ignoreOption = GameManager.i.tutorialScript.tutorial.ignoreOption;
                    if (ignoreOption != null)
                    {
                        //check there are four options and none are null
                        if (arrayOfTopicOptions.Length == maxOptions)
                        {
                            bool isProceed = true;
                            for (int i = 0; i < arrayOfTopicOptions.Length; i++)
                            {
                                if (arrayOfTopicOptions[i] == null)
                                {
                                    Debug.LogErrorFormat("Invalid topicOption (Null) for tutorial \"{0}\" arrayOfTopicOptions[{1}]", GameManager.i.tutorialScript.tutorial.name, i);
                                    isProceed = false;
                                }
                            }
                            if (isProceed == true)
                            {
                                //Tutorial options
                                List <TutorialOption> listOfTutorialOptions       = new List <TutorialOption>();
                                List <TutorialOption> listOfTutorialIgnoreOptions = new List <TutorialOption>();
                                //special cases where an Alt set of options may be needed
                                switch (item.query.queryType.name)
                                {
                                case "Name":
                                    switch (GameManager.i.playerScript.sex)
                                    {
                                    case ActorSex.Male:
                                        listOfTutorialOptions       = item.query.listOfOptions;
                                        listOfTutorialIgnoreOptions = item.query.listOfIgnoreOptions;
                                        break;

                                    case ActorSex.Female:
                                        listOfTutorialOptions       = item.query.listOfOptionsAlt;
                                        listOfTutorialIgnoreOptions = item.query.listOfIgnoreOptionsAlt;
                                        break;

                                    default: Debug.LogWarningFormat("Unrecognised ActorSex \"{0}\"", GameManager.i.playerScript.sex); break;
                                    }
                                    break;

                                default:
                                    listOfTutorialOptions       = item.query.listOfOptions;
                                    listOfTutorialIgnoreOptions = item.query.listOfIgnoreOptions;
                                    break;
                                }
                                count = listOfTutorialOptions.Count;
                                //create temp list by Value (will be deleting
                                List <TutorialOption> listOfTempOptions = new List <TutorialOption>(listOfTutorialOptions)
                                {
                                };
                                // - - - RANDOM
                                if (item.query.isRandomOptions == true)
                                {
                                    limit = Mathf.Min(maxOptions, count);
                                    //select up to four tutorial options randomly
                                    for (int i = 0; i < limit; i++)
                                    {
                                        index = Random.Range(0, listOfTempOptions.Count);
                                        TutorialOption optionTutorial = listOfTempOptions[index];
                                        if (optionTutorial != null)
                                        {
                                            //Get Topic options
                                            TopicOption optionTopic = arrayOfTopicOptions[i];
                                            optionTopic.tag           = optionTutorial.tag;
                                            optionTopic.textToDisplay = GameManager.i.topicScript.GetOptionString(optionTutorial.text);
                                            data.listOfOptions.Add(optionTopic);
                                            listOfTempOptions.RemoveAt(index);
                                        }
                                        else
                                        {
                                            Debug.LogWarningFormat("Invalid tutorialOption (Null) for isRandom listOfTempOptions[{0}]", index);
                                        }
                                    }
                                }
                                else
                                {
                                    // - - - NOT random, take first four options
                                    limit = Mathf.Min(maxOptions, count);
                                    for (int i = 0; i < limit; i++)
                                    {
                                        TutorialOption optionTutorial = listOfTempOptions[i];
                                        if (optionTutorial != null)
                                        {
                                            TopicOption optionTopic = arrayOfTopicOptions[i];
                                            optionTopic.tag           = optionTutorial.tag;
                                            optionTopic.textToDisplay = GameManager.i.topicScript.GetOptionString(optionTutorial.text);
                                            data.listOfOptions.Add(optionTopic);
                                        }
                                        else
                                        {
                                            Debug.LogWarningFormat("Invalid topicOption (Null) for normal listOfTempOptions[{0}]", i);
                                        }
                                    }
                                }
                                //IGNORE option
                                if (listOfTutorialIgnoreOptions != null)
                                {
                                    //needs to be one option (can be more but they are ignored)
                                    if (listOfTutorialIgnoreOptions.Count >= 1)
                                    {
                                        TutorialOption optionTutorial = listOfTutorialIgnoreOptions[0];
                                        if (optionTutorial != null)
                                        {
                                            data.listOfIgnoreEffects.Add(ignoreOption.listOfGoodEffects[0]);
                                            //ignore option data
                                            GameManager.i.tutorialScript.optionIgnoreTag = optionTutorial.tag;
                                        }
                                        else
                                        {
                                            Debug.LogWarning("Invalid topicOption (Null) for IGNORE listOfTempOptions[0]");
                                        }
                                    }
                                    else
                                    {
                                        Debug.LogWarningFormat("Invalid listOfIgnoreOptions (Empty) for topicItem \"{0}\"", item.name);
                                    }
                                }
                                else
                                {
                                    Debug.LogWarningFormat("Invalid listOfIgnoreOptions (Null) for topicItem \"{0}\"", item.name);
                                }
                                //option tooltips and optionNumber (ignore option done above)
                                for (index = 0; index < data.listOfOptions.Count; index++)
                                {
                                    TopicOption option = data.listOfOptions[index];
                                    if (option != null)
                                    {
                                        option.tooltipHeader = string.Format("<size=120%>{0}</size>", GameManager.Formatt(option.tag, ColourType.neutralText));
                                        option.tooltipMain   = GameManager.i.tutorialScript.GetTutorialTooltip(item.query.queryType);
                                        //reassign option number to be the position in the listOfOptions
                                        option.optionNumber = index;
                                        //set all options as Valid
                                        option.isValid = true;
                                        //copy data across to TutorialManager.cs fields
                                        switch (index)
                                        {
                                        case 0: GameManager.i.tutorialScript.option0Tag = option.tag; break;

                                        case 1: GameManager.i.tutorialScript.option1Tag = option.tag; break;

                                        case 2: GameManager.i.tutorialScript.option2Tag = option.tag; break;

                                        case 3: GameManager.i.tutorialScript.option3Tag = option.tag; break;

                                        default: Debug.LogWarningFormat("Invalid index \"{0}\"", index); break;
                                        }
                                    }
                                    else
                                    {
                                        Debug.LogWarningFormat("Invalid topicOption (Null) for data.listOfOptions[{0}]", index);
                                    }
                                }
                            }
                            return(data);
                        }
                        else
                        {
                            Debug.LogErrorFormat("Invalid arrayOfTopicOptions (records, has {0}, needs {1}) for tutorial \"{2}\"", arrayOfTopicOptions.Length, maxOptions, GameManager.i.tutorialScript.tutorial.name);
                        }
                    }
                    else
                    {
                        Debug.LogErrorFormat("Invalid ignoreOption (Null) for tutorial \"{0}\"", GameManager.i.tutorialScript.tutorial.name);
                    }
                }
                else
                {
                    Debug.LogError("Invalid tutorial.arrayOfOptions (Null)");
                }
            }
            else
            {
                Debug.LogWarning("Invalid (Tutorial) item (Null)");
            }
        }
        else
        {
            Debug.LogErrorFormat("Invalid queryType (Null) for TutorialItem \"{0}\"", item.name);
        }
        //fault condition
        return(null);
    }
    public static Dictionary <string, TutorialBaseScript> activeTutorials = new Dictionary <string, TutorialBaseScript>(); //store list of active tutorial to iterate through

    public static TutorialBaseScript ShowTutorial(TutorialItem caller)
    {
        TutorialBaseScript m_Tut = ShowTutorial(caller.m_Data, caller.transform);

        return(m_Tut);
    }