using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class StateMachine : MonoBehaviour
{
    public Note currentNote;

    public void nextNote(int count) {
        currentNote = currentNote.Transitions[count].Target;
        setNote();
    }    

    public void setNote() {
        var dialogueBox = GetComponent<DialogueBox>();
        dialogueBox.setActor(currentNote.ActorName);
        dialogueBox.setText(currentNote.DialogueText);
        dialogueBox.setTransitions(currentNote.Transitions);
    }

    //Test
    public void Start() {
        
        Transition[] GHI = new Transition[2];
        Note TestNote = new Note("Actor 3","Testing Text 3",GHI);

        Transition TestingTransition = new Transition("Continue", TestNote);
        Transition[] ABC = new Transition[1];
        ABC[0] = TestingTransition;
        Note TestNote2 = new Note("Actor 2","Testing Text 2", ABC);

        Transition TestingTransition1 = new Transition("Yes", TestNote2);
        Transition[] DEF = new Transition[1];
        DEF[0] = TestingTransition1;
        Note TestNote3 = new Note("Actor 1","Testing Text 1", DEF);

        Transition TestingTransition2 = new Transition("No", TestNote3);
        GHI[0] = TestingTransition1;
       
        Transition[] JKL = new Transition[5];
        JKL[0] = TestingTransition1;
        JKL[1] = TestingTransition2;
        JKL[3] = TestingTransition;
        JKL[4] = TestingTransition1;

        Note TestNote4 = new Note("Actor 4", "Testing Text 4", JKL);

        Transition TestingTransition3 = new Transition("Unsure", TestNote4);
        GHI[1] = TestingTransition3;
        JKL[2] = TestingTransition3;

        currentNote = TestNote3;
        setNote();
    }


    public class Note {
        public string ActorName;
        public string DialogueText;
        public Transition[] Transitions;

        public Note(string actor,string dialogue) {
            ActorName = actor;
            DialogueText = dialogue;
        }

        public Note(string actor,string dialogue,Transition[] noteTransitions) {
            ActorName = actor;
            DialogueText = dialogue;
            Transitions = noteTransitions;
        }
    }


    public class Transition {
        public string TransitionName;
        public Note Target;

        public Transition(string name,Note target){
            TransitionName = name;
            Target = target;
        }

    }
}