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
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()
|
|
|