I have a set of buttons to allow the player to select and accept their character in one scene, and another that is the character scene which will have the chosen sprites animated. Free() and hide() seem to make the game break, so I used queue_free() to hide the character selection buttons. Thing is, it doesn't work the first time around- it only works after I press the character I want and then the start button a second time. I suspect something went wrong with the signals. The label mentioned in the Character Selection is the parent of all the buttons.
Here's the Character Selection code:
extends Node
signal change_number(a)
signal start_game()
func _on_Button_pressed():
get_node("Label/Button9").disabled = false
emit_signal("change_number", 1)
func _on_Button2_pressed():
get_node("Label/Button9").disabled = false
emit_signal("change_number", 2)
func _on_Button3_pressed():
get_node("Label/Button9").disabled = false
emit_signal("change_number", 3)
func _on_Button4_pressed():
get_node("Label/Button9").disabled = false
emit_signal("change_number", 4)
func _on_Button5_pressed():
get_node("Label/Button9").disabled = false
emit_signal("change_number", 5)
func _on_Button6_pressed():
get_node("Label/Button9").disabled = false
emit_signal("change_number", 6)
func _on_Button7_pressed():
get_node("Label/Button9").disabled = false
emit_signal("change_number", 7)
func _on_Button8_pressed():
get_node("Label/Button9").disabled = false
emit_signal("change_number", 8)
func _on_Button9_pressed():
emit_signal("start_game")
get_node("Label").hide()
func _on_AnimatedSprite_remove_selection():
get_node("Label").hide()
And this is the code on the animated sprite:
extends AnimatedSprite
onready var char_num = 0
onready var can_play = false
signal remove_selection()
func _process(delta):
if can_play == true:
if Input.is_action_pressed("Up"):
play("Char_" + str(char_num) + "_Walk_Up")
if Input.is_action_pressed("Down"):
play("Char_" + str(char_num) + "_Walk_Down")
if Input.is_action_pressed("Left"):
play("Char_" + str(char_num) + "_Walk_Left")
if Input.is_action_pressed("Right"):
play("Char_" + str(char_num) + "_Walk_Right")
if Input.is_action_just_released("Up"):
play("Char_" + str(char_num) + "_Idle_Up")
if Input.is_action_just_released("Down"):
play("Char_" + str(char_num) + "_Idle_Down")
if Input.is_action_just_released("Left"):
play("Char_" + str(char_num) + "_Idle_Left")
if Input.is_action_just_released("Right"):
play("Char_" + str(char_num) + "_Idle_Right")
func _on_CharacterSelection_change_number(a):
char_num = a
play("Char_" + str(char_num) + "_Idle_Down")
func _on_CharacterSelection_start_game():
emit_signal("remove_selection")
can_play = true