added winning determination algorithm (not entirely working yet)
This commit is contained in:
@@ -3,6 +3,10 @@ extends Node3D
|
||||
|
||||
var hand_associations: Dictionary[String, PlayerHand]
|
||||
|
||||
@export var web_client: WebClientTCP
|
||||
|
||||
@export var trump_container: Node3D
|
||||
|
||||
# In gameplay order
|
||||
#var hand_associations: Dictionary[int, PlayerHandAssociation]
|
||||
var _own_client_id: String
|
||||
@@ -21,6 +25,11 @@ var _own_client_id: String
|
||||
@export var hand_markers_6: Array[Marker3D]
|
||||
|
||||
@export var player_hand_scene: PackedScene
|
||||
@export var card_scene: PackedScene
|
||||
|
||||
## Cards played in the current play.
|
||||
var _plays: Array[Play]
|
||||
var _trump_id: int = -1
|
||||
|
||||
func _on_web_client_tcp_client_order_received(client_ids: Array[String]) -> void:
|
||||
var marker_positions: Array[Marker3D]
|
||||
@@ -80,3 +89,28 @@ func _on_web_client_tcp_cards_received(cards: Dictionary) -> void:
|
||||
var card_ids: Array[int]
|
||||
card_ids.assign(cards[client_id])
|
||||
hand_associations[client_id].add_cards(card_ids, client_id)
|
||||
|
||||
func _on_web_client_tcp_received_played_card(client_id: String, card_id: int) -> void:
|
||||
print(client_id + " played card " + str(card_id))
|
||||
_plays.append(Play.new(client_id, card_id))
|
||||
|
||||
func _on_web_client_tcp_received_play_winner_request() -> void:
|
||||
if not $"../HBoxContainer/GameUI"._is_host:
|
||||
return
|
||||
|
||||
var card_ids: Array[int] = []
|
||||
card_ids.assign(_plays.map(func(p: Play): return p.card_id))
|
||||
var winning_card_id: int = CardManager.get_winning_card(card_ids, _trump_id)
|
||||
|
||||
for play in _plays:
|
||||
if play.card_id == winning_card_id:
|
||||
web_client.submit_play_winner(play.client_id)
|
||||
return
|
||||
|
||||
func _on_web_client_tcp_trump_received(trump_id: int) -> void:
|
||||
if trump_container.get_child_count() > 0:
|
||||
trump_container.remove_child(trump_container.get_child(0))
|
||||
_trump_id = trump_id
|
||||
var trump_card: PlayingCard = card_scene.instantiate()
|
||||
trump_card.setup_card_details(_trump_id)
|
||||
trump_container.add_child(trump_card)
|
||||
|
||||
Reference in New Issue
Block a user