mirror of
https://github.com/mr0xb/godot-flashcards.git
synced 2026-08-27 20:44:56 -04:00
initial commit
This commit is contained in:
commit
94847a50a2
42 changed files with 2063 additions and 0 deletions
89
scenes/ui/deck_manager/deck_manager.gd
Normal file
89
scenes/ui/deck_manager/deck_manager.gd
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
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()
|
||||
Loading…
Reference in a new issue