adjusted camera angle
This commit is contained in:
+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
|
||||
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:
|
||||
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:
|
||||
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="."]
|
||||
|
||||
Reference in New Issue
Block a user