extends Control signal joined var current_map_idx := 0 @onready var list: VBoxContainer = %PlayersList func _ready() -> void: if not multiplayer.is_server(): %StartButton.disabled = true #%StartButton.queue_free() %PlayersList.remove_child(%PlayersList.get_child(0)) %PlayersList.remove_child(%PlayersList.get_child(0)) if multiplayer.is_server(): set_map.rpc(current_map_idx) joined.connect(func(): set_map.rpc(current_map_idx) ) for idx in %Maps.get_child_count(): %Maps.get_child(idx).pressed.connect(func(): set_map.rpc(idx) ) if not multiplayer.is_server(): set_map(0) for node: Control in %Maps.get_children(): node.mouse_filter = Control.MOUSE_FILTER_IGNORE Network.players_changed.connect(update_players) update_players() multiplayer.peer_disconnected.connect(remove_player) # reset map texture for clean load %Thumbnail.texture = null set_map(current_map_idx) func update_players(): for id in Network.get_ordered_player_ids(): var player: Player = Network.get_player(id) var control: Control = list.get_node_or_null(str(id)) if not control: control = MarginContainer.new() control.name = str(id) var label = Label.new() label.add_theme_color_override("font_color", player.get_color()) if id == multiplayer.get_unique_id(): label.add_theme_color_override("font_outline_color", Color(0.75, 0.75, 0.75, 0.75)) label.add_theme_constant_override("outline_size", 10) control.add_child(label) list.add_child(control) joined.emit() control.get_child(0).text = str(player.username) control.get_child(0).tooltip_text = str(id) list.move_child(control, Network.get_ordered_player_ids().find(id) + 1) func remove_player(id): list.remove_child(list.get_node(str(id))) func _on_start_button_pressed() -> void: start.rpc() func _on_cancel_button_pressed() -> void: multiplayer.multiplayer_peer.close() get_tree().change_scene_to_file("res://UI/Start.tscn") @rpc("authority", "call_local") func start(): var scene = %Maps.get_child(current_map_idx).get_meta("map_scene") get_tree().change_scene_to_packed(scene) @rpc("authority", "call_local") func set_map(index: int): current_map_idx = index for node: Button in %Maps.get_children(): node.add_theme_color_override("font_color", Color(1.0, 1.0, 1.0, 0.5)) var node = %Maps.get_child(index) var thumbnail = node.get_meta("thumbnail") node.add_theme_color_override("font_color", Color(1.0, 1.0, 1.0, 1.0)) %Thumbnail.texture = thumbnail