Added signal for when we start expanding, and added it to the tween callback.
100 lines
3.1 KiB
GDScript
100 lines
3.1 KiB
GDScript
extends PanelContainer
|
|
|
|
const CHEVRONS = [
|
|
preload("res://UI/assets/font_awesome/chevron-left.svg"),
|
|
preload("res://UI/assets/font_awesome/chevron-right.svg")
|
|
]
|
|
@export var expanded: bool = false
|
|
|
|
signal extra_expanding(is_expanding: bool)
|
|
signal extra_expanded(is_expanded: bool)
|
|
|
|
var is_extra_panel_expanded: bool
|
|
var tw_expand: Tween
|
|
|
|
var t_user: TwitchUser
|
|
var chatter: Chatter
|
|
|
|
func _ready() -> void:
|
|
toggle_extra_panel(expanded)
|
|
%ExpandExtraInfo.pressed.connect(func(): toggle_extra_panel(!is_extra_panel_expanded))
|
|
%LoadingSimple.hide()
|
|
|
|
func show_busy() -> void:
|
|
%LoadingSimple.show()
|
|
|
|
func show_normal() -> void:
|
|
%LoadingSimple.hide()
|
|
|
|
func populate_from_twitch_user(_t_user: TwitchUser) -> void:
|
|
%LoadingSimple.show()
|
|
clear()
|
|
t_user = _t_user
|
|
if not t_user: return
|
|
%Username.text = t_user.login
|
|
%DisplayName.text = t_user.display_name
|
|
%UserId.text = t_user.id
|
|
%ProfilePictureURL.text = t_user.profile_image_url
|
|
if t_user.profile_image_url:
|
|
%AvatarImg.texture = await Globals.twitcher.media.load_profile_image(t_user)
|
|
else:
|
|
%AvatarImg.texture = preload("res://UI/assets/twitch_user_profile_pic.png")
|
|
|
|
%Type.text = t_user.type
|
|
%ChannelDescription.text = t_user.description
|
|
%BroadcasterType.text = t_user.broadcaster_type
|
|
%OfflineImageURL.text = t_user.offline_image_url
|
|
%ViewCount.text = str(t_user.view_count)
|
|
%LoadingSimple.hide()
|
|
|
|
func populate_from_chatter(_chatter: Chatter) -> void:
|
|
%LoadingSimple.show()
|
|
clear()
|
|
chatter = _chatter
|
|
if not chatter: return
|
|
t_user = await Globals.twitcher.get_user_by_id(chatter.twitch_id)
|
|
%Username.text = t_user.login
|
|
%DisplayName.text = t_user.display_name
|
|
%UserId.text = t_user.id
|
|
%ProfilePictureURL.text = t_user.profile_image_url
|
|
if t_user.profile_image_url:
|
|
%AvatarImg.texture = await Globals.twitcher.media.load_profile_image(t_user)
|
|
else:
|
|
%AvatarImg.texture = preload("res://UI/assets/twitch_user_profile_pic.png")
|
|
|
|
%Type.text = t_user.type
|
|
%ChannelDescription.text = t_user.description
|
|
%BroadcasterType.text = t_user.broadcaster_type
|
|
%OfflineImageURL.text = t_user.offline_image_url
|
|
%ViewCount.text = str(t_user.view_count)
|
|
%LoadingSimple.hide()
|
|
|
|
func clear() -> void:
|
|
%AvatarImg.texture = preload("res://UI/assets/twitch_user_profile_pic.png")
|
|
%Username.text = ""
|
|
%DisplayName.text = ""
|
|
%UserId.text = ""
|
|
%ProfilePictureURL.text = ""
|
|
%ChatColor.color = Color.TRANSPARENT
|
|
|
|
%Type.text = ""
|
|
%ChannelDescription.text = ""
|
|
%BroadcasterType.text = ""
|
|
%OfflineImageURL.text = ""
|
|
%ViewCount.text = ""
|
|
|
|
func toggle_extra_panel(val: bool) -> void:
|
|
is_extra_panel_expanded = val
|
|
%ExpandExtraInfo.icon = CHEVRONS[0] if is_extra_panel_expanded else CHEVRONS[1]
|
|
var min_size_x: float = 400 if is_extra_panel_expanded else 0
|
|
if tw_expand:
|
|
tw_expand.kill()
|
|
%ExtraInfo.show()
|
|
tw_expand = create_tween()
|
|
tw_expand.tween_callback(extra_expanding.emit.bind(is_extra_panel_expanded))
|
|
tw_expand.set_ease(Tween.EASE_OUT)
|
|
tw_expand.set_trans(Tween.TRANS_CUBIC)
|
|
tw_expand.tween_property(%ExtraInfo, ^"custom_minimum_size:x", min_size_x, 0.3)
|
|
if !is_extra_panel_expanded:
|
|
tw_expand.tween_property(%ExtraInfo, ^"visible", false, 0.0)
|
|
tw_expand.tween_callback(extra_expanded.emit.bind(is_extra_panel_expanded))
|