Files
Billiards/scripts/client_networking.gd

64 lines
1.6 KiB
GDScript3
Raw Normal View History

2026-08-07 02:50:54 -05:00
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.
2026-08-07 02:50:54 -05:00
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
2026-08-07 02:50:54 -05:00
while peer.get_connection_status() != 2:
await get_tree().process_frame
2026-08-07 02:50:54 -05:00
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...")
2026-08-07 02:50:54 -05:00
func client_disconnected_from_server() -> void:
assert(false, "This method needs to be overridden...")
2026-08-07 02:50:54 -05:00
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...")
2026-08-07 02:50:54 -05:00
unset_client()
2026-08-07 02:50:54 -05:00
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