using System.Collections; using System.Collections.Generic; using UnityEngine; using RPGCreationKit.DialogueSystem; namespace RPGCreationKit { /// /// Used on objects that can be talked to, with the player or other Dialoguables. /// public interface IDialoguable { /// /// Sets the Speaker Index to the entity /// /// void SetSpeakerIndex(int index); int GetSpeakerIndex(); /// /// Initializes the dialogue logic /// /// On the entities: /// Given the graph: void DialogueLogic(IDialoguable[] entities, DialogueGraph dialogue); /// /// Executes a DialogueNode /// /// The node /// On the entities /// IEnumerator ExecuteDialogueNode(XNode.Node _node, IDialoguable[] _entities); /// /// The Entity will reach the target and speak to it with its current DialogueGraph /// /// void SpeakToEntity(IDialoguable target); /// /// The entity will change its current DialogueGraph /// /// The new DialogueGraph void ChangeDialogueGraph(DialogueGraph _newDialogueGraph); /// /// Returns true if the Dialoguable Entity can perform a conversation. /// /// bool CanDialogue(); /// /// Gets the name of the dialoguable entity /// /// string GetDialoguableName(); /// /// Code that runs as soon as someone starts talking with this entity /// void OnDialogueStarts(GameObject target); /// /// Code that runs when the entity has finished dialoguing. /// void OnDialogueEnds(GameObject target); /// /// Gets the current DialogueGraph of the entity /// /// DialogueGraph GetCurrentDialogueGraph(); /// /// Called when the entity has to speak a line of dialogue. /// /// void OnSpeakALine(NPCDialogueLineNode currentNode); /// /// Called when the entity finish his line, usually used to reset its state. /// void OnFinishedSpeakingALine(); /// /// Gets the entity transform, used to look at the entity while speaking to it. This can be null. /// /// Transform GetEntityLookAtPos(); /// /// Gets the GameObject of this Dialoguable. /// /// GameObject GetEntityGameObject(); /// /// Plays an audio clip, usually the voice file of the current dialogue line. /// /// The clip to play void PlayAudioClip(AudioClip clip); /// /// Stops any audio clip this IDialoguable is playing. /// void StopAudio(); /// /// Returns wheter or not the entity is speaking a line or not. /// /// bool IsTalking(); Animator GetAnimator(); void ForceToStopDialogue(); } }