extends PanelContainer onready var scroll_container = get_node("MarginContainer/ScrollContainer") onready var v_scroll = get_node("MarginContainer/ScrollContainer/_v_scroll") onready var margin_container = get_node("MarginContainer/ScrollContainer/MarginContainer") onready var message_feed_container = get_node("MarginContainer/ScrollContainer/MarginContainer/MessageFeedContainer") var cling_to_end = true func _ready(): # warning-ignore:return_value_discarded Data.messages.connect( "message_added", self, "_on_data_message_added" ) # warning-ignore:return_value_discarded Data.messages.connect( "message_group_added", self, "_on_data_message_group_added" ) # warning-ignore:return_value_discarded v_scroll.connect("value_changed", self, "_on_scroll_value_changed") func scroll_to_newest(): yield(get_tree(), "idle_frame") v_scroll.value = margin_container.rect_size.y func _on_message_box_confirmed(content): if PingSystem.unhandled_ping_list.size() == 0 and not content.empty(): Data.messages.add_message( content, Time.get_current_time(), Users.get_current() ) Data.miscellaneous.big_interaction = Time.get_current_time() func _on_data_message_added(message): var node = message.create_node() message.associated_message_group.get_ref().associated_container.add(node) if not message.content.empty(): scroll_to_newest() func _on_data_message_group_added(message_group): var container = message_group.create_container() message_feed_container.add_child(container) func _on_content_resized(): if cling_to_end: scroll_to_newest() func _on_scroll_value_changed(value): var scroll_end = scroll_container.get_rect().size.y + value cling_to_end = scroll_end == margin_container.get_rect().size.y