From 3a22a4e95d011e522cd65cdcdd5ddaa0b6b0c1d3 Mon Sep 17 00:00:00 2001 From: denizk0461 Date: Tue, 15 Jul 2025 11:31:01 +0200 Subject: [PATCH] cards are now distributed and displayed among all clients --- cards/card_manager.gd | 8 +------ components/web_client_tcp.gd | 6 ++--- elements/player_hand.gd | 14 ++++++------ environment_manager.gd | 44 ++++++++++++++++++++---------------- game.tscn | 1 + server_tcp.py | 6 +++-- 6 files changed, 40 insertions(+), 39 deletions(-) diff --git a/cards/card_manager.gd b/cards/card_manager.gd index 170f56d..dd4a04d 100644 --- a/cards/card_manager.gd +++ b/cards/card_manager.gd @@ -28,18 +28,12 @@ func get_shuffled_cards(client_ids: Array[String], cards_to_pick: int) -> Dictio return dict func get_card_texture(card_id: int, style: CardStyle = CardStyle.STICKMAN) -> Texture: - #if card_textures.has(card_id): - #return card_textures[card_id] var style_name: String = "" match style: CardStyle.STICKMAN: style_name = "stickman" - var a = "res://cards/textures/" + style_name + "/" + _get_card_name(card_id) + ".webp" - print(a) - return load(a) + return load("res://cards/textures/" + style_name + "/" + _get_card_name(card_id) + ".webp") - #return card_fallback_texture - func _get_card_name(card_id: int) -> String: var color: String var suffix: String diff --git a/components/web_client_tcp.gd b/components/web_client_tcp.gd index 75a3cb3..d1128e1 100644 --- a/components/web_client_tcp.gd +++ b/components/web_client_tcp.gd @@ -37,7 +37,7 @@ signal received_chat_message(client_name: String, message: String) signal connection_status_changed(new_status: ConnectionStatus) signal client_order_received(client_ids: Array[String]) -signal cards_received(card_ids: Array[int]) +signal cards_received(cards: Dictionary) enum ConnectionStatus { DISCONNECTED, @@ -127,8 +127,8 @@ func _handle_response(response: String) -> void: playing_order.assign(data["playing_order"]) client_order_received.emit.call_deferred(playing_order) - var received_cards: Array[int] = [] - received_cards.assign(data["cards"]) + var received_cards = data["cards"] + print(received_cards) cards_received.emit.call_deferred(received_cards) "client_submitted_bet": print(data) diff --git a/elements/player_hand.gd b/elements/player_hand.gd index 4df8b1f..d48f57b 100644 --- a/elements/player_hand.gd +++ b/elements/player_hand.gd @@ -17,13 +17,13 @@ var _selected_card: PlayingCard = null signal card_selected(card_id: int) signal card_played(card_id: int) -func _ready() -> void: - _arrange_cards() - var test_array: Array[int] - for i in range(10): - test_array.append(randi_range(0, 59)) - - add_cards(test_array, "") +#func _ready() -> void: + #_arrange_cards() + #var test_array: Array[int] + #for i in range(10): + #test_array.append(randi_range(0, 59)) + # + #add_cards(test_array, "") func add_card(card: PlayingCard) -> void: self.add_child(card) diff --git a/environment_manager.gd b/environment_manager.gd index 8af4f1c..65ce24e 100644 --- a/environment_manager.gd +++ b/environment_manager.gd @@ -1,8 +1,10 @@ class_name EnvironmentManager extends Node3D +var hand_associations: Dictionary[String, PlayerHand] + # In gameplay order -var hand_associations: Dictionary[int, PlayerHandAssociation] +#var hand_associations: Dictionary[int, PlayerHandAssociation] var _own_client_id: String @export var own_player_hand: PlayerHand @@ -36,11 +38,9 @@ func _on_web_client_tcp_client_order_received(client_ids: Array[String]) -> void var new_ids: Array[String] if own_index == 0: - print("ïndex was 0 " + _own_client_id) # no change necessary! new_ids = client_ids elif own_index == client_ids.size() - 1: - print("index was last " + _own_client_id) # you are at the end of the array new_ids = client_ids # take away own client id @@ -48,31 +48,35 @@ func _on_web_client_tcp_client_order_received(client_ids: Array[String]) -> void # add it to the start of the array new_ids.insert(0, _own_client_id) else: - print("index was middle " + _own_client_id) # you are somewhere in the middle of the array # create array with you at the start new_ids = client_ids.slice(own_index) # add the rest of the original array new_ids.append_array(client_ids.slice(0, own_index)) - print("playing order! -- !") - print(new_ids) - - for index in client_ids.size(): + for index in new_ids.size(): + var hand: PlayerHand if client_ids[index] == _own_client_id: - hand_associations[index] = PlayerHandAssociation.new( - _own_client_id, - own_player_hand.get_path(), - ) + hand = own_player_hand else: - var hand: PlayerHand = player_hand_scene.instantiate() - - # TODO - self.add_child(hand) # needs position! - hand_associations[index] = PlayerHandAssociation.new( - client_ids[index], - hand.get_path(), - ) + hand = player_hand_scene.instantiate() + self.add_child(hand) + var reference_marker = marker_positions[index - 1] + hand.global_position = reference_marker.global_position + hand.global_rotation = reference_marker.global_rotation + + #hand_associations[index] = PlayerHandAssociation.new( + #client_ids[index], + #hand.get_path(), + #) + hand_associations[client_ids[index]] = hand func _on_web_client_tcp_received_client_id(client_id: String) -> void: _own_client_id = client_id + + +func _on_web_client_tcp_cards_received(cards: Dictionary) -> void: + for client_id in cards.keys(): + var card_ids: Array[int] + card_ids.assign(cards[client_id]) + hand_associations[client_id].add_cards(card_ids, client_id) diff --git a/game.tscn b/game.tscn index f4ebf84..da9b59e 100644 --- a/game.tscn +++ b/game.tscn @@ -235,6 +235,7 @@ transform = Transform3D(-0.5, 0, 0.866025, 0, 1, 0, -0.866025, 0, -0.5, 3.2, 0.4 [node name="Table" parent="EnvironmentManager" instance=ExtResource("7_eow3j")] +[connection signal="cards_received" from="WebClientTCP" to="EnvironmentManager" method="_on_web_client_tcp_cards_received"] [connection signal="client_joined_lobby" from="WebClientTCP" to="HBoxContainer/ClientInterface" method="_on_web_client_tcp_client_joined_lobby"] [connection signal="client_joined_lobby" from="WebClientTCP" to="HBoxContainer/GameUI" method="_on_web_client_tcp_client_joined_lobby"] [connection signal="client_left_lobby" from="WebClientTCP" to="HBoxContainer/ClientInterface" method="_on_web_client_tcp_client_left_lobby"] diff --git a/server_tcp.py b/server_tcp.py index 1bf6bd8..96d96ed 100644 --- a/server_tcp.py +++ b/server_tcp.py @@ -179,16 +179,18 @@ class LobbyManager: trump = None if cards["trump"]: trump = cards["trump"] + cards.pop("trump") for client_id in client_ids: - client_cards = cards[client_id] + # client_cards = cards[client_id] + print(cards) await self.send_message( lobby_id, client_id, json.dumps({ "response": "new_round_started", "current_round": round, - "cards": client_cards, + "cards": cards, "trump": trump, "playing_order": playing_order, })