Godot Version
4.7.stable
Question
I am trying to have my dice show up on different locations around my tower but instead, they are showing on the same spot. See video link below:
I wanted to have the dice show on different spots, so it looks like the player has a number of dice rolling at the same time around the tower.
Screenshots are how I have my nodes arrainged:
The ‘Upgrades’ node has the code below:
extends Control
const upgrade_btn_text: String = "Scout for upgrades"
@onready var upgrades_canvas_layer: CanvasLayer = $"Upgrades-CanvasLayer"
@export var die_texture_array: Array[AtlasTexture]
@onready var upgrade_buttons: VBoxContainer = $"Upgrades-CanvasLayer/Panel/VBoxContainer/HBoxContainer/Upgrade_buttons"
@onready var upgrades_btn: Button = $"../Main_CanvasLayer/VBoxContainer/HBoxContainer2/Upgrades_btn"
@onready var upgrades_timer: Timer = $Upgrades_timer
var button_status: bool = false
@onready var attack_range: CollisionShape2D = $"../Wizard_tower/Orb/Attack_range"
@onready var passive_upgrade: Button = $"Upgrades-CanvasLayer/Panel/VBoxContainer/HBoxContainer/Passive_Upgrade"
@onready var wizard_tower: Node2D = $"../Wizard_tower"
@onready var button_1: Button = $"Upgrades-CanvasLayer/Panel/VBoxContainer/HBoxContainer/Upgrade_buttons/Button1"
@onready var button_2: Button = $"Upgrades-CanvasLayer/Panel/VBoxContainer/HBoxContainer/Upgrade_buttons/Button2"
@onready var button_3: Button = $"Upgrades-CanvasLayer/Panel/VBoxContainer/HBoxContainer/Upgrade_buttons/Button3"
const RANGE_UPGRADE = preload("uid://b8pr33uvwsctk")
const WIZARD_TOWER_ADDON_RIGHT = preload("uid://cqv018que5l3a")
@onready var main: Node = $".."
@onready var hovering_dice_scene = load("res://Scenes/hovering-dice.tscn")
var upgrade_chooser: CompressedTexture2D
var upgrades_array = [
RANGE_UPGRADE,
WIZARD_TOWER_ADDON_RIGHT
]
var die_chooser_dictionary: Dictionary = {
"Bone_Dice": [0, 2, 5, 9, 14],
"Gold_Dice": [20, 22, 25, 29, 34],
}
var available_die_material: Array = [
"Bone_Dice",
]
var min_index_array: Array = []
var die_btn_array: Array = [
button_1,
button_2,
button_3
]
func _ready():
upgrades_btn.text = upgrade_btn_text
func _process(_delta: float):
if button_status == true and upgrades_timer.time_left > 0:
upgrades_btn.text = str("%0*d" % [0, upgrades_timer.time_left]) + " seconds left"
if button_status == true and upgrades_timer.time_left == 0:
upgrades_canvas_layer.visible = true
func _on_upgrades_btn_pressed():
upgrades_timer.start()
button_status = true
func populate_buttons():
passive_upgrade.disabled = false
upgrades_canvas_layer.visible = true
for btn in upgrade_buttons.get_children():
var random_dict_key = available_die_material.pick_random()
var random_die_index = die_chooser_dictionary[random_dict_key].pick_random()
btn.icon = die_texture_array[random_die_index]
min_index_array.append(random_die_index)
upgrade_chooser = upgrades_array.pick_random()
passive_upgrade.icon = upgrade_chooser
func _on_button_1_pressed():
var random_dict_key = available_die_material.pick_random()
var random_die_index = die_chooser_dictionary[random_dict_key].pick_random()
Globals.index_min_face = random_die_index
#Clears the array for the next round of upgrades
min_index_array.clear()
button_1.disabled = true
button_2.disabled = true
button_3.disabled = true
#Include code to trigger the instantiation of a hovering-dice scene
hovering_dice_scene.instantiate()
func _on_button_2_pressed():
var random_dict_key = available_die_material.pick_random()
var random_die_index = die_chooser_dictionary[random_dict_key].pick_random()
Globals.index_min_face = random_die_index
#Clears the array for the next round of upgrades
min_index_array.clear()
button_1.disabled = true
button_2.disabled = true
button_3.disabled = true
#Include code to trigger the instantiation of a hovering-dice scene
func _on_button_3_pressed():
var random_dict_key = available_die_material.pick_random()
var random_die_index = die_chooser_dictionary[random_dict_key].pick_random()
Globals.index_min_face = random_die_index
#Clears the array for the next round of upgrades
min_index_array.clear()
button_1.disabled = true
button_2.disabled = true
button_3.disabled = true
#Include code to trigger the instantiation of a hovering-dice scene
func _on_ok_button_pressed():
upgrades_canvas_layer.visible = false
button_status = false
func _on_passive_upgrade_pressed():
match upgrade_chooser:
RANGE_UPGRADE: range_upgrade()
WIZARD_TOWER_ADDON_RIGHT: add_platform()
passive_upgrade.disabled = true
func add_platform():
wizard_tower.add_platform_upgrade()
func range_upgrade():
if attack_range.shape.radius < 1000:
attack_range.shape.radius += 50
func _on_upgrades_timer_timeout():
populate_buttons()


