diary/user_interface/call_panel/call_member.gd
2022-06-28 21:51:50 +02:00

84 lines
2.3 KiB
GDScript

extends CenterContainer
const PROFILE_IMAGE_RECT_MASK = preload("res://user_interface/utility_controls/profile_image_rect/profile_image_rect_mask.png")
const PROFILE_IMAGE_RECT_MASK_WITH_MUTED_SLOT = preload("res://user_interface/call_panel/profile_image_rect_mask_with_muted_slot.png")
onready var mic_indicator = get_node("MicIndicator")
onready var profile_picture = get_node("ProfilePicture")
onready var muted_indicator = get_node("ProfilePicture/MutedIndicator")
var associated_user: User setget _set_associated_user
var picture_size: int setget _set_picture_size
var visibility: float setget _set_visibility
func _ready():
# warning-ignore:return_value_discarded
Call.connect("mute_toggled", self, "_on_mute_toggled")
# warning-ignore:return_value_discarded
Call.connect("accepted", self, "_check_if_muted")
# warning-ignore:return_value_discarded
Call.connect("closed", self, "_check_if_muted")
# warning-ignore:return_value_discarded
Call.connect(
"microphone_input_state_changed",
self,
"_on_microphone_input_state_changed"
)
func _check_if_muted():
if _is_valid():
if not Call.is_muted:
_change_mute_indication(false)
return
if name == "RightMember" and not Call.is_accepted:
_change_mute_indication(false)
return
_change_mute_indication(true)
func _check_if_microphone_input():
if _is_valid() and not Call.is_muted:
if not (Users.get_helper().is_current() and not Call.is_accepted):
mic_indicator.visible = Call.microphone_input_detected
return
mic_indicator.visible = false
func _change_mute_indication(muted):
if muted:
profile_picture.mask = PROFILE_IMAGE_RECT_MASK_WITH_MUTED_SLOT
muted_indicator.visible = true
else:
profile_picture.mask = PROFILE_IMAGE_RECT_MASK
muted_indicator.visible = false
func _on_mute_toggled(_value):
_check_if_microphone_input()
_check_if_muted()
func _on_microphone_input_state_changed():
_check_if_microphone_input()
func _is_valid():
return associated_user == Users.get_primary()
func _set_associated_user(user):
associated_user = user
profile_picture.texture = user.profile_image
_check_if_muted()
_check_if_microphone_input()
func _set_picture_size(value):
profile_picture.rect_min_size = Vector2(value, value)
func _set_visibility(value):
profile_picture.self_modulate.a = value