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 deck_cards_keys: Array[String] = deck_cards.keys() var max_hp: int var game_started: bool var game_round: 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() add_player(1) 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: if multiplayer.is_server(): add_player(id) func _on_peer_disconnected(id: int): if multiplayer.is_server() and players_data.has(id): 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(): game_round = 1 client_start_game.rpc() @rpc("any_peer", "call_local", "reliable") func client_start_game() -> void: pass func random_card() -> String: if deck_cards.size() == 0: return "" var card: String = deck_cards_keys[randi_range(0, deck_cards_keys.size() - 1)] deck_cards[card] -= 1 if deck_cards[card] <= 0: deck_cards.erase(card) return card func setup_deal_card() -> void: for id in players_id: for i in range(8): var card: String = random_card() if card == "": return players_data[id]["cards"].append(card) func round_deal_card(id: int) -> void: if card_order.find(id) == -1: return if game_round == 1 and card_order.find(id) <= 2: for _i in range(3): var card: String = random_card() if card == "": return players_data[id]["cards"].append(card) else: for _i in range(2): var card: String = random_card() if card == "": return players_data[id]["cards"].append(card) func reaction_id(id: int) -> bool: return false func reaction_settle() -> bool: return false func settle_round() -> void: while reaction_settle(): pass game_round += 1 func is_game_ended() -> bool: return false