Exemplo n.º 1
0
    // Generate all code snippet and get all editable part
    private void CreateCodeSnippet(string sourcePath, RectTransform contentParent)
    {
        if (string.IsNullOrEmpty(sourcePath))
        {
            return;
        }

        TextAsset     source        = Resources.Load <TextAsset>(sourcePath);
        List <string> sourceContent = source.text.Split('\n').ToList();

        Stack <CodeBlockController> blockStack = new Stack <CodeBlockController>();
        CodeBlockController         mainBlock  = GameObject.Instantiate(codeBlock_prefab).GetComponent_AutoAdd <CodeBlockController>();

        mainBlock.transform.SetParent(contentParent, false);
        blockStack.Push(mainBlock);

        sourceContent.ForEach(sentence =>
        {
            if (sentence.Contains("[`"))
            {
                CodeBlockController codeBlock = GameObject.Instantiate(codeBlock_prefab).GetComponent_AutoAdd <CodeBlockController>();
                codeBlock.LoadTitle(sentence);
                blockStack.Peek().AddBlock(codeBlock);
                blockStack.Push(codeBlock);
            }
            else if (sentence.Contains("`]"))
            {
                CodeBlockController codeBlock = blockStack.Pop();
            }
            else
            {
                CodeSentenceController sentenceController = GameObject.Instantiate(codeSentence_prefab).GetComponent <CodeSentenceController>();
                sentenceController.LoadSentence(sentence);
                snippetEditablePart.AddRange(sentenceController.sentenceEditablePart);
                snippetTag2EditablePart.AddRange(sentenceController.tag2EditablePart);
                blockStack.Peek().AddSentence(sentenceController);
            }
        });
        mainBlock.UnFoldBlock();
        UpdateWindowResolution();
    }