From 29e260072df6762a362ab0dd9fb3769faa4260ee Mon Sep 17 00:00:00 2001 From: Amaan Shawkath Date: Sat, 8 Jul 2023 13:49:16 +0100 Subject: [PATCH] initial setup of dialogue panel and updating some scripts --- Assets/Scripts/DialogueSystem/Dialogue.cs | 4 +- .../DialogueSystem/DialogueController.cs | 2 + Assets/Scripts/DialogueSystem/UI.meta | 8 ++ .../DialogueSystem/UI/DialoguePanel.cs | 95 +++++++++++++++++++ .../DialogueSystem/UI/DialoguePanel.cs.meta | 11 +++ 5 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 Assets/Scripts/DialogueSystem/UI.meta create mode 100644 Assets/Scripts/DialogueSystem/UI/DialoguePanel.cs create mode 100644 Assets/Scripts/DialogueSystem/UI/DialoguePanel.cs.meta diff --git a/Assets/Scripts/DialogueSystem/Dialogue.cs b/Assets/Scripts/DialogueSystem/Dialogue.cs index f466b53..82e63c7 100644 --- a/Assets/Scripts/DialogueSystem/Dialogue.cs +++ b/Assets/Scripts/DialogueSystem/Dialogue.cs @@ -5,12 +5,12 @@ using UnityEngine; [System.Serializable] public class Dialogue { - [SerializeField] private string m_dialogueText; + public string text; } public class QuestionData { - public string[] m_questions = new string[] + public static string[] Questions = new string[] { "Who are you?", "Tell me something about yourself.", diff --git a/Assets/Scripts/DialogueSystem/DialogueController.cs b/Assets/Scripts/DialogueSystem/DialogueController.cs index 95fbc00..21160db 100644 --- a/Assets/Scripts/DialogueSystem/DialogueController.cs +++ b/Assets/Scripts/DialogueSystem/DialogueController.cs @@ -4,6 +4,8 @@ using UnityEngine; public class DialogueController : MonoBehaviour { + [SerializeField] private DialoguePanel m_dialoguePanel; + // TODO: // - Load the correct character based on the character who has been interacted with // - Display the 5 question options and hook up their responses diff --git a/Assets/Scripts/DialogueSystem/UI.meta b/Assets/Scripts/DialogueSystem/UI.meta new file mode 100644 index 0000000..7c57c01 --- /dev/null +++ b/Assets/Scripts/DialogueSystem/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0bd66c3ec3a21b440be0d261ae3eaf95 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DialogueSystem/UI/DialoguePanel.cs b/Assets/Scripts/DialogueSystem/UI/DialoguePanel.cs new file mode 100644 index 0000000..7bf2541 --- /dev/null +++ b/Assets/Scripts/DialogueSystem/UI/DialoguePanel.cs @@ -0,0 +1,95 @@ +using System.Collections; +using System.Collections.Generic; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public class DialoguePanel : MonoBehaviour +{ + [SerializeField] private Transform m_questionHolder; + [SerializeField] private Button m_questionButton; + + [SerializeField] private TMP_Text m_characterNameText; + [SerializeField] private TMP_Text m_characterText; + + private const float TypingSpeed = 0.02f; + + private CharacterData m_currentCharacter; + private bool m_skipped = false; + + private void Start() + { + PopulateQuestionButtons(); + } + + public void Setup(CharacterData characterData) + { + Cleanup(); + + m_currentCharacter = characterData; + m_characterNameText.text = characterData.name; + + // TODO: will this be changed with an introductory text? + m_characterText.text = "Select an option..."; + } + + private void Cleanup() + { + m_skipped = false; + m_characterText.text = ""; + + StopAllCoroutines(); + } + + // Populates the questions the player can ask the NPC. + private void PopulateQuestionButtons() + { + for (int i = 0; i < QuestionData.Questions.Length; i++) + { + var buttonObj = Instantiate(m_questionButton, m_questionHolder); + + // Sets the button text to the question text. + var buttonText = buttonObj.GetComponentInChildren(); + buttonText.text = QuestionData.Questions[i]; + + var button = buttonObj.GetComponent