Add ability to hit NPCs and see different dialogue, add interrupt feature for dialogue controller singleton

This commit is contained in:
2024-09-09 17:20:54 -07:00
parent 699b4b95cf
commit fc33b07dc7
12 changed files with 489 additions and 420 deletions

View File

@@ -5,8 +5,24 @@ public partial class DialogueController : Node
{
public static PackedScene DialogueBalloon { get; set; }
public DialogueController()
private static Node _currentlyActiveDialogue { get; set; } = new Node();
private static Resource _currentDialogue { get; set; }
public override void _Ready()
{
DialogueBalloon = GD.Load<PackedScene>("res://src/ui/dialogue/DialogueBalloon.tscn");
}
public static void ShowDialogue(Resource dialogueResource, string dialogueTitle)
{
Interrupt();
_currentlyActiveDialogue = DialogueManager.ShowDialogueBalloonScene(DialogueBalloon, dialogueResource, dialogueTitle);
}
public static void Interrupt()
{
if (IsInstanceValid(_currentlyActiveDialogue))
_currentlyActiveDialogue.QueueFree();
}
}

View File

@@ -68,7 +68,7 @@ public partial class Game : Node3D, IGame
GameRepo.Pause();
DialogueManager.GetCurrentScene = (() => this);
var dialogueResource = GD.Load<Resource>("res://src/ui/dialogue/FloorExit.dialogue");
DialogueManager.ShowDialogueBalloonScene(DialogueController.DialogueBalloon, dialogueResource, "floor_exit");
DialogueController.ShowDialogue(dialogueResource, "floor_exit");
DialogueManager.DialogueEnded += (Resource resource) => { GameRepo.Resume(); };
}