mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
add option to foil cards in a deck
Signed-off-by: Jamin W. Collins <jamin.collins@gmail.com>
This commit is contained in:
@@ -27,6 +27,7 @@ import forge.gui.GuiUtils;
|
||||
import forge.gui.framework.*;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.PaperCard;
|
||||
import forge.itemmanager.CardManager;
|
||||
import forge.itemmanager.ItemManager;
|
||||
import forge.itemmanager.SItemManagerUtil;
|
||||
import forge.menus.IMenuProvider;
|
||||
@@ -472,6 +473,65 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Add context menu entries for foiling cards
|
||||
*/
|
||||
public void addMakeFoils() {
|
||||
final int max = getMaxMoveQuantity();
|
||||
if (max == 0) { return; }
|
||||
|
||||
addMakeFoil(1);
|
||||
if (max == 1) { return; }
|
||||
|
||||
int qty = FModel.getPreferences().getPrefInt(FPref.DECK_DEFAULT_CARD_LIMIT);
|
||||
if (qty > max) {
|
||||
qty = max;
|
||||
}
|
||||
|
||||
addMakeFoil(qty);
|
||||
if (max == 2) { return; }
|
||||
|
||||
addMakeFoil(-max);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the individual context menu entry for foiling the requested number of cards
|
||||
*
|
||||
* @param qty a negative quantity will prompt the user for a number
|
||||
*/
|
||||
private void addMakeFoil(int qty) {
|
||||
final int shortcutModifiers = 0;
|
||||
String label = "Foil " + SItemManagerUtil.getItemDisplayString(getItemManager().getSelectedItems(), qty, false);
|
||||
|
||||
GuiUtils.addMenuItem(menu, label, null, new Runnable() {
|
||||
@Override public void run() {
|
||||
Integer quantity = qty;
|
||||
if (quantity < 0) {
|
||||
quantity = GuiChoose.getInteger("Choose a value for X", 1, -quantity, 20);
|
||||
if (quantity == null) { return; }
|
||||
}
|
||||
// remove *quantity* instances of existing card
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.removeSelectedCards(false, quantity);
|
||||
// get the currently selected card from the editor
|
||||
CardManager cardManager = (CardManager) CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getCatalogManager();
|
||||
PaperCard existingCard = cardManager.getSelectedItem();
|
||||
// make a foiled version based on the original
|
||||
PaperCard foiledCard = new PaperCard(
|
||||
existingCard.getRules(),
|
||||
existingCard.getEdition(),
|
||||
existingCard.getRarity(),
|
||||
existingCard.getArtIndex(),
|
||||
true);
|
||||
// bounce the new card through the inventory and *quantity* into the deck
|
||||
cardManager.addItem(foiledCard, 1);
|
||||
cardManager.setSelectedItem(foiledCard);
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.addSelectedCards(false, quantity);
|
||||
// clean up the inventory
|
||||
cardManager.removeItem(foiledCard, 1);
|
||||
}
|
||||
}, true, shortcutModifiers == 0);
|
||||
}
|
||||
|
||||
private void addItem(final String verb, final String dest, final boolean toAlternate, final int qty, final int shortcutModifiers) {
|
||||
String label = verb + " " + SItemManagerUtil.getItemDisplayString(getItemManager().getSelectedItems(), qty, false);
|
||||
if (dest != null && !dest.isEmpty()) {
|
||||
|
||||
@@ -134,7 +134,7 @@ public final class CEditorCommander extends ACEditorBase<PaperCard, Deck> {
|
||||
*/
|
||||
@Override
|
||||
protected void buildRemoveContextMenu(EditorContextMenuBuilder cmb) {
|
||||
CEditorConstructed.buildRemoveContextMenu(cmb, sectionMode);
|
||||
CEditorConstructed.buildRemoveContextMenu(cmb, sectionMode, true);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -218,11 +218,14 @@ public final class CEditorConstructed extends ACEditorBase<PaperCard, Deck> {
|
||||
}
|
||||
}
|
||||
|
||||
public static void buildRemoveContextMenu(EditorContextMenuBuilder cmb, DeckSection sectionMode) {
|
||||
public static void buildRemoveContextMenu(EditorContextMenuBuilder cmb, DeckSection sectionMode, boolean foilAvailable) {
|
||||
switch (sectionMode) {
|
||||
case Main:
|
||||
cmb.addMoveItems("Remove", "from deck");
|
||||
cmb.addMoveAlternateItems("Move", "to sideboard");
|
||||
if (foilAvailable) {
|
||||
cmb.addMakeFoils();
|
||||
}
|
||||
break;
|
||||
case Sideboard:
|
||||
cmb.addMoveItems("Remove", "from sideboard");
|
||||
@@ -259,7 +262,7 @@ public final class CEditorConstructed extends ACEditorBase<PaperCard, Deck> {
|
||||
*/
|
||||
@Override
|
||||
protected void buildRemoveContextMenu(EditorContextMenuBuilder cmb) {
|
||||
buildRemoveContextMenu(cmb, sectionMode);
|
||||
buildRemoveContextMenu(cmb, sectionMode, true);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -224,7 +224,7 @@ public final class CEditorQuest extends ACEditorBase<PaperCard, Deck> {
|
||||
*/
|
||||
@Override
|
||||
protected void buildRemoveContextMenu(final EditorContextMenuBuilder cmb) {
|
||||
CEditorConstructed.buildRemoveContextMenu(cmb, sectionMode);
|
||||
CEditorConstructed.buildRemoveContextMenu(cmb, sectionMode, false);
|
||||
AddRatingItem(cmb, 1);
|
||||
AddRatingItem(cmb, 2);
|
||||
AddRatingItem(cmb, 3);
|
||||
|
||||
Reference in New Issue
Block a user