extends Node const PORT = 1280 const IP_ADDRESS = "127.0.0.1" const MAX_CLIENTS = 5 var in_game_scene := preload("res://scenes/in_game.tscn") var main_menu_scene := preload("res://scenes/main_menu.tscn") var runner_client_selection := true var runner_dict := {} func _ready() -> void: set_process(false) set_physics_process(false) if OS.has_feature("dedicated_server"): get_tree().change_scene_to_packed.call_deferred(in_game_scene) var peer = ENetMultiplayerPeer.new() peer.create_server(PORT, MAX_CLIENTS) multiplayer.multiplayer_peer = peer multiplayer.peer_connected.connect(_on_connect) multiplayer.peer_disconnected.connect(_on_disconnect) else: get_tree().change_scene_to_packed.call_deferred(main_menu_scene) func connect_to_ip(runner: bool = true, ip: String = "") -> void: if ip.is_empty(): ip = IP_ADDRESS runner_client_selection = runner print("Connecting to: %s" % ip) var peer = ENetMultiplayerPeer.new() peer.create_client(ip, PORT) multiplayer.multiplayer_peer = peer multiplayer.connected_to_server.connect(_on_connect_client) multiplayer.connection_failed.connect(_on_disconnect_client) multiplayer.server_disconnected.connect(_on_server_closed_client) func _on_connect(id: int) -> void: print("Client ID #%s connected" % id) func _on_disconnect(id: int) -> void: print("Client ID #%s disconnected" % id) if not multiplayer.is_server(): return get_tree().get_current_scene().despawn_player(id) func _on_connect_client() -> void: request_is_runner.rpc_id(1, runner_client_selection) print("[%s] Connected to server" % multiplayer.get_unique_id()) func _on_disconnect_client() -> void: print("[%s] Disconnected" % multiplayer.get_unique_id()) func _on_server_closed_client() -> void: print("[%s] Server closed" % multiplayer.get_unique_id()) @rpc("any_peer", "call_remote", "reliable") func request_is_runner(runner: bool) -> void: if not multiplayer.is_server(): return var id := multiplayer.get_remote_sender_id() runner_dict[id] = runner print("Runner Dict: %s" % runner_dict) get_tree().get_current_scene().spawn_player(id, runner)