// テキストを更新する void TextUpdate() { bool isReadText = false; // 現在の行のテキストをuiTextに流し込み、現在の行番号を一つ追加する while (isReadText == false) { LineScript line = linescripts[currentLine]; isReadText = isReadText || line.isText(); while (line.indent < indentHeads.Count) { indentHeads.RemoveAt(indentHeads.Count - 1); } if (line.isIndent) { indentHeads.Add(line); } if (line is Assignment) { Debug.Log("Execute Assignment from now"); Assignment a = line as Assignment; a.execute(variable); if (variable.ContainsKey(a.name) == false) { variable.Add(a.name, "0"); } variable[a.name] = a.value; Debug.Log("*[$]completed calculation :: " + a.name + " : " + variable[a.name]); } if (line is Label) { Label label = line as Label; if (label.isExecutable(variable)) { Debug.Log("label[" + label.name + "] was executed"); } else { Debug.Log("label[" + label.name + "] was failed..."); while (line.indent < linescripts[currentLine + 1].indent) { //out of range array を考えてね currentLine++; } } } if (line is Order) { Order order = line as Order; Debug.Log("Order [" + order.name + "]"); if (order.name == "go") { } else if (order.name == "select") { } } if (line is FormatText) { FormatText f = line as FormatText; f.execute(variable); } uiText.text = line.text; //debug //speaker update string name = ""; for (int i = 0, n = indentHeads.Count; i < n; i++) { if (indentHeads[i] is Speaker) { name = (indentHeads[i] as Speaker).name; } } speaker.text = name; //speaker.text += line.indent + "/" + indentHeads.Count; currentLine++; } }