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