XPilotGodot/Lobby/Lobby.gd

64 lines
1.7 KiB
GDScript

extends Node
const PORT = 12324
# Called when the node enters the scene tree for the first time.
func _ready():
var server_list = $Control/VBoxContainer/ServerList
server_list.set_column_title(0, "Server name")
server_list.set_column_title(1, "Address")
server_list.set_column_title(2, "Players")
var root = server_list.create_item()
var child = server_list.create_item(root)
child.set_text(0, "Localhost")
child.set_text(1, "Localhost")
child.set_text(2, "0/8")
child.set_text_alignment(2, HORIZONTAL_ALIGNMENT_RIGHT)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
func _on_host_pressed():
var peer = ENetMultiplayerPeer.new()
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()
func _on_local_pressed():
var server_address : String = "localhost"
if server_address == "":
OS.alert("Need a remote to connect to.")
return
var peer = ENetMultiplayerPeer.new()
peer.create_client(server_address, PORT)
if peer.get_connection_status() == MultiplayerPeer.CONNECTION_DISCONNECTED:
OS.alert("Failed to start multiplayer client")
return
multiplayer.multiplayer_peer = peer
start_game()
func _on_internet_pressed():
pass # Replace with function body.
func _on_quit_pressed():
get_tree().quit()
func start_game():
$Control.hide()
if multiplayer.is_server():
change_level.call_deferred(load("res://World/PlayingField.tscn"))
func change_level(scene: PackedScene):
# Remove old level if any.
var map = $Map
for c in map.get_children():
map.remove_child(c)
c.queue_free()
# Add new level.
map.add_child(scene.instantiate())