webrtc_signaling/demo/client_ui.gd
2024-03-11 22:08:35 +01:00

80 lines
1.9 KiB
GDScript

extends Control
@onready var client = $Client
@onready var host = $VBoxContainer/Connect/Host
@onready var room = $VBoxContainer/Connect/RoomSecret
@onready var mesh = $VBoxContainer/Connect/Mesh
func _ready():
client.lobby_joined.connect(self._lobby_joined)
client.lobby_sealed.connect(self._lobby_sealed)
client.connected.connect(self._connected)
client.disconnected.connect(self._disconnected)
multiplayer.connected_to_server.connect(self._mp_server_connected)
multiplayer.connection_failed.connect(self._mp_server_disconnect)
multiplayer.server_disconnected.connect(self._mp_server_disconnect)
multiplayer.peer_connected.connect(self._mp_peer_connected)
multiplayer.peer_disconnected.connect(self._mp_peer_disconnected)
@rpc("any_peer", "call_local")
func ping(argument):
_log("[Multiplayer] Ping from peer %d: arg: %s" % [multiplayer.get_remote_sender_id(), argument])
func _mp_server_connected():
_log("[Multiplayer] Server connected (I am %d)" % client.rtc_mp.get_unique_id())
func _mp_server_disconnect():
_log("[Multiplayer] Server disconnected (I am %d)" % client.rtc_mp.get_unique_id())
func _mp_peer_connected(id: int):
_log("[Multiplayer] Peer %d connected" % id)
func _mp_peer_disconnected(id: int):
_log("[Multiplayer] Peer %d disconnected" % id)
func _connected(id):
_log("[Signaling] Server connected with ID: %d" % id)
func _disconnected():
_log("[Signaling] Server disconnected: %d - %s" % [client.code, client.reason])
func _lobby_joined(lobby):
_log("[Signaling] Joined lobby %s" % lobby)
func _lobby_sealed():
_log("[Signaling] Lobby has been sealed")
func _log(msg):
print(msg)
$VBoxContainer/TextEdit.text += str(msg) + "\n"
func _on_peers_pressed():
_log(multiplayer.get_peers())
func _on_ping_pressed():
ping.rpc(randf())
func _on_seal_pressed():
client.seal_lobby()
func _on_start_pressed():
client.start(host.text, room.text, mesh.button_pressed)
func _on_stop_pressed():
client.stop()