about summary refs log tree commit diff stats
path: root/client/Archipelago/messages.gd
blob: 52f38b91f9d8048f026bfe06b1163ad8ef922a55 (plain) (blame) pre { line-height: 125%; } td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn
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