64 lines
1.7 KiB
GDScript
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())
|