push project up sabs assets
This commit is contained in:
69
scripts/server_networking.gd
Normal file
69
scripts/server_networking.gd
Normal file
@@ -0,0 +1,69 @@
|
||||
class_name Server extends Node
|
||||
|
||||
|
||||
var peer: ENetMultiplayerPeer
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
pass
|
||||
|
||||
|
||||
func start_server(address: String = "0.0.0.0", port: int = 8080) -> void:
|
||||
if peer: return
|
||||
|
||||
push_warning("Server Starting... Address: ", address, " Port: ", port)
|
||||
|
||||
peer = ENetMultiplayerPeer.new()
|
||||
peer.set_bind_ip(address)
|
||||
|
||||
var state = peer.create_server(port)
|
||||
match state:
|
||||
OK:
|
||||
push_warning("Server Started: ", state)
|
||||
|
||||
multiplayer.multiplayer_peer = peer
|
||||
multiplayer.peer_connected.connect(server_client_connected)
|
||||
multiplayer.peer_disconnected.connect(server_client_disconnected)
|
||||
ERR_ALREADY_IN_USE:
|
||||
peer.close()
|
||||
peer = null
|
||||
start_server(address, port)
|
||||
ERR_CANT_CREATE:
|
||||
push_warning("Couldn't create server...")
|
||||
|
||||
func close_connection() -> void:
|
||||
push_warning("Server Closed...")
|
||||
|
||||
multiplayer.peer_connected.disconnect(server_client_connected)
|
||||
multiplayer.peer_disconnected.disconnect(server_client_disconnected)
|
||||
|
||||
peer.close()
|
||||
peer = null
|
||||
|
||||
func server_client_connected(id: int) -> void:
|
||||
push_warning("Client Connected... ID: ", id)
|
||||
|
||||
if not Globals.game_data.client1:
|
||||
Globals.game_data.client1 = id
|
||||
elif not Globals.game_data.client2:
|
||||
Globals.game_data.client2 = id
|
||||
|
||||
if Globals.game_data.client1 and Globals.game_data.client2:
|
||||
Globals.multiplayer_data.init_match()
|
||||
|
||||
# TODO: Add watch match feature...
|
||||
|
||||
func server_client_disconnected(id: int) -> void:
|
||||
push_warning("Client Disconnected... ID: ", id)
|
||||
|
||||
# TODO: Fix call structure
|
||||
#if id == Globals.game_data.client1:
|
||||
#LobbyNetworking.rpc_id(
|
||||
#Globals.game_data.client1,
|
||||
#"go_back_to_match_screen"
|
||||
#)
|
||||
#elif id == Globals.game_data.client2:
|
||||
#LobbyNetworking.rpc_id(
|
||||
#Globals.game_data.client2,
|
||||
#"go_back_to_match_screen"
|
||||
#)
|
||||
Reference in New Issue
Block a user