diff options
Diffstat (limited to 'UI/lobby.gd')
-rw-r--r-- | UI/lobby.gd | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/UI/lobby.gd b/UI/lobby.gd deleted file mode 100644 index f7d8405..0000000 --- a/UI/lobby.gd +++ /dev/null @@ -1,135 +0,0 @@ -extends Control - - -signal joined - -var current_map_idx := 0 - -var settings := {} - -@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) - multiplayer.peer_connected.connect(_on_peer_connected) - multiplayer.peer_disconnected.connect(_on_peer_disconnected) - - # 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_peer_connected(id): - Network._on_peer_connected(id) -func _on_peer_disconnected(id): - Network._on_peer_disconnected(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 packed_scene = %Maps.get_child(current_map_idx).get_meta("map_scene") - var scene = packed_scene.instantiate() - - for setting in settings: - scene[setting] = settings[setting] - - Client.change_scene_to_instance(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") - - # settings - for child in %Settings.get_children(): - child.queue_free() - if node.get_meta("settings"): - var scene = node.get_meta("map_scene").instantiate() - for setting in node.get_meta("settings", []): - settings[setting] = scene[setting] - var control = preload("res://UI/lobby_setting.tscn").instantiate() - control.label = setting - control.value = settings[setting] - control.disabled = !multiplayer.is_server() - if multiplayer.is_server(): - control.value_changed.connect(func(value): - set_setting.rpc(setting, value) - ) - %Settings.add_child(control) - - node.add_theme_color_override("font_color", Color(1.0, 1.0, 1.0, 1.0)) - %Thumbnail.texture = thumbnail - - -@rpc("authority", "call_local") -func set_setting(key: String, value: Variant): - settings[key] = value - - if not multiplayer.is_server(): - %Settings.get_node(key).value = value |