extends Control @onready var search_list := $ScrollContainer/VBoxContainer @onready var clear_button := $ClearButton @onready var close_button := $CloseButton @onready var search_bar := $Searchbar var games := [] # Called when the node enters the scene tree for the first time. func _ready(): get_list_of_games() clear_button.pressed.connect(clear) close_button.pressed.connect(close) search_bar.grab_focus() search_bar.text_changed.connect(search) visibility_changed.connect(focus) func focus(): if self.visible == true: search_bar.grab_focus() func close(): clear() self.visible = false func search(): print(search_bar.text) Settings.delete_children(search_list) for game in games: if is_match(search_bar.text, game): var label := Label.new() label.text = game label.autowrap_mode = TextServer.AUTOWRAP_WORD search_list.add_child(label) func is_match(search_term: String, game_name: String) -> bool: search_term = search_term.replace(" ", "").replace("é", "e").to_lower() game_name = game_name.replace(" ", "").replace("é", "e").to_lower() if search_term == "": return true elif compile_regex(search_term).search(game_name): return true else: return false func compile_regex(search_term: String) -> RegEx: var regex = RegEx.new() var regText: String = ".*" for letter in search_term: regText += letter + ".*" print(regText) regex.compile(regText) return regex func get_list_of_games() -> void: var handle_games = func(array): if typeof(array) == TYPE_ARRAY: games.append_array(array) for game in games: var label := Label.new() label.text = game label.autowrap_mode = TextServer.AUTOWRAP_WORD search_list.add_child(label) else: print("Unexpected data") Settings.make_request2("/music/all/order", handle_games, true) func clear(): search_bar.text = "" search() search_bar.grab_focus()