Files
tekton/scripts/ui/friend_row.gd
T
2026-04-29 01:36:49 +08:00

36 lines
1.2 KiB
GDScript

extends HBoxContainer
## FriendRow — Single row in the friends list inside SocialPanel.
@onready var _name_label: Label = %NameLabel
@onready var _state_label: Label = %StateLabel
@onready var _dm_btn: Button = %DMBtn
@onready var _accept_btn: Button = %AcceptBtn
@onready var _decline_btn: Button = %DeclineBtn
@onready var _remove_btn: Button = %RemoveBtn
var _user_id: String
var _username: String
var _panel: Control # reference to SocialPanel for opening DM
func setup(uid: String, uname: String, state: int, panel: Control) -> void:
_user_id = uid
_username = uname
_panel = panel
_name_label.text = uname
match state:
FriendManager.STATE_FRIEND:
_dm_btn.visible = true
_remove_btn.visible = true
_dm_btn.pressed.connect(func(): panel.call("_open_dm", uid, uname))
_remove_btn.pressed.connect(func(): FriendManager.remove_friend(uid))
FriendManager.STATE_INVITE_OUT:
_state_label.text = "(invite sent)"
_state_label.visible = true
FriendManager.STATE_INVITE_IN:
_accept_btn.visible = true
_decline_btn.visible = true
_accept_btn.pressed.connect(func(): FriendManager.add_friend_by_id(uid))
_decline_btn.pressed.connect(func(): FriendManager.remove_friend(uid))