From 5a2d1f6f2462636d8389adb46ba3ff237ffe32c7 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Thu, 28 Aug 2025 15:51:23 -0400 Subject: [Client] Added messages overlay --- client/Archipelago/messages.gd | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 client/Archipelago/messages.gd (limited to 'client/Archipelago/messages.gd') diff --git a/client/Archipelago/messages.gd b/client/Archipelago/messages.gd new file mode 100644 index 0000000..52f38b9 --- /dev/null +++ b/client/Archipelago/messages.gd @@ -0,0 +1,61 @@ +extends CanvasLayer + +var _message_queue = [] +var _font +var _container +var _ordered_labels = [] + + +func _ready(): + _container = VBoxContainer.new() + _container.set_name("Container") + _container.anchor_bottom = 1 + _container.offset_left = 20.0 + _container.offset_right = 1920.0 + _container.offset_top = 0.0 + _container.offset_bottom = -20.0 + _container.alignment = BoxContainer.ALIGNMENT_END + _container.mouse_filter = Control.MOUSE_FILTER_IGNORE + self.add_child(_container) + + _font = load("res://assets/fonts/Lingo2.ttf") + + +func _add_message(text): + var new_label = RichTextLabel.new() + new_label.push_font(_font) + new_label.push_font_size(36) + new_label.push_outline_color(Color(0, 0, 0, 1)) + new_label.push_outline_size(2) + new_label.append_text(text) + new_label.fit_content = true + + _container.add_child(new_label) + _ordered_labels.push_back(new_label) + + +func showMessage(text): + if _ordered_labels.size() >= 9: + _message_queue.append(text) + return + + _add_message(text) + + if _ordered_labels.size() > 1: + return + + var timeout = 10.0 + while !_ordered_labels.is_empty(): + await get_tree().create_timer(timeout).timeout + + var to_remove = _ordered_labels.pop_front() + var to_tween = get_tree().create_tween().bind_node(to_remove) + to_tween.tween_property(to_remove, "modulate:a", 0.0, 0.5) + to_tween.tween_callback(to_remove.queue_free) + + if !_message_queue.is_empty(): + var next_msg = _message_queue.pop_front() + _add_message(next_msg) + + if timeout > 4: + timeout -= 3 -- cgit 1.4.1