80 lines
2.6 KiB
GDScript3
80 lines
2.6 KiB
GDScript3
|
extends PanelContainer
|
||
|
|
||
|
|
||
|
const CALL_REQUESTED_SOUND = preload("res://sounds/call_requested.wav")
|
||
|
const USER_JOINED_SOUND = preload("res://sounds/user_joined.wav")
|
||
|
const CALL_LEFT_SOUND = preload("res://sounds/call_left.wav")
|
||
|
|
||
|
const CONNECTION_DUMMY = preload("res://user_interface/call_panel/icons/connection_dummy.png")
|
||
|
const BAD_CONNECTION_DUMMY = preload("res://user_interface/call_panel/icons/bad_connection_dummy.png")
|
||
|
|
||
|
|
||
|
onready var label_members = get_node("VBoxContainer/LabelMembers")
|
||
|
onready var left_member = get_node("VBoxContainer/CenterContainer/HBoxContainer/LeftMember")
|
||
|
onready var right_member = get_node("VBoxContainer/CenterContainer/HBoxContainer/RightMember")
|
||
|
onready var ping_effect = get_node("VBoxContainer/CenterContainer/HBoxContainer/RightMember/PingEffect")
|
||
|
onready var connection_dummy = get_node("Dummies/ConnectionDummy")
|
||
|
onready var audio_stream_player = get_node("AudioStreamPlayer")
|
||
|
|
||
|
var until_accept_timer = 0.0
|
||
|
|
||
|
|
||
|
func _ready():
|
||
|
# warning-ignore:return_value_discarded
|
||
|
Call.connect("requested", self, "_on_call_requested")
|
||
|
# warning-ignore:return_value_discarded
|
||
|
Call.connect("closed", self, "_on_call_closed")
|
||
|
# warning-ignore:return_value_discarded
|
||
|
Users.connect("switched", self, "_on_user_switched")
|
||
|
|
||
|
|
||
|
func _process(delta):
|
||
|
if until_accept_timer > 0.0:
|
||
|
until_accept_timer -= delta
|
||
|
if until_accept_timer <= 0.0:
|
||
|
_accept_call()
|
||
|
|
||
|
|
||
|
func _on_call_requested():
|
||
|
left_member.picture_size = 120
|
||
|
left_member.visibility = 1.0
|
||
|
right_member.picture_size = 112
|
||
|
right_member.visibility = 0.65
|
||
|
ping_effect.timer = 1.2
|
||
|
ping_effect.visible = true
|
||
|
until_accept_timer = 0.8 + randf() * 3.0
|
||
|
audio_stream_player.stream = CALL_REQUESTED_SOUND
|
||
|
audio_stream_player.play()
|
||
|
|
||
|
|
||
|
func _on_call_closed():
|
||
|
left_member.picture_size = 112
|
||
|
left_member.visibility = 0.65
|
||
|
right_member.picture_size = 112
|
||
|
right_member.visibility = 0.65
|
||
|
ping_effect.visible = false
|
||
|
until_accept_timer = 0.0
|
||
|
connection_dummy.texture = BAD_CONNECTION_DUMMY
|
||
|
audio_stream_player.stream = CALL_LEFT_SOUND
|
||
|
audio_stream_player.play()
|
||
|
|
||
|
|
||
|
func _accept_call():
|
||
|
right_member.picture_size = 120
|
||
|
right_member.visibility = 1.0
|
||
|
ping_effect.visible = false
|
||
|
audio_stream_player.stream = USER_JOINED_SOUND
|
||
|
audio_stream_player.play()
|
||
|
connection_dummy.texture = CONNECTION_DUMMY
|
||
|
Call.is_accepted = true
|
||
|
right_member._check_if_microphone_input()
|
||
|
Call.emit_signal("accepted")
|
||
|
|
||
|
|
||
|
func _on_user_switched():
|
||
|
self_modulate = Users.get_current().call_background_color
|
||
|
left_member.associated_user = Users.get_current()
|
||
|
right_member.associated_user = Users.get_inactive()
|
||
|
label_members.text = Users.get_current().username + ", "
|
||
|
label_members.text += Users.get_inactive().username + "..."
|