added radio and new blank cassette system
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
class_name CardPrinter extends StaticBody3D
|
||||
|
||||
@export var button_collider: CollisionShape3D
|
||||
@export var card_selection_menu: PackedScene
|
||||
|
||||
#TODO: use faction enum
|
||||
var base_faction: int = 1
|
||||
@@ -64,7 +65,20 @@ func randomize_cards(faction: Card.Faction) -> void:
|
||||
pos_x += 1.25
|
||||
item.pressed.connect(card_picked_up)
|
||||
spawned_cards.append(item)
|
||||
add_child(item)
|
||||
|
||||
|
||||
func find_cards(faction: Card.Faction) -> void:
|
||||
var decided_rarity: int = generate_rarity()
|
||||
var card_choices: Array[Card] = get_faction_cards(faction)
|
||||
var cards: Array[Card] = []
|
||||
for card: Card in card_choices:
|
||||
if card.rarity == decided_rarity:
|
||||
cards.append(card)
|
||||
var menu: ChooseCardScreen = card_selection_menu.instantiate() as ChooseCardScreen
|
||||
menu.add_cards(cards)
|
||||
menu.card_chosen.connect(output_card)
|
||||
reply_player.pause()
|
||||
reply_player.hud.add_child(menu)
|
||||
|
||||
|
||||
func card_picked_up(card_item: CardItem) -> void:
|
||||
@@ -77,12 +91,20 @@ func card_picked_up(card_item: CardItem) -> void:
|
||||
$StaticBody3D/AudioStreamPlayer3D.play()
|
||||
|
||||
|
||||
func output_card(card: Card) -> void:
|
||||
reply_player.add_card(card)
|
||||
reply_player.unpause()
|
||||
reply_player = null
|
||||
button_collider.disabled = false
|
||||
$StaticBody3D/AudioStreamPlayer3D.play()
|
||||
|
||||
|
||||
func _on_static_body_3d_button_interacted(_value: int, reply: Hero) -> void:
|
||||
reply_player = reply
|
||||
if reply.energy >= 8:
|
||||
reply.energy -= 8
|
||||
if reply.blank_cassettes >= 1:
|
||||
reply.blank_cassettes -= 1
|
||||
else:
|
||||
return
|
||||
button_collider.disabled = true
|
||||
$StaticBody3D/AudioStreamPlayer3D.play()
|
||||
randomize_cards(reply.hero_class.faction)
|
||||
find_cards(reply.hero_class.faction)
|
||||
|
||||
@@ -1,27 +1,31 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://1b2ikdanl66b"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://1b2ikdanl66b"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bivtfdl3p1brv" path="res://Scenes/CardPrinter/card_printer.gd" id="1_qft15"]
|
||||
[ext_resource type="PackedScene" uid="uid://bcvjgl0s1wp8y" path="res://choose_card_screen.tscn" id="2_kpujb"]
|
||||
[ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="4_eavi1"]
|
||||
[ext_resource type="PackedScene" uid="uid://b6i5w3mowcfcs" path="res://Scenes/DraftingTable/drafting_table.glb" id="4_kpujb"]
|
||||
[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="5_m033a"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_0ebt5"]
|
||||
size = Vector3(2.17, 1.55307, 1.12)
|
||||
size = Vector3(3.00441, 1.21416, 2.14176)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_ikdwj"]
|
||||
size = Vector3(2.20033, 0.260753, 1.27008)
|
||||
size = Vector3(0.57883, 0.375308, 0.190803)
|
||||
|
||||
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_73g2w"]
|
||||
random_pitch = 1.1
|
||||
streams_count = 1
|
||||
stream_0/stream = ExtResource("5_m033a")
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_21y4o"]
|
||||
size = Vector3(2.11176, 1.16345, 0.664978)
|
||||
|
||||
[node name="CardPrinter" type="StaticBody3D" node_paths=PackedStringArray("button_collider")]
|
||||
script = ExtResource("1_qft15")
|
||||
button_collider = NodePath("StaticBody3D/CollisionShape3D2")
|
||||
card_selection_menu = ExtResource("2_kpujb")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.776539, 0.0332634)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.000722647, 0.607083, -0.000626981)
|
||||
shape = SubResource("BoxShape3D_0ebt5")
|
||||
|
||||
[node name="StaticBody3D" type="StaticBody3D" parent="."]
|
||||
@@ -29,11 +33,11 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.847404, 0.610684)
|
||||
collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("4_eavi1")
|
||||
press_cost = 8
|
||||
hover_text = "[center]#Interact# draft a card for 8 Energy"
|
||||
press_cost = 1
|
||||
hover_text = "[center]#Interact# Record to blank cassette"
|
||||
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.866025, -0.5, 0, 0.5, 0.866025, -6.55949e-05, 0.349496, -0.579584)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00542301, 0.653175, 0.254328)
|
||||
shape = SubResource("BoxShape3D_ikdwj")
|
||||
|
||||
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="StaticBody3D"]
|
||||
@@ -41,7 +45,46 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.578748, -0.587001)
|
||||
stream = SubResource("AudioStreamRandomizer_73g2w")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="drafting_table" parent="." instance=ExtResource("4_kpujb")]
|
||||
transform = Transform3D(0.06, 0, 0, 0, 0.06, 0, 0, 0, 0.06, 0, 0.385809, 0)
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.76287, 0.437195)
|
||||
size = Vector3(2.1, 1.21, 0.66)
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.50532, 0.844074)
|
||||
size = Vector3(0.57, 0.365, 0.22)
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.07889, 0)
|
||||
size = Vector3(3.01, 0.275, 2.145)
|
||||
|
||||
[node name="CSGBox3D4" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.17866, 0.464503, 0.722973)
|
||||
size = Vector3(0.355, 1, 0.37)
|
||||
|
||||
[node name="CSGBox3D5" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.20564, 0.464503, 0.744042)
|
||||
size = Vector3(0.355, 1, 0.37)
|
||||
|
||||
[node name="CSGBox3D6" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.21651, 0.464503, -0.703903)
|
||||
size = Vector3(0.355, 1, 0.37)
|
||||
|
||||
[node name="CSGBox3D7" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.20425, 0.464503, -0.796043)
|
||||
size = Vector3(0.355, 1, 0.37)
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="."]
|
||||
transform = Transform3D(0.791895, -0.610657, 0, 0.610657, 0.791895, 0, 0, 0, 1, -0.894404, 2.86265, 0.47663)
|
||||
radius = 0.131
|
||||
height = 1.627
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="."]
|
||||
transform = Transform3D(0.74906, 0.662502, 0, -0.662502, 0.74906, 0, 0, 0, 1, 1.08608, 2.86265, 0.47663)
|
||||
radius = 0.131
|
||||
height = 1.627
|
||||
|
||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00228882, 1.78986, 0.431061)
|
||||
shape = SubResource("BoxShape3D_21y4o")
|
||||
|
||||
[connection signal="button_interacted" from="StaticBody3D" to="." method="_on_static_body_3d_button_interacted"]
|
||||
|
||||
@@ -5,6 +5,9 @@ class_name ShopStand extends Node3D
|
||||
@export var choice_buttons: Array[InteractButton]
|
||||
@export var choice_sprites: Array[Sprite3D]
|
||||
@export var item_card_scene: PackedScene
|
||||
@export var blank_button: InteractButton
|
||||
@export var blank_button_collider: CollisionShape3D
|
||||
@export var blank_models: Array[CSGBox3D]
|
||||
|
||||
var price_dict: Dictionary = {
|
||||
Data.Rarity.UNCOMMON : 25,
|
||||
@@ -14,13 +17,18 @@ var price_dict: Dictionary = {
|
||||
}
|
||||
|
||||
var cards_generated: int = 0
|
||||
var blanks_available: int = 5
|
||||
var blank_cost: int = 20
|
||||
|
||||
|
||||
func close() -> void:
|
||||
for x: CollisionShape3D in choice_colliders:
|
||||
x.disabled = true
|
||||
for x: Sprite3D in choice_sprites:
|
||||
x.set_visible(false)
|
||||
x.visible = false
|
||||
for x: CSGBox3D in blank_models:
|
||||
x.visible = false
|
||||
blank_button_collider.disabled = true
|
||||
|
||||
|
||||
func randomize_cards() -> void:
|
||||
@@ -82,7 +90,11 @@ func randomize_cards() -> void:
|
||||
for x: CollisionShape3D in choice_colliders:
|
||||
x.set_deferred("disabled", false)
|
||||
for x: Sprite3D in choice_sprites:
|
||||
x.set_visible(true)
|
||||
x.visible = true
|
||||
for x: CSGBox3D in blank_models:
|
||||
x.visible = true
|
||||
blank_button_collider.disabled = false
|
||||
blank_button.hover_text = "#Interact# Spend $" + str(blank_cost) + " to acquire a blank cassette"
|
||||
|
||||
|
||||
func retrieve_card(i: int, callback: Hero) -> void:
|
||||
@@ -101,3 +113,13 @@ func retrieve_card(i: int, callback: Hero) -> void:
|
||||
#add_child(item)
|
||||
#button_collider.disabled = false
|
||||
#button_box.position = Vector3(0,0,0)
|
||||
|
||||
|
||||
func retrieve_blank(i: int, callback: Hero) -> void:
|
||||
if callback.currency >= blank_cost:
|
||||
blank_models[5 - blanks_available].visible = false
|
||||
blanks_available -= 1
|
||||
callback.currency -= blank_cost
|
||||
callback.blank_cassettes += 1
|
||||
if blanks_available == 0:
|
||||
blank_button_collider.disabled = true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=16 format=3 uid="uid://7g3jev3v6d3l"]
|
||||
[gd_scene load_steps=17 format=3 uid="uid://7g3jev3v6d3l"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://colk6js4wet11" path="res://Scenes/ShopStand/shop_stand.gd" id="1_4in53"]
|
||||
[ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="1_x8sts"]
|
||||
@@ -17,6 +17,9 @@ albedo_color = Color(0.313726, 0.180392, 0.00392157, 1)
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_3a288"]
|
||||
size = Vector3(2.95542, 2.01704, 1.92446)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_txjtg"]
|
||||
size = Vector3(0.427765, 0.430664, 0.898926)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_3r1g8"]
|
||||
size = Vector3(0.69, 0.665, 0.34)
|
||||
|
||||
@@ -38,16 +41,20 @@ viewport_path = NodePath("SubViewport5")
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_rnm0u"]
|
||||
viewport_path = NodePath("SubViewport6")
|
||||
|
||||
[node name="ShopStand" type="Node3D" node_paths=PackedStringArray("cards", "choice_colliders", "choice_buttons", "choice_sprites")]
|
||||
[node name="ShopStand" type="Node3D" node_paths=PackedStringArray("cards", "choice_colliders", "choice_buttons", "choice_sprites", "blank_button", "blank_button_collider", "blank_models")]
|
||||
script = ExtResource("1_4in53")
|
||||
cards = [NodePath("SubViewport/Node2D"), NodePath("SubViewport2/Node2D"), NodePath("SubViewport3/Node2D"), NodePath("SubViewport4/Node2D"), NodePath("SubViewport5/Node2D"), NodePath("SubViewport6/Node2D")]
|
||||
choice_colliders = [NodePath("InteractButton/CollisionShape3D"), NodePath("InteractButton2/CollisionShape3D2"), NodePath("InteractButton3/CollisionShape3D3"), NodePath("InteractButton6/CollisionShape3D6"), NodePath("InteractButton5/CollisionShape3D5"), NodePath("InteractButton4/CollisionShape3D4")]
|
||||
choice_buttons = [NodePath("InteractButton"), NodePath("InteractButton2"), NodePath("InteractButton3"), NodePath("InteractButton6"), NodePath("InteractButton5"), NodePath("InteractButton4")]
|
||||
choice_sprites = [NodePath("Sprites/Sprite3D"), NodePath("Sprites/Sprite3D2"), NodePath("Sprites/Sprite3D3"), NodePath("Sprites/Sprite3D4"), NodePath("Sprites/Sprite3D5"), NodePath("Sprites/Sprite3D6")]
|
||||
item_card_scene = ExtResource("2_qh00w")
|
||||
blank_button = NodePath("InteractButton7")
|
||||
blank_button_collider = NodePath("InteractButton7/CollisionShape3D")
|
||||
blank_models = [NodePath("CSGBox3D4"), NodePath("CSGBox3D5"), NodePath("CSGBox3D6"), NodePath("CSGBox3D7"), NodePath("CSGBox3D8")]
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="."]
|
||||
size = Vector3(2.95902, 1, 1)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.294425, 0, 0)
|
||||
size = Vector3(3.54787, 1, 1)
|
||||
material = SubResource("StandardMaterial3D_lhc2g")
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="."]
|
||||
@@ -66,6 +73,17 @@ material = SubResource("StandardMaterial3D_4tjcf")
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.502094, -0.465026)
|
||||
shape = SubResource("BoxShape3D_3a288")
|
||||
|
||||
[node name="InteractButton7" type="StaticBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.73285, 0.835364, 0.235621)
|
||||
collision_layer = 16
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_x8sts")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="InteractButton7"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0624237, -0.101074, -0.214111)
|
||||
shape = SubResource("BoxShape3D_txjtg")
|
||||
disabled = true
|
||||
|
||||
[node name="InteractButton" type="StaticBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.08327, 0.835364, 0.235621)
|
||||
collision_layer = 16
|
||||
@@ -211,6 +229,32 @@ pixel_size = 0.0015
|
||||
texture_filter = 0
|
||||
texture = SubResource("ViewportTexture_rnm0u")
|
||||
|
||||
[node name="CSGBox3D4" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.79147, 0.620414, 0.236721)
|
||||
visible = false
|
||||
size = Vector3(0.367981, 0.236755, 0.0673828)
|
||||
|
||||
[node name="CSGBox3D5" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.79147, 0.620414, 0.14049)
|
||||
visible = false
|
||||
size = Vector3(0.367981, 0.236755, 0.0673828)
|
||||
|
||||
[node name="CSGBox3D6" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.79147, 0.620414, 0.0426871)
|
||||
visible = false
|
||||
size = Vector3(0.367981, 0.236755, 0.0673828)
|
||||
|
||||
[node name="CSGBox3D7" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.79147, 0.620414, -0.0568752)
|
||||
visible = false
|
||||
size = Vector3(0.367981, 0.236755, 0.0673828)
|
||||
|
||||
[node name="CSGBox3D8" type="CSGBox3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.79147, 0.620414, -0.151894)
|
||||
visible = false
|
||||
size = Vector3(0.367981, 0.236755, 0.0673828)
|
||||
|
||||
[connection signal="button_interacted" from="InteractButton7" to="." method="retrieve_blank"]
|
||||
[connection signal="button_interacted" from="InteractButton" to="." method="retrieve_card"]
|
||||
[connection signal="button_interacted" from="InteractButton2" to="." method="retrieve_card"]
|
||||
[connection signal="button_interacted" from="InteractButton3" to="." method="retrieve_card"]
|
||||
|
||||
@@ -78,9 +78,10 @@ func networked_spawn_tower(card_index: int, caller_id: int) -> void:
|
||||
|
||||
@rpc("reliable", "call_local", "any_peer")
|
||||
func networked_remove_tower() -> void:
|
||||
inventory.remove_at(0)
|
||||
#game_manager.connected_players_nodes[tower.owner_id].add_card(inventory.remove_at(0))
|
||||
#game_manager.connected_players_nodes[tower.owner_id].unready_self()
|
||||
var card: Card = inventory.remove_at(0)
|
||||
if !game_manager.card_gameplay:
|
||||
game_manager.connected_players_nodes[tower.owner_id].add_card(card)
|
||||
game_manager.connected_players_nodes[tower.owner_id].unready_self()
|
||||
tower.queue_free()
|
||||
#disable_duration_sprites()
|
||||
tower = null
|
||||
|
||||
Reference in New Issue
Block a user