fixed the issue where enemies could walk over a gap if it wasnt on a pathfinding node

This commit is contained in:
2024-03-29 21:58:40 +11:00
parent 3c28999cd9
commit 62d0dc0130
40 changed files with 205 additions and 138 deletions

View File

@ -0,0 +1,67 @@
class_name CardPrinter extends StaticBody3D
@export var cards: Array[CardInHand]
@export var item_card_scene: PackedScene
@export var button_collider: CollisionShape3D
@export var button_box: Node3D
@export var choice_colliders: Array[CollisionShape3D]
var card_available: bool = false
var reply_player: Hero
func randomize_cards() -> void:
var weight_total: int = 0
for rarity: String in Data.Rarity:
weight_total += Data.rarity_weights[rarity]
var generated_rarity: int = randi_range(0, weight_total)
var decided_rarity: int = 0
for rarity: String in Data.Rarity:
weight_total -= Data.rarity_weights[rarity]
if generated_rarity >= weight_total:
decided_rarity = Data.Rarity[rarity]
break
var card_array: Array = []
for x: Card in Data.cards:
if x.rarity == decided_rarity:
card_array.append(x)
var card: Card
for x: CardInHand in cards:
if card_array.size() > 0:
card = card_array.pick_random()
card_array.erase(card)
x.set_card(card)
#TODO: in reality this should just show the icon and then hovering over it lets you see either side at the players own discretion
x.view_tower()
$Node3D.set_visible(true)
for x: CollisionShape3D in choice_colliders:
x.disabled = false
card_available = true
func retrieve_card(i: int, reply: Hero) -> void:
$Node3D.set_visible(false)
for x: CollisionShape3D in choice_colliders:
x.disabled = true
if card_available:
var card: Card = cards[i].stats
reply_player.add_card(card)
#var item: ItemCard = item_card_scene.instantiate() as ItemCard
#item.card = card
#item.position = Vector3(1.683, 0, 0)
#add_child(item)
button_collider.disabled = false
button_box.position = Vector3(0,0,0)
$AudioStreamPlayer3D.play()
reply_player = null
func _on_static_body_3d_button_interacted(_value: int, reply: Hero) -> void:
reply_player = reply
button_collider.disabled = true
button_box.position = Vector3(0,0,-0.2)
$AudioStreamPlayer3D.play()
randomize_cards()

View File

@ -0,0 +1,149 @@
[gd_scene load_steps=14 format=3 uid="uid://1b2ikdanl66b"]
[ext_resource type="Script" path="res://Scenes/CardPrinter/card_printer.gd" id="1_qft15"]
[ext_resource type="PackedScene" uid="uid://dsasunnk47n8o" path="res://Scenes/item_card.tscn" id="2_hegq8"]
[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="3_wygtg"]
[ext_resource type="Script" path="res://Scripts/interact_button.gd" id="4_eavi1"]
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="5_m033a"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s02au"]
albedo_color = Color(0.203922, 0.592157, 0.592157, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_0ebt5"]
size = Vector3(2.672, 1.75, 1)
[sub_resource type="ViewportTexture" id="ViewportTexture_yf4je"]
viewport_path = NodePath("SubViewport")
[sub_resource type="ViewportTexture" id="ViewportTexture_3q3h0"]
viewport_path = NodePath("SubViewport2")
[sub_resource type="ViewportTexture" id="ViewportTexture_vyyy4"]
viewport_path = NodePath("SubViewport3")
[sub_resource type="BoxShape3D" id="BoxShape3D_ikdwj"]
size = Vector3(1.29447, 0.342125, 0.277604)
[sub_resource type="BoxShape3D" id="BoxShape3D_gv3t5"]
size = Vector3(0.763889, 0.773027, 0.0570252)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_73g2w"]
random_pitch = 1.1
streams_count = 1
stream_0/stream = ExtResource("5_m033a")
stream_0/weight = 1.0
[node name="CardPrinter" type="StaticBody3D" node_paths=PackedStringArray("cards", "button_collider", "button_box", "choice_colliders")]
script = ExtResource("1_qft15")
cards = [NodePath("SubViewport/Node2D"), NodePath("SubViewport2/Node2D"), NodePath("SubViewport3/Node2D")]
item_card_scene = ExtResource("2_hegq8")
button_collider = NodePath("StaticBody3D/CollisionShape3D2")
button_box = NodePath("StaticBody3D/CollisionShape3D2/CSGBox3D")
choice_colliders = [NodePath("StaticBody3D2/CollisionShape3D2"), NodePath("StaticBody3D3/CollisionShape3D2"), NodePath("StaticBody3D4/CollisionShape3D2")]
[node name="CSGBox3D" type="CSGBox3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.875, 0)
size = Vector3(2.672, 1.75, 1)
material = SubResource("StandardMaterial3D_s02au")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.875, 0)
shape = SubResource("BoxShape3D_0ebt5")
[node name="SubViewport" type="SubViewport" parent="."]
transparent_bg = true
render_target_update_mode = 4
[node name="Node2D" parent="SubViewport" instance=ExtResource("3_wygtg")]
[node name="SubViewport2" type="SubViewport" parent="."]
transparent_bg = true
render_target_update_mode = 4
[node name="Node2D" parent="SubViewport2" instance=ExtResource("3_wygtg")]
[node name="SubViewport3" type="SubViewport" parent="."]
transparent_bg = true
render_target_update_mode = 4
[node name="Node2D" parent="SubViewport3" instance=ExtResource("3_wygtg")]
[node name="Node3D" type="Node3D" parent="."]
visible = false
[node name="Sprite3D" type="Sprite3D" parent="Node3D"]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, -0.805106, 1.12938, 0.500052)
texture_filter = 0
texture = SubResource("ViewportTexture_yf4je")
[node name="Sprite3D2" type="Sprite3D" parent="Node3D"]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0.0180808, 1.12938, 0.500052)
texture_filter = 0
texture = SubResource("ViewportTexture_3q3h0")
[node name="Sprite3D3" type="Sprite3D" parent="Node3D"]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0.843507, 1.12938, 0.500052)
texture_filter = 0
texture = SubResource("ViewportTexture_vyyy4")
[node name="StaticBody3D" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.444448, 0.610684)
collision_layer = 16
collision_mask = 0
script = ExtResource("4_eavi1")
press_cost = 15
hover_text = "Spend 15 Coins to print card"
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D"]
shape = SubResource("BoxShape3D_ikdwj")
[node name="CSGBox3D" type="CSGBox3D" parent="StaticBody3D/CollisionShape3D2"]
size = Vector3(1.29447, 0.342125, 0.277604)
[node name="StaticBody3D2" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.756734, 1.15772, 0.610684)
collision_layer = 16
collision_mask = 0
script = ExtResource("4_eavi1")
hover_text = "Select card"
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0466152, -0.0297148, -0.0917365)
shape = SubResource("BoxShape3D_gv3t5")
disabled = true
[node name="StaticBody3D3" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0672475, 1.15772, 0.610684)
collision_layer = 16
collision_mask = 0
script = ExtResource("4_eavi1")
button_press_value = 1
hover_text = "Select card"
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D3"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0466152, -0.0297148, -0.0917365)
shape = SubResource("BoxShape3D_gv3t5")
disabled = true
[node name="StaticBody3D4" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.883877, 1.15772, 0.610684)
collision_layer = 16
collision_mask = 0
script = ExtResource("4_eavi1")
button_press_value = 2
hover_text = "Select card"
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D4"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0466152, -0.0297148, -0.0917365)
shape = SubResource("BoxShape3D_gv3t5")
disabled = true
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.433459, 0.524183)
stream = SubResource("AudioStreamRandomizer_73g2w")
bus = &"SFX"
[connection signal="button_interacted" from="StaticBody3D" to="." method="_on_static_body_3d_button_interacted"]
[connection signal="button_interacted" from="StaticBody3D2" to="." method="retrieve_card"]
[connection signal="button_interacted" from="StaticBody3D3" to="." method="retrieve_card"]
[connection signal="button_interacted" from="StaticBody3D4" to="." method="retrieve_card"]