blob: 52f38b91f9d8048f026bfe06b1163ad8ef922a55 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
|