Add direct-connect multiplayer foundation
This commit is contained in:
parent
9e9850dd20
commit
24f8263175
36 changed files with 2633 additions and 45 deletions
69
network/peer_registry.gd
Normal file
69
network/peer_registry.gd
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
class_name PeerRegistry
|
||||
extends RefCounted
|
||||
|
||||
class PeerRecord:
|
||||
extends RefCounted
|
||||
|
||||
var peer_id: int = 0
|
||||
var profile_id: String = ""
|
||||
var display_name: String = ""
|
||||
var protocol_version: int = 0
|
||||
var joined_at_unix: int = 0
|
||||
|
||||
|
||||
var _records: Dictionary[int, PeerRecord] = {}
|
||||
|
||||
|
||||
func add_peer(
|
||||
peer_id: int,
|
||||
profile_id: String,
|
||||
display_name: String,
|
||||
protocol_version: int,
|
||||
) -> bool:
|
||||
if peer_id <= 0 or profile_id.is_empty() or has_profile(profile_id):
|
||||
return false
|
||||
var record := PeerRecord.new()
|
||||
record.peer_id = peer_id
|
||||
record.profile_id = profile_id
|
||||
record.display_name = display_name
|
||||
record.protocol_version = protocol_version
|
||||
record.joined_at_unix = int(Time.get_unix_time_from_system())
|
||||
_records[peer_id] = record
|
||||
return true
|
||||
|
||||
|
||||
func remove_peer(peer_id: int) -> PeerRecord:
|
||||
var record: PeerRecord = _records.get(peer_id)
|
||||
_records.erase(peer_id)
|
||||
return record
|
||||
|
||||
|
||||
func get_peer(peer_id: int) -> PeerRecord:
|
||||
return _records.get(peer_id)
|
||||
|
||||
|
||||
func has_peer(peer_id: int) -> bool:
|
||||
return _records.has(peer_id)
|
||||
|
||||
|
||||
func has_profile(profile_id: String) -> bool:
|
||||
for record: PeerRecord in _records.values():
|
||||
if record.profile_id == profile_id:
|
||||
return true
|
||||
return false
|
||||
|
||||
|
||||
func get_peer_ids() -> Array[int]:
|
||||
var result: Array[int] = []
|
||||
for peer_id: int in _records:
|
||||
result.append(peer_id)
|
||||
result.sort()
|
||||
return result
|
||||
|
||||
|
||||
func size() -> int:
|
||||
return _records.size()
|
||||
|
||||
|
||||
func clear() -> void:
|
||||
_records.clear()
|
||||
Loading…
Add table
Add a link
Reference in a new issue