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