From 21e22ed5fb947cec167fb00875d33c3c78f78df6 Mon Sep 17 00:00:00 2001 From: RickyRister <42636155+RickyRister@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:31:44 -0800 Subject: [PATCH] Destroy VDS in game lobby once game starts (#5643) * push back setting change * rename method and make it public * destroy vds on game start --- cockatrice/src/client/tabs/tab_game.cpp | 1 + .../src/game/deckview/deck_view_container.cpp | 21 ++++++++++++------- .../src/game/deckview/deck_view_container.h | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/cockatrice/src/client/tabs/tab_game.cpp b/cockatrice/src/client/tabs/tab_game.cpp index af1304fa2..a1cb8a938 100644 --- a/cockatrice/src/client/tabs/tab_game.cpp +++ b/cockatrice/src/client/tabs/tab_game.cpp @@ -836,6 +836,7 @@ void TabGame::startGame(bool _resuming) while (i.hasNext()) { i.next(); i.value()->setReadyStart(false); + i.value()->setVisualDeckStorageExists(false); i.value()->hide(); } diff --git a/cockatrice/src/game/deckview/deck_view_container.cpp b/cockatrice/src/game/deckview/deck_view_container.cpp index 555f63817..95b3c8155 100644 --- a/cockatrice/src/game/deckview/deck_view_container.cpp +++ b/cockatrice/src/game/deckview/deck_view_container.cpp @@ -97,7 +97,7 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent) refreshShortcuts(); connect(&SettingsCache::instance(), &SettingsCache::visualDeckStorageInGameChanged, this, - &DeckViewContainer::updateShowVisualDeckStorage); + &DeckViewContainer::setVisualDeckStorageExists); switchToDeckSelectView(); } @@ -207,16 +207,21 @@ void DeckViewContainer::refreshShortcuts() } /** - * Update VDS existence when settings change + * Updates the existence of the embedded Visual Deck Storage, destroying or creating it if needed. + * Note that this change is temporary; the VDS may get recreated when the view transitions to the deck select state, + * depending on current settings. */ -void DeckViewContainer::updateShowVisualDeckStorage(bool enabled) +void DeckViewContainer::setVisualDeckStorageExists(bool exists) { - if (enabled) { - tryCreateVisualDeckStorageWidget(); + if (exists) { // view mode state isn't stored in a field, so we determine state by checking the button - bool isDeckSelectView = loadLocalButton->isEnabled(); - visualDeckStorageWidget->setHidden(!isDeckSelectView); - deckView->setHidden(isDeckSelectView); + if (loadLocalButton->isEnabled()) { + // We only need to handle the setting changing while in deck select state; tryCreate already gets called + // when switching from deck loaded to deck select state + tryCreateVisualDeckStorageWidget(); + visualDeckStorageWidget->setHidden(false); + deckView->setHidden(true); + } } else { if (visualDeckStorageWidget) { visualDeckStorageWidget->deleteLater(); diff --git a/cockatrice/src/game/deckview/deck_view_container.h b/cockatrice/src/game/deckview/deck_view_container.h index 7926cf54f..c841c5934 100644 --- a/cockatrice/src/game/deckview/deck_view_container.h +++ b/cockatrice/src/game/deckview/deck_view_container.h @@ -66,7 +66,6 @@ private slots: void sideboardLockButtonClicked(); void updateSideboardLockButtonText(); void refreshShortcuts(); - void updateShowVisualDeckStorage(bool enabled); signals: void newCardAdded(AbstractCardItem *card); void notIdle(); @@ -78,6 +77,7 @@ public: void readyAndUpdate(); void setSideboardLocked(bool locked); void setDeck(const DeckLoader &deck); + void setVisualDeckStorageExists(bool exists); public slots: void loadDeckFromFile(const QString &filePath);