extends Control const DeckListItemScene = preload("res://scenes/ui/deck_manager/deck_list_item.tscn") @onready var back_btn = $MarginContainer/VBoxContainer/Header/BackButton @onready var browse_online_btn = $MarginContainer/VBoxContainer/Header/BrowseOnlineButton @onready var create_deck_btn = $MarginContainer/VBoxContainer/Header/CreateDeckButton @onready var deck_list_container = $MarginContainer/VBoxContainer/ScrollContainer/DeckListContainer @onready var modal_overlay = $ModalOverlay @onready var deck_editor = $DeckEditor @onready var online_browser = $OnlineDeckBrowser func _ready() -> void: back_btn.pressed.connect(_on_back_pressed) browse_online_btn.pressed.connect(_on_browse_online_pressed) create_deck_btn.pressed.connect(_on_create_deck_pressed) DataManager.decks_loaded.connect(_refresh_deck_list) DataManager.deck_saved.connect(_on_deck_saved) DataManager.deck_deleted.connect(_on_deck_deleted) deck_editor.deck_saved.connect(_on_editor_deck_saved) deck_editor.editor_closed.connect(_on_editor_closed) online_browser.browser_closed.connect(_on_browser_closed) _refresh_deck_list() func _refresh_deck_list() -> void: for child in deck_list_container.get_children(): child.queue_free() for deck in DataManager.decks: var item = DeckListItemScene.instantiate() deck_list_container.add_child(item) item.set_deck(deck) item.study_requested.connect(_on_study_deck) item.edit_requested.connect(_on_edit_deck) item.delete_requested.connect(_on_delete_deck) print("Refreshed deck list with %d deck(s)" % DataManager.decks.size()) func _on_back_pressed() -> void: GameManager.return_to_main_menu() func _on_create_deck_pressed() -> void: var new_deck = Deck.new() new_deck.name = "New Deck" new_deck.description = "A new flashcard deck" var sample_card = Flashcard.new() sample_card.question_text = "Sample Question" sample_card.answer_text = "Sample Answer" new_deck.add_card(sample_card) DataManager.save_deck(new_deck) func _on_study_deck(deck: Deck) -> void: GameManager.start_quiz(deck) func _on_edit_deck(deck: Deck) -> void: modal_overlay.show() deck_editor.edit_deck(deck) func _on_delete_deck(deck: Deck) -> void: print("Deleting deck: " + deck.name) DataManager.delete_deck(deck.id) func _on_deck_saved(deck: Deck) -> void: _refresh_deck_list() func _on_deck_deleted(deck_id: String) -> void: _refresh_deck_list() func _on_editor_deck_saved(deck: Deck) -> void: _refresh_deck_list() func _on_editor_closed() -> void: modal_overlay.hide() func _on_browse_online_pressed() -> void: modal_overlay.show() online_browser.open_browser() func _on_browser_closed() -> void: modal_overlay.hide() # Refresh the deck list in case new decks were downloaded _refresh_deck_list()