WIP: create chat-messages from resources, calculate chat message size
This commit is contained in:
parent
ccd36d0d59
commit
5755b65545
|
|
@ -59,25 +59,35 @@ theme = SubResource("Theme_w8y7q")
|
|||
layout_mode = 0
|
||||
offset_right = 582.0
|
||||
offset_bottom = 1082.0
|
||||
theme = SubResource("Theme_w8y7q")
|
||||
script = ExtResource("4_n65mw")
|
||||
messages = Array[ExtResource("5_1hd2w")]([SubResource("Resource_iwd5k"), SubResource("Resource_1hd2w"), SubResource("Resource_w8y7q")])
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer"]
|
||||
[node name="Template" type="ScrollContainer" parent="."]
|
||||
layout_mode = 2
|
||||
offset_left = 1061.0
|
||||
offset_top = 78.0
|
||||
offset_right = 1643.0
|
||||
offset_bottom = 702.0
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="Template"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="RichTextLabel2" type="RichTextLabel" parent="ScrollContainer/VBoxContainer"]
|
||||
[node name="RichTextLabel2" type="RichTextLabel" parent="Template/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
theme = SubResource("Theme_w8y7q")
|
||||
bbcode_enabled = true
|
||||
text = "Dies ist eine Telegram-Message
|
||||
text = "Dies ist eine Telegram-Message.
|
||||
Ich schreibe mal etwas länger, ob zu sehen,
|
||||
ob der Bums irgendwann umbricht.
|
||||
[i]8:12 PM[/i]"
|
||||
fit_content = true
|
||||
scroll_active = false
|
||||
autowrap_mode = 0
|
||||
|
||||
[node name="RichTextLabel3" type="RichTextLabel" parent="ScrollContainer/VBoxContainer"]
|
||||
[node name="RichTextLabel3" type="RichTextLabel" parent="Template/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme = SubResource("Theme_w8y7q")
|
||||
bbcode_enabled = true
|
||||
|
|
@ -85,7 +95,7 @@ text = "Dies ist eine Telegram-Message
|
|||
[i]8:12 PM[/i]"
|
||||
fit_content = true
|
||||
|
||||
[node name="RichTextLabel4" type="RichTextLabel" parent="ScrollContainer/VBoxContainer"]
|
||||
[node name="RichTextLabel4" type="RichTextLabel" parent="Template/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme = SubResource("Theme_w8y7q")
|
||||
bbcode_enabled = true
|
||||
|
|
@ -93,7 +103,7 @@ text = "Dies ist eine Telegram-Message
|
|||
[i]8:12 PM[/i]"
|
||||
fit_content = true
|
||||
|
||||
[node name="RichTextLabel5" type="RichTextLabel" parent="ScrollContainer/VBoxContainer"]
|
||||
[node name="RichTextLabel5" type="RichTextLabel" parent="Template/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme = SubResource("Theme_w8y7q")
|
||||
bbcode_enabled = true
|
||||
|
|
@ -102,7 +112,7 @@ text = "Dies ist eine Telegram-Message
|
|||
fit_content = true
|
||||
horizontal_alignment = 2
|
||||
|
||||
[node name="RichTextLabel6" type="RichTextLabel" parent="ScrollContainer/VBoxContainer"]
|
||||
[node name="RichTextLabel6" type="RichTextLabel" parent="Template/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme = SubResource("Theme_w8y7q")
|
||||
bbcode_enabled = true
|
||||
|
|
@ -110,12 +120,11 @@ text = "Dies ist eine Telegram-Message
|
|||
[i]8:12 PM[/i]"
|
||||
fit_content = true
|
||||
|
||||
[node name="RichTextLabel" type="RichTextLabel" parent="ScrollContainer/VBoxContainer"]
|
||||
[node name="RichTextLabel" type="RichTextLabel" parent="Template/VBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme = SubResource("Theme_w8y7q")
|
||||
bbcode_enabled = true
|
||||
text = "[] [] [] [] []
|
||||
Dies ist eine Telegram-Message, die deutlich länger ist, als die vorherige, um das mal abzuschätzen.
|
||||
text = "Dies ist eine Telegram-Message, die deutlich länger ist, als die vorherige, um das mal abzuschätzen.
|
||||
[i]8:12 PM[/i]"
|
||||
fit_content = true
|
||||
|
|
|
|||
|
|
@ -2,3 +2,30 @@
|
|||
class_name ChatView extends ScrollContainer
|
||||
|
||||
@export var messages: Array[ChatMessage]
|
||||
|
||||
var v_box: VBoxContainer
|
||||
|
||||
func _ready() -> void:
|
||||
v_box = VBoxContainer.new()
|
||||
add_child(v_box, false, Node.INTERNAL_MODE_BACK)
|
||||
rebuild()
|
||||
|
||||
func rebuild():
|
||||
for child in v_box.get_children():
|
||||
child.free()
|
||||
|
||||
var text_server: = TextServerManager.get_primary_interface()
|
||||
|
||||
for message in messages:
|
||||
var shaped_tex: RID = text_server.create_shaped_text(TextServer.DIRECTION_AUTO, TextServer.ORIENTATION_HORIZONTAL)
|
||||
text_server.shaped_text_add_string(shaped_tex, message.text, [theme.default_font.get_rid()], theme.default_base_scale)
|
||||
|
||||
text_server.shaped_text_fit_to_width(shaped_tex, size.x)
|
||||
|
||||
var label: = RichTextLabel.new()
|
||||
label.custom_minimum_size = text_server.shaped_text_get_size(shaped_tex) + Vector2( 16, 16 )
|
||||
|
||||
label.text = message.text
|
||||
label.size_flags_horizontal = Control.SIZE_SHRINK_END if message.is_own_message else Control.SIZE_SHRINK_BEGIN
|
||||
|
||||
v_box.add_child(label)
|
||||
|
|
|
|||
Loading…
Reference in New Issue