extends Node var player_manager: PlayerManager = PlayerManager.new() # Called when the node enters the scene tree for the first time. func _ready() -> void: var map_dir := DirAccess.open("res://scenes/maps/maps/") if map_dir: map_dir.list_dir_begin() var file_name = map_dir.get_next() while file_name != "": $UI/CreateServer/Maps.add_item(file_name) file_name = map_dir.get_next() # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: pass func _on_create_server_pressed() -> void: $UI/CreateServer.visible = true func _on_join_server_pressed() -> void: $UI/JoinServer.visible = true func _on_create_button_pressed() -> void: var chosen_map_index = $UI/CreateServer/Maps.get_selected_items()[0] var chosen_map = $UI/CreateServer/Maps.get_item_text(chosen_map_index) var path_tmpl := "res://scenes/maps/maps/%s" var path := path_tmpl % chosen_map GameServerManager.current_map = path var err := GameServerManager.create_server(player_manager) if err != OK: print("couldn't create a server") $UI.hide() change_level.call_deferred(load(path)) # Call this function deferred and only on the main authority (server). func change_level(scene: PackedScene): # Remove old level if any. var level = $LevelLoader/CurrentLevel for c in level.get_children(): level.remove_child(c) c.queue_free() # Add new level. level.add_child(scene.instantiate()) func _on_text_edit_text_changed() -> void: player_manager.name = $UI/TextEdit.text func _on_join_button_pressed() -> void: $UI.hide() GameServerManager.join_server(player_manager, $UI/JoinServer/IP.text, $UI/JoinServer/Port.text.to_int())