mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +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.gui.framework.*;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
|
import forge.itemmanager.CardManager;
|
||||||
import forge.itemmanager.ItemManager;
|
import forge.itemmanager.ItemManager;
|
||||||
import forge.itemmanager.SItemManagerUtil;
|
import forge.itemmanager.SItemManagerUtil;
|
||||||
import forge.menus.IMenuProvider;
|
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) {
|
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);
|
String label = verb + " " + SItemManagerUtil.getItemDisplayString(getItemManager().getSelectedItems(), qty, false);
|
||||||
if (dest != null && !dest.isEmpty()) {
|
if (dest != null && !dest.isEmpty()) {
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ public final class CEditorCommander extends ACEditorBase<PaperCard, Deck> {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void buildRemoveContextMenu(EditorContextMenuBuilder cmb) {
|
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) {
|
switch (sectionMode) {
|
||||||
case Main:
|
case Main:
|
||||||
cmb.addMoveItems("Remove", "from deck");
|
cmb.addMoveItems("Remove", "from deck");
|
||||||
cmb.addMoveAlternateItems("Move", "to sideboard");
|
cmb.addMoveAlternateItems("Move", "to sideboard");
|
||||||
|
if (foilAvailable) {
|
||||||
|
cmb.addMakeFoils();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case Sideboard:
|
case Sideboard:
|
||||||
cmb.addMoveItems("Remove", "from sideboard");
|
cmb.addMoveItems("Remove", "from sideboard");
|
||||||
@@ -259,7 +262,7 @@ public final class CEditorConstructed extends ACEditorBase<PaperCard, Deck> {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected void buildRemoveContextMenu(EditorContextMenuBuilder cmb) {
|
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
|
@Override
|
||||||
protected void buildRemoveContextMenu(final EditorContextMenuBuilder cmb) {
|
protected void buildRemoveContextMenu(final EditorContextMenuBuilder cmb) {
|
||||||
CEditorConstructed.buildRemoveContextMenu(cmb, sectionMode);
|
CEditorConstructed.buildRemoveContextMenu(cmb, sectionMode, false);
|
||||||
AddRatingItem(cmb, 1);
|
AddRatingItem(cmb, 1);
|
||||||
AddRatingItem(cmb, 2);
|
AddRatingItem(cmb, 2);
|
||||||
AddRatingItem(cmb, 3);
|
AddRatingItem(cmb, 3);
|
||||||
|
|||||||
Reference in New Issue
Block a user