Files
ClickerGacha/TeamSelection.gd

104 lines
4.1 KiB
GDScript

extends GridContainer
var target_buttons = [] # Array to hold target buttons
# Called when the node enters the scene tree for the first time.
func _ready():
print("Team Selection loaded")
MemberDatabase.load_character_data()
load_character_buttons()
#pass
# Initialize or find the target buttons using their absolute paths
target_buttons = [
get_node("/root/Root/UI/AspectRatioContainer/TeamScreen/Member1"), # Replace with the actual path to your target button 1
get_node("/root/Root/UI/AspectRatioContainer/TeamScreen/Member2"), # Replace with the actual path to your target button 2
get_node("/root/Root/UI/AspectRatioContainer/TeamScreen/Member3"), # Replace with the actual path to your target button 3
get_node("/root/Root/UI/AspectRatioContainer/TeamScreen/Member4"), # Replace with the actual path to your target button 4
get_node("/root/Root/UI/AspectRatioContainer/TeamScreen/Member5") # Replace with the actual path to your target button 5
]
func load_character_buttons():
#print("started load function")
#print(MemberDatabase.character_data)
if "members" in MemberDatabase.character_data:
#print("found members in data")
for character in MemberDatabase.character_data["members"]:
#print("iterating through data")
if character["isObtained"] ==true:
print ("Created character:", character["name"])
var button = create_character_button(character)
add_child(button)
else:
print("No characters found in character data.")
# Function to create a button for a character
# This builds out the character inventory
func create_character_button(member: Dictionary) -> TextureButton:
var button = TextureButton.new()
#Loads the texture specified in the memberData sheet
if member.has("texturePath"):
button.texture_normal = load(member["texturePath"])
else:
button.texture_normal = preload("res://Images/Members/Soldier.png") # Use a default texture if none is specified
button.connect("pressed", Callable(self, "_on_button_pressed").bind(button, member))
button.connect("mouse_entered", Callable(self, "_on_button_hovered").bind(button, member))
button.connect("mouse_exited", Callable(self, "_on_button_exited").bind(button))
return button
# Function called when a button is hovered over
func _on_button_hovered(button: TextureButton, member: Dictionary):
#current_member = member
#The backslash \ allows you to continue to the next line while concatenating the string
var tooltip_text = "" + str(member["name"]) + "\n" + "" + str(member["description"]) + "\n" + "Damage Per Second: " + str(member["perSec"]) + "\n" + \
"Damage Per Click: " + str(member["clickAdd"]) + "\n" + "Damage Multiplier: " + str(member["scoreMultiplier"])
button.tooltip_text = tooltip_text
# Function called when the mouse exits the button
func _on_button_exited(button: TextureButton):
button.tooltip_text = ""
# Update the global singleton for the given index
func update_global_texture_singleton(texture: Texture):
match Global.currentMemberSelected:
0:
Global.set_texture1(texture)
1:
Global.set_texture2(texture)
2:
Global.set_texture3(texture)
3:
Global.set_texture4(texture)
4:
Global.set_texture5(texture)
## Handler function for the pressed signal
func _on_button_pressed(button: TextureButton, member: Dictionary):
## Print the name of the button
##print("Button pressed: ", button.name)
var selected_texture = button.texture_normal
var texture = button.texture_normal
# Logic to determine which target button to update (this can be based on user selection or some other logic)
# For this example, we'll update the first available slot
update_global_texture_singleton(selected_texture)
#Adds the member stats into the global singletons
Global.set_damage_per_second(member["perSec"])
Global.set_damage_per_click(member["clickAdd"])
Global.set_damage_multiplier(member["scoreMultiplier"])
##For returning to the Team Selection Screen after selecting member
##Sets the global variable for the team selection screen to true so when you move back it's already open
Global.teamScreenVisible = true
Global.teamSelectionVisible = false
get_tree().change_scene_to_file("res://team.tscn")