adjusted camera angle
This commit is contained in:
@@ -8,9 +8,10 @@ enum CardStyle {
|
||||
}
|
||||
|
||||
func _ready() -> void:
|
||||
# wizard wins
|
||||
# magician wins
|
||||
assert(get_winning_card([1, 2, 3, 59], -1) == 59)
|
||||
assert(get_winning_card([1, 2, 3, 59], 3) == 59)
|
||||
assert(get_winning_card([57, 2, 3, 59], 3) == 57)
|
||||
# trump wins
|
||||
assert(get_winning_card([1, 14, 2, 3], 4) == 3)
|
||||
assert(get_winning_card([29, 14, 27, 31], 15) == 14)
|
||||
@@ -20,6 +21,8 @@ func _ready() -> void:
|
||||
# other wins
|
||||
assert(get_winning_card([14, 15, 18, 13], 16) == 18)
|
||||
assert(get_winning_card([14, 15, 18, 13], 46) == 18)
|
||||
# trumpless win
|
||||
assert(get_winning_card([28, 12, 31, 13], -1) == 31)
|
||||
|
||||
func get_shuffled_cards(client_ids: Array[String], cards_to_pick: int) -> Dictionary: # Dictionary[String, Array[int]]
|
||||
var dict: Dictionary = {}
|
||||
@@ -71,7 +74,6 @@ func get_winning_card(card_ids: Array[int], trump: int) -> int:
|
||||
return largest_trump_card_id
|
||||
|
||||
# no trump played; determine from highest played card
|
||||
# TODO check for white cards here!
|
||||
return _get_largest_non_trump_card(card_ids)
|
||||
else:
|
||||
# no trump exists
|
||||
|
||||
+22
-15
@@ -7,49 +7,54 @@ var card_distance_max: float = 0.18
|
||||
## Distance cards will be apart when there is a large amount of them
|
||||
var card_distance_min: float = 0.09
|
||||
|
||||
# Card distances for hands of other players
|
||||
var _card_distance_max_others: float = 0.03
|
||||
var _card_distance_min_others: float = 0.01
|
||||
|
||||
var _is_owned: bool
|
||||
|
||||
## How many test cards to add
|
||||
@export_range(0, 20) var test_card_count: int = 0
|
||||
@export var card_scene: PackedScene
|
||||
@export var card_container: Node3D
|
||||
@export_range(0, 20, 0.1, "radians_as_degrees") var card_angle: float
|
||||
|
||||
@export var name_label: Label3D
|
||||
@export var hide_client_name: bool = false
|
||||
|
||||
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:
|
||||
if hide_client_name:
|
||||
name_label.hide()
|
||||
|
||||
func add_card(card: PlayingCard) -> void:
|
||||
self.add_child(card)
|
||||
card_container.add_child(card)
|
||||
_arrange_cards()
|
||||
|
||||
func add_cards(card_ids: Array[int], client_id: String) -> void:
|
||||
func add_cards(card_ids: Array[int], is_owned: bool) -> void:
|
||||
_is_owned = is_owned
|
||||
card_ids.sort()
|
||||
for card_id in card_ids:
|
||||
var card: PlayingCard = card_scene.instantiate()
|
||||
if true: # if client_id == ...
|
||||
if is_owned:
|
||||
card.card_clicked.connect(_on_card_clicked)
|
||||
card.setup_card_details(card_id)
|
||||
add_card(card)
|
||||
await get_tree().create_timer(0.16).timeout
|
||||
|
||||
func remove_card(card: PlayingCard) -> void:
|
||||
self.remove_child(card)
|
||||
card_container.remove_child(card)
|
||||
card.queue_free()
|
||||
_arrange_cards()
|
||||
|
||||
func _arrange_cards() -> void:
|
||||
var cards = self.get_children()
|
||||
var cards = card_container.get_children()
|
||||
# Only arrange cards if there are any!
|
||||
if cards.size() > 0:
|
||||
var card_distance: float = _get_card_distance(cards.size() - 1)
|
||||
print(card_distance)
|
||||
var desired_width: float = (card_distance * (cards.size() - 1))
|
||||
var card_position = -desired_width / 2.0
|
||||
for card in cards:
|
||||
@@ -58,7 +63,10 @@ func _arrange_cards() -> void:
|
||||
card.rotation.y = card_angle
|
||||
|
||||
func _get_card_distance(card_count: int) -> float:
|
||||
if _is_owned:
|
||||
return card_distance_min + ((card_distance_max - card_distance_min) * (1.0 - (float(card_count) / 19.0)))
|
||||
else:
|
||||
return _card_distance_min_others + ((_card_distance_max_others - _card_distance_min_others) * (1.0 - (float(card_count) / 19.0)))
|
||||
|
||||
func _on_card_clicked(playing_card: PlayingCard) -> void:
|
||||
if _selected_card:
|
||||
@@ -80,6 +88,5 @@ func _on_play_card_button_pressed() -> void:
|
||||
|
||||
card_played.emit(_selected_card.card_details.card_id)
|
||||
remove_card(_selected_card)
|
||||
#_selected_card.unselect()
|
||||
_selected_card = null
|
||||
card_selected.emit(-1)
|
||||
|
||||
@@ -3,8 +3,17 @@
|
||||
[ext_resource type="Script" uid="uid://b5b5cl2qlhywv" path="res://elements/player_hand.gd" id="1_ank64"]
|
||||
[ext_resource type="PackedScene" uid="uid://b55xpcxk7g5ph" path="res://cards/playing_card.tscn" id="2_11xsc"]
|
||||
|
||||
[node name="PlayerHand" type="Node3D"]
|
||||
[node name="PlayerHand" type="Node3D" node_paths=PackedStringArray("card_container", "name_label")]
|
||||
script = ExtResource("1_ank64")
|
||||
test_card_count = 5
|
||||
card_scene = ExtResource("2_11xsc")
|
||||
card_container = NodePath("CardContainer")
|
||||
card_angle = 0.125664
|
||||
name_label = NodePath("NameLabel")
|
||||
|
||||
[node name="NameLabel" type="Label3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.513717, 0)
|
||||
billboard = 1
|
||||
double_sided = false
|
||||
text = "name goes here"
|
||||
|
||||
[node name="CardContainer" type="Node3D" parent="."]
|
||||
|
||||
+2
-10
@@ -69,26 +69,18 @@ func _on_web_client_tcp_client_order_received(client_ids: Array[String]) -> void
|
||||
hand = own_player_hand
|
||||
else:
|
||||
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
|
||||
marker_positions[index - 1].add_child(hand)
|
||||
|
||||
#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)
|
||||
hand_associations[client_id].add_cards(card_ids, client_id == _own_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))
|
||||
|
||||
@@ -241,8 +241,8 @@ player_hand_scene = ExtResource("4_fc0e3")
|
||||
card_scene = ExtResource("6_eow3j")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="EnvironmentManager"]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.992546, 0.121869, 0, -0.121869, 0.992546, 0, 1.128, 3.933)
|
||||
fov = 72.0
|
||||
transform = Transform3D(1, 0, 0, 0, 0.415964, 0.909381, 0, -0.909381, 0.415964, 0, 2.96865, 2.32901)
|
||||
fov = 62.0
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="EnvironmentManager"]
|
||||
transform = Transform3D(0.970511, 0, 0.241058, -0.137972, 0.820002, 0.555482, -0.197668, -0.572361, 0.795821, 2.41581, 2.80426, 0)
|
||||
@@ -251,27 +251,29 @@ transform = Transform3D(0.970511, 0, 0.241058, -0.137972, 0.820002, 0.555482, -0
|
||||
environment = SubResource("Environment_fc0e3")
|
||||
|
||||
[node name="PlayerHand0" parent="EnvironmentManager" instance=ExtResource("4_fc0e3")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 2.6)
|
||||
transform = Transform3D(1, 0, 0, 0, 0.403769, 0.914861, 0, -0.914861, 0.403769, 0, 0.490593, 2.17793)
|
||||
hide_client_name = true
|
||||
|
||||
[node name="HandMarker1" type="Marker3D" parent="EnvironmentManager"]
|
||||
transform = Transform3D(-0.906308, 0, -0.422618, 0, 1, 0, 0.422618, 0, -0.906308, -1.8, 0.4, -1.861)
|
||||
transform = Transform3D(-0.906308, -0.408218, -0.109382, 0, 0.258819, -0.965926, 0.422618, -0.875426, -0.23457, -1.25, 0.4, -0.387)
|
||||
|
||||
[node name="HandMarker2" type="Marker3D" parent="EnvironmentManager"]
|
||||
transform = Transform3D(-0.906308, 0, 0.422618, 0, 1, 0, -0.422618, 0, -0.906308, 1.8, 0.4, -1.861)
|
||||
transform = Transform3D(-0.906308, 0.408218, 0.109382, 0, 0.258819, -0.965926, -0.422618, -0.875426, -0.23457, 1.25, 0.4, -0.387)
|
||||
|
||||
[node name="HandMarker3" type="Marker3D" parent="EnvironmentManager"]
|
||||
transform = Transform3D(-1, 0, -1.50996e-07, 0, 1, 0, 1.50996e-07, 0, -1, 0, 0.4, -2.40681)
|
||||
transform = Transform3D(-1, 8.44439e-08, 2.26267e-08, 0, 0.258819, -0.965926, -8.74228e-08, -0.965926, -0.258819, 0, 0.4, -0.810801)
|
||||
|
||||
[node name="HandMarker4" type="Marker3D" parent="EnvironmentManager"]
|
||||
transform = Transform3D(-0.5, 0, -0.866025, 0, 1, 0, 0.866025, 0, -0.5, -3.2, 0.4, -0.406)
|
||||
transform = Transform3D(-0.5, -0.836516, -0.224144, 0, 0.258819, -0.965925, 0.866025, -0.482963, -0.129409, -2.4, 0.4, 0.507)
|
||||
|
||||
[node name="HandMarker5" type="Marker3D" parent="EnvironmentManager"]
|
||||
transform = Transform3D(-0.5, 0, 0.866025, 0, 1, 0, -0.866025, 0, -0.5, 3.2, 0.4, -0.406)
|
||||
transform = Transform3D(-0.5, 0.836516, 0.224144, 0, 0.258819, -0.965925, -0.866025, -0.482963, -0.129409, 2.4, 0.4, 0.507)
|
||||
|
||||
[node name="Table" parent="EnvironmentManager" instance=ExtResource("7_eow3j")]
|
||||
transform = Transform3D(0.7, 0, 0, 0, 0.7, 0, 0, 0, 0.7, 0, 0, 0.704226)
|
||||
|
||||
[node name="TrumpPosition" type="Marker3D" parent="EnvironmentManager"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.167186, 0)
|
||||
transform = Transform3D(0.957037, -0.289967, -1.26749e-08, 1.48302e-15, -4.37114e-08, 1, -0.289967, -0.957036, -4.18334e-08, -0.0775449, 0.372575, 0.973012)
|
||||
|
||||
[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"]
|
||||
|
||||
+4
-1
@@ -18,13 +18,16 @@ func _set_host(is_host: bool) -> void:
|
||||
|
||||
func _start_next_play() -> void:
|
||||
_cards_left -= 1
|
||||
print("cards left: " + str(_cards_left))
|
||||
if _cards_left == 0:
|
||||
_start_next_round()
|
||||
else:
|
||||
web_client.start_next_play()
|
||||
|
||||
func _start_next_round() -> void:
|
||||
if _current_round == _max_rounds:
|
||||
pass
|
||||
# end game
|
||||
else:
|
||||
_current_round += 1
|
||||
_cards_left = _current_round
|
||||
web_client.start_next_round(_current_round)
|
||||
|
||||
Reference in New Issue
Block a user