51 lines
1.5 KiB
GDScript3
51 lines
1.5 KiB
GDScript3
|
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()
|