83 lines
2.3 KiB
GDScript
83 lines
2.3 KiB
GDScript
extends Control
|
|
@export var address = "127.0.0.1"
|
|
@export var port = 8910
|
|
var peer
|
|
var nick = "NO_NICKNAME"
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
multiplayer.peer_connected.connect(peer_connected)
|
|
multiplayer.peer_disconnected.connect(peer_disconnected)
|
|
multiplayer.connected_to_server.connect(connected_to_server)
|
|
multiplayer.connection_failed.connect(connection_failed)
|
|
pass # Replace with function body.
|
|
|
|
func peer_connected(id):
|
|
print("Peer connected: " + str(id))
|
|
if multiplayer.is_server():
|
|
for p in GameManager.players:
|
|
SendPlayerInformation(p["name"], p["id"]).rpc_id(id)
|
|
func peer_disconnected(id):
|
|
print("Peer disconnected: " + str(id))
|
|
func connected_to_server():
|
|
print("Connected to server :)")
|
|
SendPlayerInformation(nick, multiplayer.get_unique_id())
|
|
func connection_failed():
|
|
print("Disconnected from server :(")
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta):
|
|
pass
|
|
|
|
@rpc("any_peer")
|
|
func SendPlayerInformation(name, id):
|
|
print("got info on " + str(id))
|
|
var sender_id = multiplayer.get_remote_sender_id()
|
|
#TODO: clients to only accept data from server
|
|
print(" from " + str(sender_id))
|
|
if !GameManager.players.has(id):
|
|
GameManager.players[id] ={
|
|
"name" : name,
|
|
"id" : id,
|
|
"score": 0
|
|
}
|
|
if multiplayer.is_server():
|
|
for i in GameManager.Players:
|
|
SendPlayerInformation.rpc(GameManager.Players[i].name, i)
|
|
|
|
@rpc("any_peer","call_local")
|
|
func StartGame():
|
|
var scene = load("res://test_map.tscn").instantiate()
|
|
get_tree().root.add_child(scene)
|
|
self.hide()
|
|
|
|
func _on_host_button_down():
|
|
peer = ENetMultiplayerPeer.new()
|
|
var err = peer.create_server(port, 32)
|
|
if err != OK:
|
|
print("Error Starting Server :(")
|
|
return
|
|
multiplayer.set_multiplayer_peer(peer)
|
|
print("Waiting for players...")
|
|
|
|
func _on_join_button_down():
|
|
peer = ENetMultiplayerPeer.new()
|
|
peer.create_client(address, port)
|
|
multiplayer.set_multiplayer_peer(peer)
|
|
|
|
|
|
func _on_start_button_down():
|
|
StartGame.rpc()
|
|
|
|
|
|
func _on_apply_button_down():
|
|
get_node("Apply").disabled = true
|
|
nick = $Nickname.text
|
|
if peer.is_connected():
|
|
SendPlayerInformation(nick, multiplayer.get_unique_id())
|
|
pass # Replace with function body.
|
|
|
|
|
|
func _on_nickname_text_changed():
|
|
if $Apply.disabled && $Nickname.text != nick:
|
|
$Apply.disabled = false
|