Files
Billiards/scripts/client_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

64 lines
1.6 KiB
GDScript

class_name ClientNetworking extends Node
var peer: ENetMultiplayerPeer
func start_client(address: String = "127.0.0.1", port: int = 8080) -> void:
if peer: return
push_warning("Client Starting... Address: ", address, " Port: ", port)
# TODO: Add throbber or other indication of connection attempt.
peer = ENetMultiplayerPeer.new()
peer.create_client(address, port)
multiplayer.multiplayer_peer = peer
multiplayer.connected_to_server.connect(client_connected_to_server)
multiplayer.server_disconnected.connect(client_disconnected_from_server)
multiplayer.connection_failed.connect(client_connection_failed_to_server)
func _wait_for_connection() -> void:
while not peer:
await get_tree().process_frame
while peer.get_connection_status() != 2:
await get_tree().process_frame
func _wait_close_connection():
close_connection()
while peer:
await get_tree().process_frame
func client_connected_to_server() -> void:
assert(false, "This method needs to be overridden...")
func client_disconnected_from_server() -> void:
assert(false, "This method needs to be overridden...")
func client_connection_failed_to_server() -> void:
assert(false, "This method needs to be overridden...")
func close_connection() -> void:
if not peer: return
push_warning("Disconnected from, server...")
unset_client()
func unset_client() -> void:
if not peer: return
multiplayer.connected_to_server.disconnect(client_connected_to_server)
multiplayer.connection_failed.disconnect(client_connection_failed_to_server)
multiplayer.server_disconnected.disconnect(client_disconnected_from_server)
peer.close()
peer = null