Initial push
This commit is contained in:
commit
3240f07946
335 changed files with 11248 additions and 0 deletions
71
Scripts/Server/server_lobby.gd
Normal file
71
Scripts/Server/server_lobby.gd
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
class_name ServerLobby
|
||||
extends Node
|
||||
|
||||
|
||||
#region Exports
|
||||
|
||||
@export var players : Dictionary[int, PlayerData] = {}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Variables
|
||||
|
||||
var free_lobby_indexs : Array[int] = []
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Signals
|
||||
|
||||
signal player_registered()
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Client RPC
|
||||
|
||||
@rpc("any_peer", "call_local")
|
||||
func request_player_register(id: int, username) -> void:
|
||||
#only run on the multiplayer instance
|
||||
if not multiplayer.is_server():
|
||||
return
|
||||
|
||||
player_register.rpc_id(1, id, username)
|
||||
|
||||
@rpc("any_peer", "call_local")
|
||||
func update_client_players(id : int, username : String) -> void:
|
||||
if not players.has(id):
|
||||
players[id] = PlayerData.new(id, players.size(), username)
|
||||
|
||||
player_registered.emit()
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Server RPC
|
||||
|
||||
@rpc("authority", "call_local")
|
||||
func player_register(id : int, username : String) -> void:
|
||||
var lobby_index : int = players.size()
|
||||
if free_lobby_indexs.size() != 0:
|
||||
lobby_index = free_lobby_indexs.pop_front()
|
||||
|
||||
players[id] = PlayerData.new(id, lobby_index, username)
|
||||
|
||||
#send the entire list for clients that join later
|
||||
for player_id in players:
|
||||
update_client_players.rpc(player_id, players[player_id].name)
|
||||
|
||||
@rpc("authority", "call_local")
|
||||
func player_unregister(id) -> void:
|
||||
free_lobby_indexs.append(players[id].lobby_index)
|
||||
players.erase(id)
|
||||
player_registered.emit()
|
||||
|
||||
@rpc("authority", "call_local")
|
||||
func players_clear() -> void:
|
||||
players.clear()
|
||||
player_registered.emit()
|
||||
|
||||
#endregion
|
||||
Loading…
Add table
Add a link
Reference in a new issue