Skip to content
Snippets Groups Projects
Commit 1bcea6f3 authored by Samuel Truman's avatar Samuel Truman
Browse files

Refactoring

parent faf6baac
No related branches found
No related tags found
No related merge requests found
......@@ -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;
}
}
......
<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
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
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment