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); }
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; }
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); }