예제 #1
0
 public DialogueScriptObject(DialogueScriptAction act, string dat)
 {
     action = act;
     data   = dat;
 }
예제 #2
0
    private IEnumerator ProcessDialogue(string hint)
    {
        yield return(StartCoroutine(FadeIn()));

        string[] lines = dialogueScript.Split(';');
        string[] hints = hint.Split(';');
        for (int i = 0; i < lines.Length - 1; i++)
        {
            string[] data   = lines[i].Split(':');
            bool     isLeft = true;
            if (data[0].ToLower().Contains("r"))
            {
                isLeft = false;
            }
            Queue <DialogueScriptObject> dialogueQueue = new Queue <DialogueScriptObject>();
            string txt = "";

            for (int j = 0; j < data[1].Length; j++)
            {
                if (data[1][j] == '<')
                {
                    if (txt.Length > 0)
                    {
                        dialogueQueue.Enqueue(new DialogueScriptObject(DialogueScriptAction.dialogue, txt));
                        txt = "";
                    }
                    int                  len    = data[1].IndexOf('>', j) - j - 1;
                    string               action = data[1].Substring(j + 1, len);
                    string[]             split  = action.Split('=');
                    DialogueScriptAction act    = DialogueScriptAction.dialogue;
                    switch (split[0].ToLower())
                    {
                    case "sprite":
                        act = DialogueScriptAction.sprite;
                        break;

                    case "name":
                        act = DialogueScriptAction.name;
                        break;

                    case "animation":
                        act = DialogueScriptAction.animation;
                        break;

                    default:
                        break;
                    }
                    dialogueQueue.Enqueue(new DialogueScriptObject(act, split[1]));
                    j += len + 1;
                }
                else
                {
                    txt += data[1][j];
                }

                if (j == data[1].Length - 1 && txt.Length > 0)
                {
                    dialogueQueue.Enqueue(new DialogueScriptObject(DialogueScriptAction.dialogue, txt));
                    txt = "";
                }
            }


            yield return(StartCoroutine(PlayLine(dialogueQueue, isLeft)));
        }


        //hint
        Queue <DialogueScriptObject> q = new Queue <DialogueScriptObject>();

        if (0 < hints.Length)
        {
            print("here");
            q.Enqueue(new DialogueScriptObject(DialogueScriptAction.name, "hint"));
            //q.Enqueue(new DialogueScriptObject(DialogueScriptAction.sprite,"hint"));

            foreach (string text in hints)
            {
                q.Enqueue(new DialogueScriptObject(DialogueScriptAction.dialogue, text));
            }
        }

        charL.sprite = null;
        charR.sprite = null;
        yield return(StartCoroutine(PlayLine(q, true)));



        //unload scene
        yield return(StartCoroutine(FadeOut()));

        songPlay.Invoke(-3);                //Playing Saved Song
        LoadManager.instance.UnloadSceneAsync("Dialogue");
    }