Files
Billiards/scripts/server_networking.gd
itdominator 26dcfe0d1b refactor: improve multiplayer connection lifecycle
* Move client/server connection handling into game-specific networking classes
* Add multiplayer data reset for disconnected clients
* Clean up invalid MessageBus listeners after disconnects
* Persist lobby host address and port in game data
* Standardize the default server port to 8080
* Increase server address input length to support valid addresses
* Remove obsolete connection and match initialization logic from base networking
2026-08-10 00:40:45 -05:00

48 lines
1.2 KiB
GDScript

class_name ServerNetworking 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:
assert(false, "This method needs to be overridden...")
func server_client_disconnected(_id: int) -> void:
assert(false, "This method needs to be overridden...")