104 lines
4.1 KiB
GDScript
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")
|
|
|
|
|
|
|
|
|