From 9f07bc9a988e2ff923ee951623c855dfbf576ce4 Mon Sep 17 00:00:00 2001 From: Chris H Date: Mon, 4 Nov 2024 18:46:27 -0500 Subject: [PATCH] Return false instead of throw if an illegal draft choice is made --- .../adventure/player/AdventurePlayer.java | 3 +- .../adventure/scene/AdventureDeckEditor.java | 39 +++++++++++++------ forge-gui/res/languages/de-DE.properties | 2 + forge-gui/res/languages/en-US.properties | 2 + forge-gui/res/languages/es-ES.properties | 2 + forge-gui/res/languages/fr-FR.properties | 2 + forge-gui/res/languages/it-IT.properties | 2 + forge-gui/res/languages/ja-JP.properties | 2 + forge-gui/res/languages/pt-BR.properties | 2 + forge-gui/res/languages/zh-CN.properties | 2 + 10 files changed, 45 insertions(+), 13 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java index aa2646d4faf..b3caed12c6a 100644 --- a/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java +++ b/forge-gui-mobile/src/forge/adventure/player/AdventurePlayer.java @@ -907,8 +907,7 @@ public class AdventurePlayer implements Serializable, SaveFileContent { } public void sellCard(PaperCard card, Integer result) { - float price = CardUtil.getCardPrice(card) * result; - price *= difficultyData.sellFactor; + float price = cardSellPrice(card) * result; cards.remove(card, result); addGold((int) price); } diff --git a/forge-gui-mobile/src/forge/adventure/scene/AdventureDeckEditor.java b/forge-gui-mobile/src/forge/adventure/scene/AdventureDeckEditor.java index 28d812a139e..6a41ee169f1 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/AdventureDeckEditor.java +++ b/forge-gui-mobile/src/forge/adventure/scene/AdventureDeckEditor.java @@ -17,12 +17,7 @@ import forge.assets.FSkinFont; import forge.assets.FSkinImage; import forge.card.CardEdition; import forge.card.CardZoom; -import forge.deck.AddBasicLandsDialog; -import forge.deck.CardPool; -import forge.deck.Deck; -import forge.deck.DeckFormat; -import forge.deck.DeckSection; -import forge.deck.FDeckViewer; +import forge.deck.*; import forge.game.GameType; import forge.gamemodes.limited.BoosterDraft; import forge.item.InventoryItem; @@ -37,11 +32,7 @@ import forge.menu.FPopupMenu; import forge.model.FModel; import forge.screens.FScreen; import forge.screens.TabPageScreen; -import forge.toolbox.FContainer; -import forge.toolbox.FEvent; -import forge.toolbox.FLabel; -import forge.toolbox.FOptionPane; -import forge.toolbox.GuiChoose; +import forge.toolbox.*; import forge.util.Callback; import forge.util.ItemPool; import forge.util.Utils; @@ -568,6 +559,32 @@ public class AdventureDeckEditor extends TabPageScreen { if (!catalogPage.showNoSellCards || !catalogPage.showAutoSellCards || !catalogPage.showCollectionCards) { addItem(new FMenuItem(Forge.getLocalizer().getMessage("lblShowAll"), Forge.hdbuttons ? FSkinImage.HDPLUS : FSkinImage.PLUS, e1 -> catalogPage.showAllCards())); } + + // Add bulk sell menu option. This will sell all cards in the current filter. + int count = 0; + int value = 0; + + for (Map.Entry entry : catalogPage.cardManager.getFilteredItems()) { + value += AdventurePlayer.current().cardSellPrice(entry.getKey()) * entry.getValue(); + count += entry.getValue(); + } + + final int finalCount = count; + final int finalValue = value; + addItem(new FMenuItem(Forge.getLocalizer().getMessage("lblSellCurrentFilters"), FSkinImage.QUEST_COINSTACK, e1 -> { + FOptionPane.showConfirmDialog(Forge.getLocalizer().getMessage("lblSellAllConfirm", finalCount, finalValue), Forge.getLocalizer().getMessage("lblSellCurrentFilters"), Forge.getLocalizer().getMessage("lblSell"), Forge.getLocalizer().getMessage("lblCancel"), false, new Callback() { + @Override + public void run(Boolean result) { + if (result) { + for (Map.Entry entry : catalogPage.cardManager.getFilteredItems()) { + AdventurePlayer.current().sellCard(entry.getKey(), entry.getValue()); + } + catalogPage.refresh(); + lblGold.setText(String.valueOf(AdventurePlayer.current().getGold())); + } + } + }); + })); } ((DeckEditorPage) getSelectedPage()).buildDeckMenu(this); } diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index f211421664d..8a174082ab3 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -3436,6 +3436,8 @@ lblShowNoSell=No-Sell Anzeigen lblShowAll=Alle Anzeigen lblHideCollection=Sammlung Ausblenden lblShowCollection=Sammlung Anzeigen +lblSellCurrentFilters=Sell Displayed Cards +lblSellAllConfirm=You are attempting to sell {0} cards for {1} gold. Selling cards is irreversible. Are you sure you want to proceed? lblCracked=Geknackt! lblTake=Nehmen lblRefund=Erstattung diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index a58aa03789d..76404840d04 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -3169,6 +3169,8 @@ lblShowNoSell=Show No-Sell lblShowAll=Show All lblHideCollection=Hide Collection lblShowCollection=Show Collection +lblSellCurrentFilters=Sell Displayed Cards +lblSellAllConfirm=You are attempting to sell {0} cards for {1} gold. Selling cards is irreversible. Are you sure you want to proceed? lblCracked=Cracked! lblTake=Take lblRefund=Refund diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index 2c465d2db15..1cf465e58b6 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -3450,6 +3450,8 @@ lblShowNoSell=Mostrar No Vender lblShowAll=Mostrar Todo lblHideCollection=Ocultar Colección lblShowCollection=Mostrar Colección +lblSellCurrentFilters=Sell Displayed Cards +lblSellAllConfirm=You are attempting to sell {0} cards for {1} gold. Selling cards is irreversible. Are you sure you want to proceed? lblCracked=¡Agrietado! lblTake=Llevar lblRefund=Reembolso diff --git a/forge-gui/res/languages/fr-FR.properties b/forge-gui/res/languages/fr-FR.properties index e82e3324b32..a2e0cd0b7e9 100644 --- a/forge-gui/res/languages/fr-FR.properties +++ b/forge-gui/res/languages/fr-FR.properties @@ -3444,6 +3444,8 @@ lblShowNoSell=Afficher Non-Vente lblShowAll=Afficher Tout lblHideCollection=Masquer la Collection lblShowCollection=Afficher la Collection +lblSellCurrentFilters=Sell Displayed Cards +lblSellAllConfirm=You are attempting to sell {0} cards for {1} gold. Selling cards is irreversible. Are you sure you want to proceed? lblCracked=Fissuré! lblTake=Prendre lblRefund=Remboursement diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties index 09199d126a6..8693def542e 100644 --- a/forge-gui/res/languages/it-IT.properties +++ b/forge-gui/res/languages/it-IT.properties @@ -3442,6 +3442,8 @@ lblShowNoSell=Mostra Non Vendita lblShowAll=Mostra Tutto lblHideCollection=Nascondi Collezione lblShowCollection=Mostra Collezione +lblSellCurrentFilters=Sell Displayed Cards +lblSellAllConfirm=You are attempting to sell {0} cards for {1} gold. Selling cards is irreversible. Are you sure you want to proceed? lblCracked=Incrinato! lblTake=Prendere lblRefund=Rimborso diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties index dbd710fc60f..47bcd9d87a4 100644 --- a/forge-gui/res/languages/ja-JP.properties +++ b/forge-gui/res/languages/ja-JP.properties @@ -3438,6 +3438,8 @@ lblShowNoSell=ノーセールを表示 lblShowAll=すべて表示 lblHideCollection=コレクションを非表示にする lblShowCollection=ショーコレクション +lblSellCurrentFilters=Sell Displayed Cards +lblSellAllConfirm=You are attempting to sell {0} cards for {1} gold. Selling cards is irreversible. Are you sure you want to proceed? lblCracked=ひび割れた! lblTake=取る lblRefund=返金 diff --git a/forge-gui/res/languages/pt-BR.properties b/forge-gui/res/languages/pt-BR.properties index 144b68e8d06..8fe8bb01055 100644 --- a/forge-gui/res/languages/pt-BR.properties +++ b/forge-gui/res/languages/pt-BR.properties @@ -3528,6 +3528,8 @@ lblShowNoSell=Mostrar Não-Venda lblShowAll=Mostrar Tudo lblHideCollection=Ocultar Coleção lblShowCollection=Mostrar Coleção +lblSellCurrentFilters=Sell Displayed Cards +lblSellAllConfirm=You are attempting to sell {0} cards for {1} gold. Selling cards is irreversible. Are you sure you want to proceed? lblCracked=Rachado! lblTake=Pegar lblRefund=Reembolso diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index 1c432e32f2c..ee872fa1492 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -3429,6 +3429,8 @@ lblShowNoSell=显示不卖 lblShowAll=显示全部 lblHideCollection=隐藏收藏 lblShowCollection=展会系列 +lblSellCurrentFilters=Sell Displayed Cards +lblSellAllConfirm=You are attempting to sell {0} cards for {1} gold. Selling cards is irreversible. Are you sure you want to proceed? lblCracked=破裂了! lblTake=拿 lblRefund=退款