68 lines
2.1 KiB
GDScript
68 lines
2.1 KiB
GDScript
extends PanelContainer
|
|
## 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: TextureButton = %DMBtn
|
|
@onready var _accept_btn: TextureButton = %AcceptBtn
|
|
@onready var _decline_btn: TextureButton = %DeclineBtn
|
|
@onready var _remove_btn: TextureButton = %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
|
|
|
|
_dm_btn.visible = false
|
|
_accept_btn.visible = false
|
|
_decline_btn.visible = false
|
|
_remove_btn.visible = false
|
|
_state_label.visible = false
|
|
|
|
match state:
|
|
-1: # Search result (Not friend)
|
|
_accept_btn.visible = true
|
|
if not _accept_btn.pressed.is_connected(_on_accept):
|
|
_accept_btn.pressed.connect(_on_accept)
|
|
FriendManager.STATE_FRIEND:
|
|
_state_label.visible = true
|
|
_dm_btn.visible = true
|
|
_remove_btn.visible = true
|
|
if not _dm_btn.pressed.is_connected(_on_dm):
|
|
_dm_btn.pressed.connect(_on_dm)
|
|
if not _remove_btn.pressed.is_connected(_on_remove):
|
|
_remove_btn.pressed.connect(_on_remove)
|
|
FriendManager.STATE_INVITE_OUT:
|
|
_state_label.text = "(invite sent)"
|
|
_state_label.visible = true
|
|
FriendManager.STATE_INVITE_IN:
|
|
_state_label.text = "Incoming Request"
|
|
_state_label.visible = true
|
|
_accept_btn.visible = true
|
|
_decline_btn.visible = true
|
|
if not _accept_btn.pressed.is_connected(_on_accept):
|
|
_accept_btn.pressed.connect(_on_accept)
|
|
if not _decline_btn.pressed.is_connected(_on_remove):
|
|
_decline_btn.pressed.connect(_on_remove)
|
|
|
|
func _on_dm():
|
|
_panel.call("open_dm", _user_id, _username)
|
|
|
|
func _on_remove():
|
|
FriendManager.remove_friend(_user_id)
|
|
queue_free()
|
|
|
|
func _on_accept():
|
|
FriendManager.add_friend_by_id(_user_id)
|
|
_accept_btn.visible = false
|
|
_decline_btn.visible = false
|
|
_dm_btn.visible = true
|
|
_remove_btn.visible = true
|
|
_state_label.text = "LAST ONLINE: Just now"
|