amb-crawl/menu.gd

51 lines
1.5 KiB
GDScript

extends Control
const PORT=60001
signal lobby_join
func _ready():
# Start paused.
# This actually breaks the buttons lol
#get_tree().paused = true
# You can save bandwidth by disabling server relay and peer notifications.
#multiplayer.server_relay = false
# Automatically start the server in headless mode.
if DisplayServer.get_name() == "headless":
# Should attempt to pull port from config file
print("Automatically starting dedicated server.")
_on_host_pressed.call_deferred(true)
func _on_host_pressed(headless=false):
# Start as server.
var peer = ENetMultiplayerPeer.new()
var port = $Net/Options/port.text
if port=="": port=PORT
peer.create_server(port)
if peer.get_connection_status() == MultiplayerPeer.CONNECTION_DISCONNECTED:
OS.alert("Failed to start multiplayer server.")
return
multiplayer.multiplayer_peer = peer
start_game(headless)
func _on_join_pressed():
# Start as client.
var port = $Net/Options/port.text
if port=="": port=PORT
var txt : String = $Net/Options/address.text
if txt == "":
OS.alert("Need a remote to connect to.")
return
var peer = ENetMultiplayerPeer.new()
peer.create_client(txt, port)
if peer.get_connection_status() == MultiplayerPeer.CONNECTION_DISCONNECTED:
OS.alert("Failed to start multiplayer client.")
return
multiplayer.multiplayer_peer = peer
start_game() # Can't run a headless client lol what are you trying to bot the game
func start_game(headless=false):
if headless: return
emit_signal("lobby_join",multiplayer.get_unique_id(),$Net/pname/Name.text)
hide()