You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.2 KiB
GDScript

extends Node3D
const Player := preload("res://player.tscn")
@onready
var ui_main_menu := $UIMainMenu
@onready
var players := $Players
func _ready():
pass
func _process(_delta):
pass
func _on_button_start_as_server_pressed():
var peer := ENetMultiplayerPeer.new()
peer.create_server(9080, 10)
peer.peer_connected.connect(self._on_peer_connect)
peer.peer_disconnected.connect(self._on_peer_disconnected)
multiplayer.multiplayer_peer = peer
ui_main_menu.visible = false
# Server connected
_on_peer_connect(get_multiplayer_authority())
func _on_button_start_as_client_pressed():
var peer := ENetMultiplayerPeer.new()
peer.create_client("localhost", 9080)
multiplayer.multiplayer_peer = peer
ui_main_menu.visible = false
func _on_peer_connect(id):
print("(server) peer connected: ", id)
var player: Node3D = Player.instantiate()
player.name = str(id)
player.set_multiplayer_authority(id)
player.global_transform = players.global_transform.translated(Vector3.UP * 3)
players.add_child(player, true)
func _on_peer_disconnected(id):
print("(server) peer disconnected: ", id)
var player := players.get_node_or_null(str(id))
if player:
player.queue_free()