/// <summary>
    /// Sets up this dialogue controller with a given dialogue tree.
    /// </summary>
    /// <param name="dialogueTree">Dialogue tree to load.</param>
    /// <param name="context">The dialogue context to display to.</param>
    public DialogueController(List<object> dialogueTree, AbstractDialogueContext context)
    {
        // Set context
        this.context = context;
        this.context.OnContinuePressed += this.AdvanceLine;
        this.context.OnOptionSelected += this.HandleOptionSelected;
        this.context.OnDialogueActionEncountered += this.HandleDialogueActionEvent;

        // Initialize action list.
        this.eventActionList = new Dictionary<string, DialogueActionDelegate>();

        // Load the conversation into this DialogueController.
        this.LoadConversation(dialogueTree);
    }
 /// <summary>
 /// Find the conversation with the correct name and create a Dialogue Controller to manage that conversation.
 /// </summary>
 /// <param name="serializedConversation">The data of the conversation to start.</param>
 /// <param name="context">The dialogue context to attatch to the controller.</param>
 public abstract DialogueController StartConversation(TextAsset serializedConversation, AbstractDialogueContext context);