Example #1
0
    // テキストを更新する
    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++;
        }
    }