make messages scroll to bottom on new messages
This commit is contained in:
parent
d90c0e5ee7
commit
76676f53f5
@ -5,10 +5,11 @@
|
|||||||
[node name="Chat" type="CanvasLayer"]
|
[node name="Chat" type="CanvasLayer"]
|
||||||
script = ExtResource("1_ulx3h")
|
script = ExtResource("1_ulx3h")
|
||||||
|
|
||||||
[node name="Root" type="MarginContainer" parent="."]
|
[node name="MsgMargin" type="MarginContainer" parent="."]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
|
offset_bottom = -70.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
@ -17,20 +18,19 @@ mouse_filter = 2
|
|||||||
theme_override_constants/margin_left = 50
|
theme_override_constants/margin_left = 50
|
||||||
theme_override_constants/margin_top = 20
|
theme_override_constants/margin_top = 20
|
||||||
theme_override_constants/margin_right = 50
|
theme_override_constants/margin_right = 50
|
||||||
theme_override_constants/margin_bottom = 20
|
|
||||||
|
|
||||||
[node name="VBox" type="VBoxContainer" parent="Root"]
|
[node name="MsgVBox" type="VBoxContainer" parent="MsgMargin"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
mouse_filter = 2
|
mouse_filter = 2
|
||||||
theme_override_constants/separation = 0
|
theme_override_constants/separation = 0
|
||||||
|
|
||||||
[node name="MsgScroll" type="ScrollContainer" parent="Root/VBox"]
|
[node name="MsgScroll" type="ScrollContainer" parent="MsgMargin/MsgVBox"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
mouse_filter = 2
|
follow_focus = true
|
||||||
horizontal_scroll_mode = 0
|
horizontal_scroll_mode = 0
|
||||||
|
|
||||||
[node name="MsgMargin" type="MarginContainer" parent="Root/VBox/MsgScroll"]
|
[node name="MsgMargin" type="MarginContainer" parent="MsgMargin/MsgVBox/MsgScroll"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
@ -39,13 +39,33 @@ theme_override_constants/margin_left = 10
|
|||||||
theme_override_constants/margin_right = 10
|
theme_override_constants/margin_right = 10
|
||||||
theme_override_constants/margin_bottom = 30
|
theme_override_constants/margin_bottom = 30
|
||||||
|
|
||||||
[node name="MsgContainer" type="VBoxContainer" parent="Root/VBox/MsgScroll/MsgMargin"]
|
[node name="MsgContainer" type="VBoxContainer" parent="MsgMargin/MsgVBox/MsgScroll/MsgMargin"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
mouse_filter = 2
|
mouse_filter = 2
|
||||||
alignment = 2
|
alignment = 2
|
||||||
|
|
||||||
[node name="MessageEdit" type="LineEdit" parent="Root/VBox"]
|
[node name="EditMargin" type="MarginContainer" parent="."]
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_top = 1016.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
mouse_filter = 2
|
||||||
|
theme_override_constants/margin_left = 50
|
||||||
|
theme_override_constants/margin_right = 50
|
||||||
|
theme_override_constants/margin_bottom = 20
|
||||||
|
|
||||||
|
[node name="EditVBox" type="VBoxContainer" parent="EditMargin"]
|
||||||
|
layout_mode = 2
|
||||||
|
mouse_filter = 2
|
||||||
|
theme_override_constants/separation = 0
|
||||||
|
alignment = 2
|
||||||
|
|
||||||
|
[node name="MessageEdit" type="LineEdit" parent="EditMargin/EditVBox"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_font_sizes/font_size = 26
|
theme_override_font_sizes/font_size = 26
|
||||||
|
|||||||
@ -5,13 +5,17 @@ var open: bool = false
|
|||||||
|
|
||||||
var _chat_message_scene := preload("res://scenes/ui/chat_message.tscn")
|
var _chat_message_scene := preload("res://scenes/ui/chat_message.tscn")
|
||||||
|
|
||||||
@onready var _messages_container: Container = $Root/VBox/MsgScroll/MsgMargin/MsgContainer
|
@onready var _msg_scroll: ScrollContainer = $MsgMargin/MsgVBox/MsgScroll
|
||||||
@onready var _message_edit: LineEdit = $Root/VBox/MessageEdit
|
@onready
|
||||||
|
var _msg_container: Container = $MsgMargin/MsgVBox/MsgScroll/MsgMargin/MsgContainer
|
||||||
|
@onready var _msg_margin: Container = $MsgMargin/MsgVBox/MsgScroll/MsgMargin
|
||||||
|
@onready var _message_edit: LineEdit = $EditMargin/EditVBox/MessageEdit
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
_message_edit.text_submitted.connect(_on_message_edit_text_submitted)
|
_message_edit.text_submitted.connect(_on_message_edit_text_submitted)
|
||||||
_message_edit.visible = false
|
_message_edit.visible = false
|
||||||
|
_msg_margin.minimum_size_changed.connect(_on_message_margin_minimum_size_changed)
|
||||||
Referencer.chat = self
|
Referencer.chat = self
|
||||||
|
|
||||||
|
|
||||||
@ -48,7 +52,7 @@ func _send_message(message: String) -> void:
|
|||||||
Networker.players[multiplayer.get_remote_sender_id()]["name"] as String
|
Networker.players[multiplayer.get_remote_sender_id()]["name"] as String
|
||||||
)
|
)
|
||||||
var message_node := _make_message_node(player_name, message)
|
var message_node := _make_message_node(player_name, message)
|
||||||
_messages_container.add_child(message_node)
|
_msg_container.add_child(message_node)
|
||||||
print(player_name + ": " + message)
|
print(player_name + ": " + message)
|
||||||
|
|
||||||
|
|
||||||
@ -60,5 +64,13 @@ func _make_message_node(player_name: String, message: String) -> RichTextLabel:
|
|||||||
|
|
||||||
|
|
||||||
func _on_message_edit_text_submitted(message: String) -> void:
|
func _on_message_edit_text_submitted(message: String) -> void:
|
||||||
|
if _message_edit.text == "":
|
||||||
|
return
|
||||||
_message_edit.text = ""
|
_message_edit.text = ""
|
||||||
_send_message.rpc(message)
|
_send_message.rpc(message)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_message_margin_minimum_size_changed() -> void:
|
||||||
|
_msg_scroll.set_deferred(
|
||||||
|
"scroll_vertical", int(_msg_scroll.get_v_scroll_bar().max_value) + 100
|
||||||
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user