adjusted camera angle
This commit is contained in:
@@ -8,9 +8,10 @@ enum CardStyle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func _ready() -> void:
|
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], -1) == 59)
|
||||||
assert(get_winning_card([1, 2, 3, 59], 3) == 59)
|
assert(get_winning_card([1, 2, 3, 59], 3) == 59)
|
||||||
|
assert(get_winning_card([57, 2, 3, 59], 3) == 57)
|
||||||
# trump wins
|
# trump wins
|
||||||
assert(get_winning_card([1, 14, 2, 3], 4) == 3)
|
assert(get_winning_card([1, 14, 2, 3], 4) == 3)
|
||||||
assert(get_winning_card([29, 14, 27, 31], 15) == 14)
|
assert(get_winning_card([29, 14, 27, 31], 15) == 14)
|
||||||
@@ -20,6 +21,8 @@ func _ready() -> void:
|
|||||||
# other wins
|
# other wins
|
||||||
assert(get_winning_card([14, 15, 18, 13], 16) == 18)
|
assert(get_winning_card([14, 15, 18, 13], 16) == 18)
|
||||||
assert(get_winning_card([14, 15, 18, 13], 46) == 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]]
|
func get_shuffled_cards(client_ids: Array[String], cards_to_pick: int) -> Dictionary: # Dictionary[String, Array[int]]
|
||||||
var dict: Dictionary = {}
|
var dict: Dictionary = {}
|
||||||
@@ -71,7 +74,6 @@ func get_winning_card(card_ids: Array[int], trump: int) -> int:
|
|||||||
return largest_trump_card_id
|
return largest_trump_card_id
|
||||||
|
|
||||||
# no trump played; determine from highest played card
|
# no trump played; determine from highest played card
|
||||||
# TODO check for white cards here!
|
|
||||||
return _get_largest_non_trump_card(card_ids)
|
return _get_largest_non_trump_card(card_ids)
|
||||||
else:
|
else:
|
||||||
# no trump exists
|
# no trump exists
|
||||||
|
|||||||
+23
-16
@@ -7,49 +7,54 @@ var card_distance_max: float = 0.18
|
|||||||
## Distance cards will be apart when there is a large amount of them
|
## Distance cards will be apart when there is a large amount of them
|
||||||
var card_distance_min: float = 0.09
|
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
|
## How many test cards to add
|
||||||
@export_range(0, 20) var test_card_count: int = 0
|
|
||||||
@export var card_scene: PackedScene
|
@export var card_scene: PackedScene
|
||||||
|
@export var card_container: Node3D
|
||||||
@export_range(0, 20, 0.1, "radians_as_degrees") var card_angle: float
|
@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
|
var _selected_card: PlayingCard = null
|
||||||
|
|
||||||
signal card_selected(card_id: int)
|
signal card_selected(card_id: int)
|
||||||
signal card_played(card_id: int)
|
signal card_played(card_id: int)
|
||||||
|
|
||||||
#func _ready() -> void:
|
func _ready() -> void:
|
||||||
#_arrange_cards()
|
if hide_client_name:
|
||||||
#var test_array: Array[int]
|
name_label.hide()
|
||||||
#for i in range(10):
|
|
||||||
#test_array.append(randi_range(0, 59))
|
|
||||||
#
|
|
||||||
#add_cards(test_array, "")
|
|
||||||
|
|
||||||
func add_card(card: PlayingCard) -> void:
|
func add_card(card: PlayingCard) -> void:
|
||||||
self.add_child(card)
|
card_container.add_child(card)
|
||||||
_arrange_cards()
|
_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()
|
card_ids.sort()
|
||||||
for card_id in card_ids:
|
for card_id in card_ids:
|
||||||
var card: PlayingCard = card_scene.instantiate()
|
var card: PlayingCard = card_scene.instantiate()
|
||||||
if true: # if client_id == ...
|
if is_owned:
|
||||||
card.card_clicked.connect(_on_card_clicked)
|
card.card_clicked.connect(_on_card_clicked)
|
||||||
card.setup_card_details(card_id)
|
card.setup_card_details(card_id)
|
||||||
add_card(card)
|
add_card(card)
|
||||||
await get_tree().create_timer(0.16).timeout
|
await get_tree().create_timer(0.16).timeout
|
||||||
|
|
||||||
func remove_card(card: PlayingCard) -> void:
|
func remove_card(card: PlayingCard) -> void:
|
||||||
self.remove_child(card)
|
card_container.remove_child(card)
|
||||||
card.queue_free()
|
card.queue_free()
|
||||||
_arrange_cards()
|
_arrange_cards()
|
||||||
|
|
||||||
func _arrange_cards() -> void:
|
func _arrange_cards() -> void:
|
||||||
var cards = self.get_children()
|
var cards = card_container.get_children()
|
||||||
# Only arrange cards if there are any!
|
# Only arrange cards if there are any!
|
||||||
if cards.size() > 0:
|
if cards.size() > 0:
|
||||||
var card_distance: float = _get_card_distance(cards.size() - 1)
|
var card_distance: float = _get_card_distance(cards.size() - 1)
|
||||||
print(card_distance)
|
|
||||||
var desired_width: float = (card_distance * (cards.size() - 1))
|
var desired_width: float = (card_distance * (cards.size() - 1))
|
||||||
var card_position = -desired_width / 2.0
|
var card_position = -desired_width / 2.0
|
||||||
for card in cards:
|
for card in cards:
|
||||||
@@ -58,7 +63,10 @@ func _arrange_cards() -> void:
|
|||||||
card.rotation.y = card_angle
|
card.rotation.y = card_angle
|
||||||
|
|
||||||
func _get_card_distance(card_count: int) -> float:
|
func _get_card_distance(card_count: int) -> float:
|
||||||
return card_distance_min + ((card_distance_max - card_distance_min) * (1.0 - (float(card_count) / 19.0)))
|
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:
|
func _on_card_clicked(playing_card: PlayingCard) -> void:
|
||||||
if _selected_card:
|
if _selected_card:
|
||||||
@@ -80,6 +88,5 @@ func _on_play_card_button_pressed() -> void:
|
|||||||
|
|
||||||
card_played.emit(_selected_card.card_details.card_id)
|
card_played.emit(_selected_card.card_details.card_id)
|
||||||
remove_card(_selected_card)
|
remove_card(_selected_card)
|
||||||
#_selected_card.unselect()
|
|
||||||
_selected_card = null
|
_selected_card = null
|
||||||
card_selected.emit(-1)
|
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="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"]
|
[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")
|
script = ExtResource("1_ank64")
|
||||||
test_card_count = 5
|
|
||||||
card_scene = ExtResource("2_11xsc")
|
card_scene = ExtResource("2_11xsc")
|
||||||
|
card_container = NodePath("CardContainer")
|
||||||
card_angle = 0.125664
|
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
|
hand = own_player_hand
|
||||||
else:
|
else:
|
||||||
hand = player_hand_scene.instantiate()
|
hand = player_hand_scene.instantiate()
|
||||||
self.add_child(hand)
|
marker_positions[index - 1].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
|
hand_associations[client_ids[index]] = hand
|
||||||
|
|
||||||
func _on_web_client_tcp_received_client_id(client_id: String) -> void:
|
func _on_web_client_tcp_received_client_id(client_id: String) -> void:
|
||||||
_own_client_id = client_id
|
_own_client_id = client_id
|
||||||
|
|
||||||
|
|
||||||
func _on_web_client_tcp_cards_received(cards: Dictionary) -> void:
|
func _on_web_client_tcp_cards_received(cards: Dictionary) -> void:
|
||||||
for client_id in cards.keys():
|
for client_id in cards.keys():
|
||||||
var card_ids: Array[int]
|
var card_ids: Array[int]
|
||||||
card_ids.assign(cards[client_id])
|
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:
|
func _on_web_client_tcp_received_played_card(client_id: String, card_id: int) -> void:
|
||||||
print(client_id + " played card " + str(card_id))
|
print(client_id + " played card " + str(card_id))
|
||||||
|
|||||||
@@ -241,8 +241,8 @@ player_hand_scene = ExtResource("4_fc0e3")
|
|||||||
card_scene = ExtResource("6_eow3j")
|
card_scene = ExtResource("6_eow3j")
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="EnvironmentManager"]
|
[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)
|
transform = Transform3D(1, 0, 0, 0, 0.415964, 0.909381, 0, -0.909381, 0.415964, 0, 2.96865, 2.32901)
|
||||||
fov = 72.0
|
fov = 62.0
|
||||||
|
|
||||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="EnvironmentManager"]
|
[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)
|
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")
|
environment = SubResource("Environment_fc0e3")
|
||||||
|
|
||||||
[node name="PlayerHand0" parent="EnvironmentManager" instance=ExtResource("4_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"]
|
[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"]
|
[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"]
|
[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"]
|
[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"]
|
[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")]
|
[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"]
|
[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="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/ClientInterface" method="_on_web_client_tcp_client_joined_lobby"]
|
||||||
|
|||||||
+7
-4
@@ -18,16 +18,19 @@ func _set_host(is_host: bool) -> void:
|
|||||||
|
|
||||||
func _start_next_play() -> void:
|
func _start_next_play() -> void:
|
||||||
_cards_left -= 1
|
_cards_left -= 1
|
||||||
print("cards left: " + str(_cards_left))
|
|
||||||
if _cards_left == 0:
|
if _cards_left == 0:
|
||||||
_start_next_round()
|
_start_next_round()
|
||||||
else:
|
else:
|
||||||
web_client.start_next_play()
|
web_client.start_next_play()
|
||||||
|
|
||||||
func _start_next_round() -> void:
|
func _start_next_round() -> void:
|
||||||
_current_round += 1
|
if _current_round == _max_rounds:
|
||||||
_cards_left = _current_round
|
pass
|
||||||
web_client.start_next_round(_current_round)
|
# end game
|
||||||
|
else:
|
||||||
|
_current_round += 1
|
||||||
|
_cards_left = _current_round
|
||||||
|
web_client.start_next_round(_current_round)
|
||||||
|
|
||||||
func _get_max_rounds(player_count: int) -> int:
|
func _get_max_rounds(player_count: int) -> int:
|
||||||
match player_count:
|
match player_count:
|
||||||
|
|||||||
Reference in New Issue
Block a user