Files
game/scripts/autoload/GameLoopManager.gd
T

73 lines
1.5 KiB
GDScript

extends Node
var peer: ENetMultiplayerPeer = ENetMultiplayerPeer.new()
var max_player_num: int
var player_num: int = 0
var players_id: Array[int]
var players_data: Dictionary[int, Dictionary]
var reaction_area: Dictionary[int, Array]
var card_order: Array[int]
var deck_cards: Dictionary[String, int]
var max_hp: int
func create_server(playern: int) -> void:
max_player_num = playern
player_num = 1
if peer.create_server(GameManager.port, playern) != OK:
return
setup_multiplayer()
func create_client(ip: String) -> void:
if peer.create_client(ip, GameManager.port) != OK:
return
setup_multiplayer()
func setup_multiplayer() -> void:
multiplayer.multiplayer_peer = peer
multiplayer.peer_connected.connect(_on_peer_connected)
multiplayer.peer_disconnected.connect(_on_peer_disconnected)
func _on_peer_connected(id: int) -> void:
add_player(id)
func _on_peer_disconnected(id: int):
remove_player(id)
func add_player(id: int) -> void:
if player_num >= max_player_num:
return
player_num += 1
players_data[id] = {
"id": id,
"nickname": "Player%d" % [player_num],
"cards": [],
"hp": max_hp,
}
reaction_area[id] = []
players_id.append(id)
func remove_player(id: int) -> void:
player_num -= 1
players_data.erase(id)
reaction_area.erase(id)
players_id.erase(id)
func server_start_game() -> void:
if player_num <= max_player_num:
return
if multiplayer.is_server():
client_start_game.rpc()
@rpc("any_peer", "call_local", "reliable")
func client_start_game() -> void:
pass