From 1bcea6f3cd686ba785abb2ee94b4fff628478ec1 Mon Sep 17 00:00:00 2001 From: Samuel Truman <samuel.truman@uni-wuerzburg.de> Date: Mon, 24 Apr 2023 14:44:55 +0200 Subject: [PATCH] Refactoring --- Assets/UI/DialogueBox/DialogueBox.cs | 86 ++++++------------- Assets/UI/DialogueBox/DialogueBox.uxml | 18 ++-- Assets/UI/DialogueBox/StateMachine.cs | 51 ----------- Assets/UI/DialogueBox/Storyline.cs | 45 ++++++++++ ...StateMachine.cs.meta => Storyline.cs.meta} | 0 5 files changed, 77 insertions(+), 123 deletions(-) delete mode 100644 Assets/UI/DialogueBox/StateMachine.cs create mode 100644 Assets/UI/DialogueBox/Storyline.cs rename Assets/UI/DialogueBox/{StateMachine.cs.meta => Storyline.cs.meta} (100%) diff --git a/Assets/UI/DialogueBox/DialogueBox.cs b/Assets/UI/DialogueBox/DialogueBox.cs index 01e775c..913c592 100644 --- a/Assets/UI/DialogueBox/DialogueBox.cs +++ b/Assets/UI/DialogueBox/DialogueBox.cs @@ -2,88 +2,54 @@ using UnityEngine; using UnityEngine.UIElements; +[RequireComponent(typeof(UIDocument))] public class DialogueBox : MonoBehaviour { + private UIDocument uiDocument; + private VisualElement root; + private Button[] buttons; - string ActorName = "ActorName"; - string DialogueText = "DialogueText"; - TextElement[] Buttons = new TextElement[5]; - + public void Awake() { + uiDocument = GetComponent<UIDocument>(); + } + public void OnEnable() { - var uiDocument = GetComponent<UIDocument>(); - VisualElement root = uiDocument.rootVisualElement; + root = uiDocument.rootVisualElement; var visualTree = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/UI/DialogueBox/DialogueBox.uxml"); var styleSheet = AssetDatabase.LoadAssetAtPath<StyleSheet>("Assets/UI/DialogueBox/DialogueBox.uss"); VisualElement tree = visualTree.CloneTree(); tree.styleSheets.Add(styleSheet); root.Add(tree); + buttons = root.Query<Button>().ToList().ToArray(); - Buttons[0] = GetComponent<UIDocument>().rootVisualElement.Q<Button>("Button1"); - Buttons[1] = GetComponent<UIDocument>().rootVisualElement.Q<Button>("Button2"); - Buttons[2] = GetComponent<UIDocument>().rootVisualElement.Q<Button>("Button3"); - Buttons[3] = GetComponent<UIDocument>().rootVisualElement.Q<Button>("Button4"); - Buttons[4] = GetComponent<UIDocument>().rootVisualElement.Q<Button>("Button5"); - - setActor(ActorName); - setText(DialogueText); - - Buttons[0].RegisterCallback<MouseUpEvent>((e) => { - GetComponent<StateMachine>().nextNote(0); - }); - - Buttons[1].RegisterCallback<MouseUpEvent>((e) => { - GetComponent<StateMachine>().nextNote(1); - }); - - Buttons[2].RegisterCallback<MouseUpEvent>((e) => { - GetComponent<StateMachine>().nextNote(2); - }); - - Buttons[3].RegisterCallback<MouseUpEvent>((e) => { - GetComponent<StateMachine>().nextNote(3); - }); - - Buttons[4].RegisterCallback<MouseUpEvent>((e) => { - GetComponent<StateMachine>().nextNote(4); - }); + SetActor("ActorName"); + SetText("DialogueText"); + for(var i = 0; i < buttons.Length; i++) { + var index = i; + buttons[i].RegisterCallback<MouseUpEvent>(_ => GetComponent<Storyline>().ApplyTransition(index)); + } } - public void setActor(string actor) { - GetComponent<UIDocument>().rootVisualElement.Q<Label>("Actor").text = actor; + public void SetActor(string actor) { + root.Q<Label>("Actor").text = actor; } - public void setText(string text) { - GetComponent<UIDocument>().rootVisualElement.Q<TextElement>("Dialogue").text = text; + public void SetText(string text) { + root.Q<TextElement>("Dialogue").text = text; } - public void setTransitions(StateMachine.Transition[] transitions) { - for (int i = 0; i < 5; i++) { - if (i < transitions.Length) { - Buttons[i].visible = true; - Buttons[i].text = transitions[i].TransitionName; + public void SetTransitions(Storyline.Transition[] transitions) { + for(var i = 0; i < buttons.Length; i++) { + if(i < transitions.Length) { + buttons[i].visible = true; + buttons[i].text = transitions[i].transitionText; } else { - Buttons[i].visible = false; + buttons[i].visible = false; } } } - - public void setNote(string Actor, string Dialogue) { - setActor(Actor); - setText(Dialogue); - } - - public void hideButton(int count) - { - Buttons[count].visible = false; - } - - public void showButton(int count) - { - Buttons[count].visible = true; - } - } diff --git a/Assets/UI/DialogueBox/DialogueBox.uxml b/Assets/UI/DialogueBox/DialogueBox.uxml index ee6912c..d85ef07 100644 --- a/Assets/UI/DialogueBox/DialogueBox.uxml +++ b/Assets/UI/DialogueBox/DialogueBox.uxml @@ -1,17 +1,11 @@ <UXML xmlns="UnityEngine.UIElements"> - - <Label name="Actor"/> - + <Label name="Actor"/> <VisualElement class="row"> <TextElement name="Dialogue"/> </VisualElement> - - - <Button name="Button1" /> - <Button name="Button2" /> - <Button name="Button3" /> - <Button name="Button4" /> - <Button name="Button5" /> - - + <Button name="Button1"/> + <Button name="Button2"/> + <Button name="Button3"/> + <Button name="Button4"/> + <Button name="Button5"/> </UXML> \ No newline at end of file diff --git a/Assets/UI/DialogueBox/StateMachine.cs b/Assets/UI/DialogueBox/StateMachine.cs deleted file mode 100644 index 032e792..0000000 --- a/Assets/UI/DialogueBox/StateMachine.cs +++ /dev/null @@ -1,51 +0,0 @@ -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); - } - - - 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; - } - - } -} \ No newline at end of file diff --git a/Assets/UI/DialogueBox/Storyline.cs b/Assets/UI/DialogueBox/Storyline.cs new file mode 100644 index 0000000..ff034e1 --- /dev/null +++ b/Assets/UI/DialogueBox/Storyline.cs @@ -0,0 +1,45 @@ +using UnityEngine; + +public class Storyline : MonoBehaviour { + public Node currentNode; + + + public void ApplyTransition(int count) { + currentNode = currentNode.transitions[count].target; + UpdateUi(); + } + + public void UpdateUi() { + var dialogueBox = GetComponent<DialogueBox>(); + dialogueBox.SetActor(currentNode.actorName); + dialogueBox.SetText(currentNode.dialogueText); + dialogueBox.SetTransitions(currentNode.transitions); + } + + + public class Node { + public readonly string actorName; + public readonly string dialogueText; + public readonly Transition[] transitions; + + public Node(string actor, string dialogue) { + actorName = actor; + dialogueText = dialogue; + } + + public Node(string actor, string dialogue, Transition[] transitions) : this(actor, dialogue) { + this.transitions = transitions; + } + } + + + public class Transition { + public readonly string transitionText; + public readonly Node target; + + public Transition(string text, Node target) { + transitionText = text; + this.target = target; + } + } +} \ No newline at end of file diff --git a/Assets/UI/DialogueBox/StateMachine.cs.meta b/Assets/UI/DialogueBox/Storyline.cs.meta similarity index 100% rename from Assets/UI/DialogueBox/StateMachine.cs.meta rename to Assets/UI/DialogueBox/Storyline.cs.meta -- GitLab