Files
lobby-server/scripts/server_networking.gd

52 lines
1.2 KiB
GDScript3
Raw Normal View History

2026-08-07 03:02:53 -05:00
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)
get_parent()._server_host_started()
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:
if not peer: return
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:
Globals.lobby_data.server_client_connected(id)
func server_client_disconnected(id: int) -> void:
Globals.lobby_data.server_client_disconnected(id)