update AdventureDeckEditor

- show Shop prices, show Auto Sell / No Sell card label
This commit is contained in:
Anthony Calosa
2024-09-01 07:12:53 +08:00
parent cadf278871
commit cdbc3cfab7
12 changed files with 183 additions and 27 deletions

View File

@@ -17,7 +17,12 @@ import forge.assets.FSkinFont;
import forge.assets.FSkinImage;
import forge.card.CardEdition;
import forge.card.CardZoom;
import forge.deck.*;
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.game.GameType;
import forge.gamemodes.limited.BoosterDraft;
import forge.item.InventoryItem;
@@ -32,10 +37,13 @@ import forge.menu.FPopupMenu;
import forge.model.FModel;
import forge.screens.FScreen;
import forge.screens.TabPageScreen;
import forge.toolbox.*;
import forge.toolbox.FContainer;
import forge.toolbox.FEvent;
import forge.toolbox.FLabel;
import forge.toolbox.FOptionPane;
import forge.toolbox.GuiChoose;
import forge.util.Callback;
import forge.util.ItemPool;
import forge.util.Localizer;
import forge.util.Utils;
import org.apache.commons.lang3.StringUtils;
@@ -48,7 +56,7 @@ public class AdventureDeckEditor extends TabPageScreen<AdventureDeckEditor> {
Deck contents = new Deck();
protected ContentPreviewPage(Deck cardsToShow) {
super(ItemManagerConfig.QUEST_EDITOR_POOL, Localizer.getInstance().getMessage("lblInventory"), CATALOG_ICON);
super(ItemManagerConfig.QUEST_EDITOR_POOL, Forge.getLocalizer().getMessage("lblInventory"), CATALOG_ICON);
contents = cardsToShow;
}
@@ -66,7 +74,7 @@ public class AdventureDeckEditor extends TabPageScreen<AdventureDeckEditor> {
private static class DraftPackPage extends CatalogPage {
protected DraftPackPage() {
super(ItemManagerConfig.DRAFT_PACK, Localizer.getInstance().getMessage("lblPackN", String.valueOf(1)), FSkinImage.PACK);
super(ItemManagerConfig.DRAFT_PACK, Forge.getLocalizer().getMessage("lblPackN", String.valueOf(1)), FSkinImage.PACK);
}
@Override
@@ -134,13 +142,13 @@ public class AdventureDeckEditor extends TabPageScreen<AdventureDeckEditor> {
private static class StoreCatalogPage extends CatalogPage {
protected StoreCatalogPage() {
super(ItemManagerConfig.QUEST_EDITOR_POOL, Localizer.getInstance().getMessage("lblInventory"), CATALOG_ICON);
super(ItemManagerConfig.QUEST_EDITOR_POOL, Forge.getLocalizer().getMessage("lblInventory"), CATALOG_ICON);
Current.player().onGoldChange(() -> lblGold.setText(String.valueOf(AdventurePlayer.current().getGold())));
}
@Override
protected void buildMenu(final FDropDownMenu menu, final PaperCard card) {
addItem(menu, "Sell for ", String.valueOf(AdventurePlayer.current().cardSellPrice(card)), SIDEBOARD_ICON, false, true, new Callback<Integer>() {
addItem(menu, Forge.getLocalizer().getMessage("lblSellFor"), String.valueOf(AdventurePlayer.current().cardSellPrice(card)), SIDEBOARD_ICON, false, true, new Callback<Integer>() {
@Override
public void run(Integer result) {
if (result == null || result <= 0) {
@@ -169,7 +177,7 @@ public class AdventureDeckEditor extends TabPageScreen<AdventureDeckEditor> {
private static class CollectionCatalogPage extends CatalogPage {
protected CollectionCatalogPage() {
super(ItemManagerConfig.QUEST_EDITOR_POOL, Localizer.getInstance().getMessage("lblInventory"), CATALOG_ICON);
super(ItemManagerConfig.QUEST_EDITOR_POOL, Forge.getLocalizer().getMessage("lblInventory"), CATALOG_ICON);
}
@Override
@@ -184,6 +192,8 @@ public class AdventureDeckEditor extends TabPageScreen<AdventureDeckEditor> {
if (!cardManager.isInfinite()) {
removeCard(card, result);
}
if (Current.player().autoSellCards.contains(card))
Current.player().autoSellCards.remove(card);
getMainDeckPage().addCard(card, result);
}
});
@@ -198,6 +208,8 @@ public class AdventureDeckEditor extends TabPageScreen<AdventureDeckEditor> {
if (!cardManager.isInfinite()) {
removeCard(card, result);
}
if (Current.player().autoSellCards.contains(card))
Current.player().autoSellCards.remove(card);
getSideboardPage().addCard(card, result);
}
});
@@ -208,17 +220,17 @@ public class AdventureDeckEditor extends TabPageScreen<AdventureDeckEditor> {
int sellableCount = Current.player().getSellableCards().count(card);
if (noSellCount > 0) {
FMenuItem unsellableCount = new FMenuItem("Unsellable (" + noSellCount + ")", null, null);
FMenuItem unsellableCount = new FMenuItem(Forge.getLocalizer().getMessage("lblUnsellableCount", noSellCount), null, null);
unsellableCount.setEnabled(false);
menu.addItem(unsellableCount);
}
if (sellableCount > 0) {
FMenuItem moveToAutosell = new FMenuItem("Move to Autosell (" + autoSellCount + " / " + sellableCount + ")", Forge.hdbuttons ? FSkinImage.HDMINUS : FSkinImage.MINUS, e1 -> Current.player().autoSellCards.add(card));
FMenuItem moveToAutosell = new FMenuItem(Forge.getLocalizer().getMessage("lbltoSell", autoSellCount, sellableCount), Forge.hdbuttons ? FSkinImage.HDMINUS : FSkinImage.MINUS, e1 -> Current.player().autoSellCards.add(card));
moveToAutosell.setEnabled(sellableCount - autoSellCount > 0);
menu.addItem(moveToAutosell);
FMenuItem moveToCatalog = new FMenuItem("Move back to Catalog (" + autoSellCount + " / " + sellableCount + ")", Forge.hdbuttons ? FSkinImage.HDPLUS : FSkinImage.PLUS, e1 -> Current.player().autoSellCards.remove(card));
FMenuItem moveToCatalog = new FMenuItem(Forge.getLocalizer().getMessage("lbltoInventory", autoSellCount, sellableCount), Forge.hdbuttons ? FSkinImage.HDPLUS : FSkinImage.PLUS, e1 -> Current.player().autoSellCards.remove(card));
moveToCatalog.setEnabled(autoSellCount > 0);
menu.addItem(moveToCatalog);
}
@@ -533,28 +545,28 @@ public class AdventureDeckEditor extends TabPageScreen<AdventureDeckEditor> {
}
if (!isShop && catalogPage != null && !(catalogPage instanceof ContentPreviewPage)) {
if (catalogPage.showNoSellCards) {
FMenuItem hideNoSell = new FMenuItem("Hide No-Sell cards", Forge.hdbuttons ? FSkinImage.HDMINUS : FSkinImage.MINUS, e1 -> catalogPage.toggleNoSellCards(false));
FMenuItem hideNoSell = new FMenuItem(Forge.getLocalizer().getMessage("lblHideNoSell"), Forge.hdbuttons ? FSkinImage.HDMINUS : FSkinImage.MINUS, e1 -> catalogPage.toggleNoSellCards(false));
addItem(hideNoSell);
hideNoSell.setEnabled(catalogPage.showAutoSellCards || catalogPage.showCollectionCards);
} else {
addItem(new FMenuItem("Show No-Sell cards", Forge.hdbuttons ? FSkinImage.HDPLUS : FSkinImage.PLUS, e1 -> catalogPage.toggleNoSellCards(true)));
addItem(new FMenuItem(Forge.getLocalizer().getMessage("lblShowNoSell"), Forge.hdbuttons ? FSkinImage.HDPLUS : FSkinImage.PLUS, e1 -> catalogPage.toggleNoSellCards(true)));
}
if (catalogPage.showAutoSellCards) {
FMenuItem hideAutoSell = new FMenuItem("Hide Auto-Sell cards", Forge.hdbuttons ? FSkinImage.HDMINUS : FSkinImage.MINUS, e1 -> catalogPage.toggleAutoSellCards(false));
FMenuItem hideAutoSell = new FMenuItem(Forge.getLocalizer().getMessage("lblHideAutoSell"), Forge.hdbuttons ? FSkinImage.HDMINUS : FSkinImage.MINUS, e1 -> catalogPage.toggleAutoSellCards(false));
addItem(hideAutoSell);
hideAutoSell.setEnabled(catalogPage.showCollectionCards || catalogPage.showNoSellCards);
} else {
addItem(new FMenuItem("Show Auto-Sell cards", Forge.hdbuttons ? FSkinImage.HDPLUS : FSkinImage.PLUS, e1 -> catalogPage.toggleAutoSellCards(true)));
addItem(new FMenuItem(Forge.getLocalizer().getMessage("lblShowAutoSell"), Forge.hdbuttons ? FSkinImage.HDPLUS : FSkinImage.PLUS, e1 -> catalogPage.toggleAutoSellCards(true)));
}
if (catalogPage.showCollectionCards) {
FMenuItem hideCollection = new FMenuItem("Hide Collection cards", Forge.hdbuttons ? FSkinImage.HDMINUS : FSkinImage.MINUS, e1 -> catalogPage.toggleCollectionCards(false));
FMenuItem hideCollection = new FMenuItem(Forge.getLocalizer().getMessage("lblHideCollection"), Forge.hdbuttons ? FSkinImage.HDMINUS : FSkinImage.MINUS, e1 -> catalogPage.toggleCollectionCards(false));
addItem(hideCollection);
hideCollection.setEnabled(catalogPage.showAutoSellCards || catalogPage.showNoSellCards);
} else {
addItem(new FMenuItem("Show Collection cards", Forge.hdbuttons ? FSkinImage.HDPLUS : FSkinImage.PLUS, e1 -> catalogPage.toggleCollectionCards(true)));
addItem(new FMenuItem(Forge.getLocalizer().getMessage("lblShowCollection"), Forge.hdbuttons ? FSkinImage.HDPLUS : FSkinImage.PLUS, e1 -> catalogPage.toggleCollectionCards(true)));
}
if (!catalogPage.showNoSellCards || !catalogPage.showAutoSellCards || !catalogPage.showCollectionCards) {
addItem(new FMenuItem("Show All cards", Forge.hdbuttons ? FSkinImage.HDPLUS : FSkinImage.PLUS, e1 -> catalogPage.showAllCards()));
addItem(new FMenuItem(Forge.getLocalizer().getMessage("lblShowAll"), Forge.hdbuttons ? FSkinImage.HDPLUS : FSkinImage.PLUS, e1 -> catalogPage.showAllCards()));
}
}
((DeckEditorPage) getSelectedPage()).buildDeckMenu(this);

View File

@@ -2,6 +2,8 @@ package forge.adventure.scene;
import com.badlogic.gdx.scenes.scene2d.Stage;
import forge.adventure.data.AdventureEventData;
import forge.adventure.player.AdventurePlayer;
import forge.item.PaperCard;
import forge.screens.FScreen;
/**
@@ -60,4 +62,11 @@ public class DeckEditScene extends ForgeScene {
return screen;
}
public boolean isAutoSell(PaperCard pc) {
return AdventurePlayer.current().getAutoSellCards().contains(pc);
}
public boolean isNoSell(PaperCard pc) {
return AdventurePlayer.current().getNoSellCards().contains(pc);
}
}

View File

@@ -54,7 +54,7 @@ public class ShopScene extends ForgeScene {
int cards = 0;
for (PaperCard cardToSell: Current.player().autoSellCards.toFlatList()) {
cards++;
profit += AdventurePlayer.current().cardSellPrice(cardToSell);
profit += getCardPrice(cardToSell);
}
if (!confirmAutosell(profit, cards, changes.getTownPriceModifier())) {
return;
@@ -71,4 +71,7 @@ public class ShopScene extends ForgeScene {
AdventurePlayer.current().loadChanges(changes);
this.changes = changes;
}
public int getCardPrice(PaperCard pc) {
return AdventurePlayer.current().cardSellPrice(pc);
}
}

View File

@@ -10,6 +10,8 @@ import forge.Forge;
import forge.Forge.KeyInputAdapter;
import forge.Graphics;
import forge.ImageKeys;
import forge.adventure.scene.DeckEditScene;
import forge.adventure.scene.ShopScene;
import forge.assets.*;
import forge.assets.FSkinColor.Colors;
import forge.card.*;
@@ -965,6 +967,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
private class ItemInfo extends FDisplayObject implements Entry<InventoryItem, Integer> {
private final T item;
private Integer cardPrice;
private final Group group;
private int index;
private CardStackPosition pos;
@@ -996,6 +999,17 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
return 1;
}
private void drawCardLabel(Graphics g, String message, Color bgColor, float x, float y, float w, float h) {
FSkinFont skinFont = FSkinFont.forHeight(w / 7);
float fontheight = skinFont.getLineHeight();
float ymod = h / 2 - fontheight / 2;
float oldAlpha = g.getfloatAlphaComposite();
g.setAlphaComposite(0.4f);
g.fillRect(bgColor, x, y + ymod, w, fontheight);
g.setAlphaComposite(oldAlpha);
g.drawText(message, skinFont, Color.WHITE, x, y, w, h, false, Align.center, true);
}
@Override
public void draw(Graphics g) {
final float x = getLeft() - group.getScrollLeft();
@@ -1043,6 +1057,20 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
String value = String.valueOf(draftRank);
g.drawText(value, FSkinFont.forHeight(rankSize / 4), Color.WHITE, x, y, w, h, true, Align.center, true);
}
if (Forge.isMobileAdventureMode) {
if (Forge.getCurrentScene() instanceof ShopScene) {
if (cardPrice == null)
cardPrice = ((ShopScene) Forge.getCurrentScene()).getCardPrice((PaperCard) item);
drawCardLabel(g, "$" + cardPrice, Color.GOLD, x, y ,w ,h);
} else if (Forge.getCurrentScene() instanceof DeckEditScene) {
if (((DeckEditScene) Forge.getCurrentScene()).isAutoSell((PaperCard) item)) {
drawCardLabel(g, Forge.getLocalizer().getMessage("lblAutoSell"), Color.GREEN, x, y, w, h);
} else if (((DeckEditScene) Forge.getCurrentScene()).isNoSell((PaperCard) item)) {
drawCardLabel(g, Forge.getLocalizer().getMessage("lblNoSell"), Color.RED, x, y, w, h);
}
}
}
} else if (item instanceof ConquestCommander) {
CardRenderer.drawCard(g, ((ConquestCommander) item).getCard(), x, y, w, h, pos);
} else if (deckSelectMode) {