This commit is contained in:
Marek Le
2026-05-09 23:37:26 +02:00
parent 6d28b04c12
commit 2d4002bd3f
263 changed files with 5250 additions and 4597 deletions

55
scenes/menu/lobby.gd Normal file
View File

@@ -0,0 +1,55 @@
extends Control
@onready var player_list: ItemList = %PlayerList
@onready var status_label: Label = %StatusLabel
@onready var start_button: Button = %StartButton
func _ready() -> void:
Net.peer_connected.connect(_refresh)
Net.peer_disconnected.connect(_refresh)
Net.server_disconnected.connect(_on_disconnect)
start_button.visible = Net.is_host()
if Net.is_host():
status_label.text = "Hosting on port %d — press Start when ready" % Net.DEFAULT_PORT
else:
status_label.text = "Joined — waiting for host to start"
_refresh(0)
func _refresh(_id: int) -> void:
player_list.clear()
var ids: Array = []
if multiplayer.multiplayer_peer == null:
ids.append(1)
else:
ids.append(multiplayer.get_unique_id())
for p in multiplayer.get_peers():
if not p in ids:
ids.append(p)
ids.sort()
for id in ids:
var n: String = Net.player_names.get(id, "Player %d" % id)
player_list.add_item("[%d] %s" % [id, n])
func _on_start_pressed() -> void:
if not Net.is_host():
return
_start_world.rpc()
@rpc("authority", "call_local", "reliable")
func _start_world() -> void:
GameState.change_scene(GameState.SCENE_WORLD)
var _leaving: bool = false
func _on_back_pressed() -> void:
if _leaving:
return
_leaving = true
Net.disconnect_net()
GameState.change_scene(GameState.SCENE_MAIN_MENU)
func _on_disconnect() -> void:
if _leaving:
return
_leaving = true
GameState.change_scene(GameState.SCENE_MAIN_MENU)