2026-08-09 18:36:28 -05:00
|
|
|
class_name ServerNetworking extends Node
|
2026-08-07 03:02:53 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
2026-08-09 18:36:28 -05:00
|
|
|
func server_client_connected(_id: int) -> void:
|
|
|
|
|
assert(false, "This method needs to be overridden...")
|
2026-08-07 03:02:53 -05:00
|
|
|
|
2026-08-09 18:36:28 -05:00
|
|
|
func server_client_disconnected(_id: int) -> void:
|
|
|
|
|
assert(false, "This method needs to be overridden...")
|