2020-06-14 00:29:01 +02:00
|
|
|
extends Spatial
|
|
|
|
|
2020-06-14 00:46:44 +02:00
|
|
|
export var is_server = true
|
2020-06-14 00:29:01 +02:00
|
|
|
|
|
|
|
export var SERVER_PORT = 9999
|
|
|
|
export var SERVER_IP = "172.28.162.191"
|
|
|
|
export var MAX_PLAYERS = 10
|
|
|
|
|
2020-06-14 20:59:37 +02:00
|
|
|
var player_scene = preload("res://Player.tscn")
|
|
|
|
|
2020-06-14 00:29:01 +02:00
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
|
|
func _ready():
|
2020-06-14 02:17:43 +02:00
|
|
|
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
2020-06-14 15:58:05 +02:00
|
|
|
initialize()
|
|
|
|
|
2020-06-14 01:13:43 +02:00
|
|
|
debug_connection_status()
|
|
|
|
|
|
|
|
func debug_connection_status():
|
2020-06-14 15:58:05 +02:00
|
|
|
#if (get_tree().network_peer.get_connection_status() == NetworkedMultiplayerPeer.CONNECTION_CONNECTED):
|
|
|
|
# print("We have connected succesfully")
|
2020-06-14 01:13:43 +02:00
|
|
|
|
|
|
|
if (get_tree().network_peer.get_connection_status() == NetworkedMultiplayerPeer.CONNECTION_CONNECTING):
|
|
|
|
print("We are trying to connect")
|
2020-06-14 00:29:01 +02:00
|
|
|
|
2020-06-14 15:58:05 +02:00
|
|
|
func initialize():
|
|
|
|
var peer
|
|
|
|
|
|
|
|
if is_server:
|
|
|
|
peer = initialize_server()
|
|
|
|
else:
|
|
|
|
peer = initialize_client()
|
|
|
|
|
|
|
|
get_tree().network_peer = peer
|
|
|
|
|
|
|
|
|
2020-06-14 00:29:01 +02:00
|
|
|
func initialize_server():
|
2020-06-14 01:13:43 +02:00
|
|
|
var peer = NetworkedMultiplayerENet.new()
|
2020-06-14 00:29:01 +02:00
|
|
|
peer.create_server(SERVER_PORT, MAX_PLAYERS)
|
2020-06-14 20:59:37 +02:00
|
|
|
get_tree().connect("network_peer_connected", self, "on_peer_connected")
|
2020-06-14 21:23:34 +02:00
|
|
|
add_player(get_tree().get_network_unique_id())
|
2020-06-14 15:58:05 +02:00
|
|
|
return peer
|
2020-06-14 00:29:01 +02:00
|
|
|
|
|
|
|
func initialize_client():
|
2020-06-14 01:13:43 +02:00
|
|
|
var peer = NetworkedMultiplayerENet.new()
|
2020-06-14 00:29:01 +02:00
|
|
|
peer.create_client(SERVER_IP, SERVER_PORT)
|
2020-06-14 20:59:37 +02:00
|
|
|
get_tree().connect("connected_to_server", self, "on_connection_established")
|
|
|
|
get_tree().connect("connection_failed", self, "on_connection_failed")
|
2020-06-14 15:58:05 +02:00
|
|
|
return peer
|
|
|
|
|
2020-06-14 21:23:34 +02:00
|
|
|
func get_players():
|
|
|
|
return $Players.get_children()
|
|
|
|
|
|
|
|
remote func check_players(players):
|
2020-06-14 21:40:50 +02:00
|
|
|
for player in parse_json(players):
|
2020-06-14 21:23:34 +02:00
|
|
|
if not $Players.has_node(player.name):
|
|
|
|
$Players.add_child(player)
|
|
|
|
|
|
|
|
func add_player(id):
|
2020-06-14 20:59:37 +02:00
|
|
|
var player = player_scene.instance()
|
2020-06-14 21:23:34 +02:00
|
|
|
|
|
|
|
player.name = str(id)
|
2020-06-14 21:34:17 +02:00
|
|
|
$Players.add_child(player)
|
2020-06-14 20:59:37 +02:00
|
|
|
player.set_network_master(id)
|
2020-06-14 21:23:34 +02:00
|
|
|
player.translation += Vector3(0.0, 3.0, 0.0)
|
|
|
|
|
2020-06-14 21:40:50 +02:00
|
|
|
var player_json = to_json(get_players())
|
|
|
|
rpc("check_players", player_json)
|
2020-06-14 21:23:34 +02:00
|
|
|
|
|
|
|
func on_peer_connected(id):
|
|
|
|
print("Peer connected with id ", id)
|
|
|
|
|
|
|
|
add_player(id)
|
|
|
|
|
2020-06-14 15:58:05 +02:00
|
|
|
|
|
|
|
func on_connection_established():
|
|
|
|
print("Connection has been established")
|
|
|
|
|
|
|
|
func on_connection_failed():
|
|
|
|
print("Connection has failed")
|