mirror of
https://github.com/mr0xb/godot-flashcards.git
synced 2026-08-27 20:44:56 -04:00
89 lines
2.7 KiB
GDScript
89 lines
2.7 KiB
GDScript
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()
|