From 0456e7cd82b232a38fd9b6e008be7d49b2f9e90f Mon Sep 17 00:00:00 2001 From: Matheus Date: Mon, 1 Sep 2025 17:50:25 -0300 Subject: Logs --- scripts/GUI/MessageLog.cs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 scripts/GUI/MessageLog.cs (limited to 'scripts/GUI/MessageLog.cs') diff --git a/scripts/GUI/MessageLog.cs b/scripts/GUI/MessageLog.cs new file mode 100644 index 0000000..ebfb488 --- /dev/null +++ b/scripts/GUI/MessageLog.cs @@ -0,0 +1,37 @@ +using Godot; +using System; +using System.Threading.Tasks; + +public partial class MessageLog : ScrollContainer +{ + private Message lastMessage = null; + private VBoxContainer MessageList; + + public override void _Ready() + { + base._Ready(); + MessageList = GetNode("MessageList"); + SignalBus.Instance.messageSent += async (string text) => await AddMessageAsync(text); + } + + private async Task AddMessageAsync(string text) { + if (lastMessage != null && lastMessage.PlainText == text) { + lastMessage.Count++; + return; + } + + Message message = new(text); + lastMessage = message; + MessageList.AddChild(message); + await ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame); + EnsureControlVisible(message); + } + + /// + /// Método estático disponível em todo o escopo do jogo. + /// + /// + public static void SendMessage(string text) { + SignalBus.Instance.EmitSignal(SignalBus.SignalName.messageSent, text); + } +} -- cgit v1.2.3