mirror of
https://github.com/thegatesbrowser/godot-multiplayer.git
synced 2025-10-15 17:03:34 -04:00
copy from thegates-jam repo
This commit is contained in:
parent
c1a7ad74e1
commit
1a335de566
523 changed files with 22408 additions and 0 deletions
84
main/connection.gd
Normal file
84
main/connection.gd
Normal file
|
@ -0,0 +1,84 @@
|
|||
extends Node
|
||||
class_name Connection
|
||||
|
||||
signal connected
|
||||
signal disconnected
|
||||
|
||||
static var is_peer_connected: bool
|
||||
|
||||
@export var port: int
|
||||
@export var max_clients: int
|
||||
@export var host: String
|
||||
@export var use_localhost_in_editor: bool
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if Connection.is_server(): start_server()
|
||||
connected.connect(func(): Connection.is_peer_connected = true)
|
||||
disconnected.connect(func(): Connection.is_peer_connected = false)
|
||||
disconnected.connect(disconnect_all)
|
||||
|
||||
|
||||
static func is_server() -> bool:
|
||||
return "--server" in OS.get_cmdline_args()
|
||||
|
||||
|
||||
func start_server() -> void:
|
||||
var peer = ENetMultiplayerPeer.new()
|
||||
var err = peer.create_server(port, max_clients)
|
||||
if err != OK:
|
||||
print("Cannot start server. Err: " + str(err))
|
||||
disconnected.emit()
|
||||
return
|
||||
else:
|
||||
print("Server started")
|
||||
connected.emit()
|
||||
|
||||
multiplayer.multiplayer_peer = peer
|
||||
multiplayer.peer_connected.connect(peer_connected)
|
||||
multiplayer.peer_disconnected.connect(peer_disconnected)
|
||||
|
||||
|
||||
func start_client() -> void:
|
||||
var address = host
|
||||
if OS.has_feature("editor") and use_localhost_in_editor:
|
||||
address = "localhost"
|
||||
|
||||
var peer = ENetMultiplayerPeer.new()
|
||||
var err = peer.create_client(address, port)
|
||||
if err != OK:
|
||||
print("Cannot start client. Err: " + str(err))
|
||||
disconnected.emit()
|
||||
return
|
||||
else: print("Connecting to server...")
|
||||
|
||||
multiplayer.multiplayer_peer = peer
|
||||
multiplayer.connected_to_server.connect(connected_to_server)
|
||||
multiplayer.server_disconnected.connect(server_connection_failure)
|
||||
multiplayer.connection_failed.connect(server_connection_failure)
|
||||
|
||||
|
||||
func connected_to_server() -> void:
|
||||
print("Connected to server")
|
||||
connected.emit()
|
||||
|
||||
|
||||
func server_connection_failure() -> void:
|
||||
print("Disconnected")
|
||||
disconnected.emit()
|
||||
|
||||
|
||||
func peer_connected(id: int) -> void:
|
||||
print("Peer connected: " + str(id))
|
||||
|
||||
|
||||
func peer_disconnected(id: int) -> void:
|
||||
print("Peer disconnected: " + str(id))
|
||||
|
||||
|
||||
func disconnect_all() -> void:
|
||||
multiplayer.peer_connected.disconnect(peer_connected)
|
||||
multiplayer.peer_disconnected.disconnect(peer_disconnected)
|
||||
multiplayer.connected_to_server.disconnect(connected_to_server)
|
||||
multiplayer.server_disconnected.disconnect(server_connection_failure)
|
||||
multiplayer.connection_failed.disconnect(server_connection_failure)
|
Loading…
Add table
Add a link
Reference in a new issue