コード例 #1
0
    private void ShowDistracter(DistracterData disData)
    {
        UIManager.Instance.SetEnableTouchLayer("Main", false);

        distracterPopup = Instantiate(preDistracterPopup);
        distracterPopup.transform.SetParent(UIManager.Instance.Canvas.transform);
        distracterPopup.transform.localPosition = Vector3.zero;
        distracterPopup.transform.localScale    = Vector3.one;
        curDistracterCode    = disData.code;
        curDistracterResults = disData.results;

        for (int i = 0; i < disData.distracters.Length; i += 1)
        {
            DistracterSlot slot = Instantiate(preDistracterButton).GetComponent <DistracterSlot>();
            slot.distracterNum = i;
            slot.Text.text     = disData.distracters[i];
            slot.transform.SetParent(distracterPopup.transform);
            slot.transform.localScale = Vector3.one;
            slot.Text.supportRichText = true;
        }

        GridLayoutGroup group  = distracterPopup.GetComponent <GridLayoutGroup>();
        int             height = (460 - (int)group.cellSize.y * disData.distracters.Length) / (disData.distracters.Length + 1);

        group.padding.top = height;
        group.spacing     = new Vector2(0, height);
    }
コード例 #2
0
    private void ParseConversation(ref string fileData, int curIndex, out int outIndex, ref int openedBracket)
    {
        int startBracket = openedBracket;

        while (fileData[curIndex] != '<')
        {
            curIndex += 1;
        }
        while (fileData[curIndex] == '<')
        {
            openedBracket += 1;
            curIndex      += 1;
        }

        ConversationFileDataConv convData = new ConversationFileDataConv();

        convData.firstCode = "Conversation";

        string code = ReadUntilTagEnd(fileData, curIndex, out curIndex);

        try
        {
            convData.talkerCode = int.Parse(code);
        }
        catch
        {
            Debug.LogError("talker Code is Wrong");
        }

        while (fileData[curIndex] == '>')
        {
            openedBracket -= 1;
            curIndex      += 1;
        }


        while (fileData[curIndex] != '<')
        {
            curIndex += 1;
        }
        while (fileData[curIndex] == '<')
        {
            openedBracket += 1;
            curIndex      += 1;
        }

        string summary = ReadUntilTagEnd(fileData, curIndex, out curIndex);

        convData.convSummary = summary;
        while (fileData[curIndex] == '>')
        {
            openedBracket -= 1;
            curIndex      += 1;
        }

        while (fileData[curIndex] != '<')
        {
            curIndex += 1;
        }
        while (fileData[curIndex] == '<')
        {
            openedBracket += 1;
            curIndex      += 1;
        }

        // 선택지 여부
        string distracter = ReadUntilTagEnd(fileData, curIndex, out curIndex);

        convData.hasDistracter = bool.Parse(distracter);

        while (fileData[curIndex] == '>')
        {
            openedBracket -= 1;
            curIndex      += 1;
        }

        // 선택지 파싱
        if (convData.hasDistracter)
        {
            DistracterData data = ParseDistracters(ref fileData, curIndex, out curIndex, ref openedBracket);
            convData.distracter = data;
        }
        convDatas.Add(convData);


        outIndex = curIndex;
    }
コード例 #3
0
    private DistracterData ParseDistracters(ref string data, int curIndex, out int index, ref int openedBracket)
    {
        while (data[curIndex] != '<')
        {
            curIndex += 1;
        }
        while (data[curIndex] == '<')
        {
            openedBracket += 1;
            curIndex      += 1;
        }

        DistracterData disData = new DistracterData();
        string         code    = ReadUntilTagEnd(data, curIndex, out curIndex);

        disData.code = int.Parse(code);

        while (data[curIndex] != '>')
        {
            curIndex += 1;
        }
        while (data[curIndex] == '>')
        {
            openedBracket += 1;
            curIndex      -= 1;
        }


        while (data[curIndex] != '<')
        {
            curIndex += 1;
        }
        while (data[curIndex] == '<')
        {
            openedBracket += 1;
            curIndex      += 1;
        }

        curIndex -= 1;
        ParseNumber(ref data, ref curIndex);
        string numStr = ReadUntilTagEnd(data, curIndex, out curIndex);
        int    num    = int.Parse(numStr);

        while (data[curIndex] != '>')
        {
            curIndex += 1;
        }
        while (data[curIndex] == '>')
        {
            openedBracket += 1;
            curIndex      -= 1;
        }

        int idx = 0;

        disData.distracters = new string[num];
        disData.results     = new string[num];
        while (idx < num)
        {
            while (data[curIndex] != '<')
            {
                curIndex += 1;
            }
            while (data[curIndex] == '<')
            {
                openedBracket += 1;
                curIndex      += 1;
            }

            int curStsartIndex = curIndex;
            code = ReadUntilTagEnd(data, curIndex, out curIndex);
            int  startBracket = 0;
            bool chk;

            switch (code)
            {
            case "If":
                chk = ParseCondition(ref data, ref curIndex, ref openedBracket, false);

                code = ReadUntilTagEnd(data, curIndex, out curIndex);
                if (chk)
                {
                    disData.distracters[idx] = code;
                }

                startBracket = openedBracket;
                do
                {
                    while (data[curIndex] != '<')
                    {
                        curIndex += 1;
                    }

                    while (data[curIndex] == '<')
                    {
                        if (chk)
                        {
                            disData.results[idx] += "<";
                        }
                        openedBracket += 1;
                        curIndex      += 1;
                    }

                    string link = ReadUntilTagEnd(data, curIndex, out curIndex, false);

                    if (chk)
                    {
                        disData.results[idx] += link;
                    }

                    while (openedBracket > startBracket && data[curIndex] == '>')
                    {
                        if (chk)
                        {
                            disData.results[idx] += ">";
                        }
                        openedBracket -= 1;
                        curIndex      += 1;
                    }
                }while (openedBracket > startBracket);

                if (chk)
                {
                    idx += 1;
                }
                break;

            case "Parameter":
                ParseParameters(ref data, curStsartIndex, curIndex, out curIndex, ref openedBracket);

                break;

            default:
                disData.distracters[idx] = code;

                startBracket = openedBracket;
                do
                {
                    while (data[curIndex] != '<')
                    {
                        curIndex += 1;
                    }

                    while (data[curIndex] == '<')
                    {
                        disData.results[idx] += "<";
                        openedBracket        += 1;
                        curIndex             += 1;
                    }

                    string link = ReadUntilTagEnd(data, curIndex, out curIndex, false);

                    disData.results[idx] += link;

                    while (openedBracket > startBracket && data[curIndex] == '>')
                    {
                        disData.results[idx] += ">";
                        openedBracket        -= 1;
                        curIndex             += 1;
                    }
                }while (openedBracket > startBracket);

                idx += 1;
                break;
            }
        }


        index = curIndex;
        return(disData);
    }