Introduced dialogue graph magic, created assest and importers. Added events for broadcasting puzzle steps

This commit is contained in:
2025-09-26 13:32:14 +02:00
parent 47d942d176
commit b781a1656d
23 changed files with 1258 additions and 1 deletions

View File

@@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
namespace Dialogue
{
public class DialogueComponent : MonoBehaviour
{
[SerializeField]
private RuntimeDialogueGraph runtimeGraph;
private Dictionary<string, RuntimeDialogueNode> _nodeLookup = new Dictionary<string, RuntimeDialogueNode>();
private RuntimeDialogueNode _currentNode;
private void Start()
{
foreach (var node in runtimeGraph.allNodes)
{
_nodeLookup[node.nodeID] = node;
}
if(string.IsNullOrEmpty(runtimeGraph.entryNodeID))
{
EndDialogue();
return;
}
ShowNode(runtimeGraph.entryNodeID);
}
private void Update()
{
if(Mouse.current.leftButton.wasPressedThisFrame && _currentNode != null)
{
if(string.IsNullOrEmpty(_currentNode.nextNodeID))
{
EndDialogue();
}
else
{
ShowNode(_currentNode.nextNodeID);
}
}
}
private void ShowNode(string nodeID)
{
if (!_nodeLookup.ContainsKey(nodeID))
{
EndDialogue();
return;
}
_currentNode = _nodeLookup[nodeID];
Debug.Log($"{runtimeGraph.speakerName}: {_currentNode.dialogueLine}");
}
private void EndDialogue()
{
Application.Quit();
}
}
}