godot-webrtc-mplayer-testing/lobby.gd

70 lines
1.9 KiB
GDScript3
Raw Normal View History

2021-11-15 16:25:13 -06:00
extends Node2D
2021-11-17 13:57:45 -06:00
onready var peers = $MarginContainer/peers
2021-12-02 15:13:12 -06:00
onready var cursors = {}
2021-11-17 13:57:45 -06:00
2021-11-15 16:25:13 -06:00
func _ready():
2021-11-17 13:57:45 -06:00
Global.client.signaller.connect("peer_joined", self, "_peer_joined")
Global.client.signaller.connect("peer_left", self, "_peer_left")
Global.client.signaller.connect("lobby_left", self, "_lobby_left")
2021-12-02 15:13:12 -06:00
$MarginContainer/Label.text = "%s (%s)" % [Global.client.signaller.lobby_id, get_tree().get_network_unique_id()]
2021-11-17 16:24:00 -06:00
Global.client.signaller.connect("websocket_disconnected", self, "_signaller_disconnected")
2021-12-06 16:17:36 -06:00
$shifter.connect("mouse_entered", self, "do_ping")
2021-12-02 15:13:12 -06:00
_peer_joined([{
"id": Global.client.signaller.client_id,
"peerId": Global.client.signaller.peer_id,
"name": "You!",
}])
2021-11-15 16:25:13 -06:00
2021-12-06 16:17:36 -06:00
Global.client.signaller.request_peer_list()
2021-11-17 16:24:00 -06:00
func _signaller_disconnected():
Global.main_menu()
2021-11-15 16:25:13 -06:00
func _draw():
2021-12-02 15:13:12 -06:00
$text.text = JSON.print(Global.client.signaller)
2021-11-15 16:25:13 -06:00
2021-11-17 13:57:45 -06:00
func _peer_joined(joined_peers):
2021-12-06 16:17:36 -06:00
print("Joined Peers: %s" % joined_peers)
2021-11-17 13:57:45 -06:00
for i in range(len(joined_peers)):
var id = joined_peers[i]["id"]
2021-12-02 15:13:12 -06:00
var exists = false
for j in range(peers.get_item_count()):
if id == peers.get_item_metadata(j)["id"]:
exists = true
break
if !exists:
var peerId = joined_peers[i]["peerId"]
var name = joined_peers[i]["name"]
print("New Lobby Peer ID: %s, Name: %s, PeerID: %s" % [id, name, peerId])
peers.add_item("%s (%s)" % [name, peerId])
peers.set_item_metadata(peers.get_item_count() - 1, { "id": id })
2021-11-17 13:57:45 -06:00
func _peer_left(id):
for i in range(peers.get_item_count()):
if id == peers.get_item_metadata(i)["id"]:
peers.remove_item(i)
return
2021-11-15 16:25:13 -06:00
func _on_Button_pressed():
2021-12-02 15:13:12 -06:00
rpc("shift_cursor")
# move cursor a bit
remotesync func shift_cursor():
print("Shifting cursor...")
$shifter.rect_position.x += 10
2021-11-17 13:57:45 -06:00
2021-12-06 16:17:36 -06:00
func do_ping():
print(rpc("ping"))
remotesync func ping():
print("pinged")
return 0
2021-11-17 13:57:45 -06:00
func _lobby_left(_id):
Global.lobby_browser()
2021-12-02 15:13:12 -06:00
func _on_leave_button_pressed():
Global.lobby_browser()