Support adding correct number from within main deck

This commit is contained in:
drdev
2014-06-22 16:35:19 +00:00
parent 33620c8c05
commit 406e27d9dc

View File

@@ -543,7 +543,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
private static final List<String> limitExceptions = Arrays.asList( private static final List<String> limitExceptions = Arrays.asList(
new String[]{"Relentless Rats", "Shadowborn Apostle"}); new String[]{"Relentless Rats", "Shadowborn Apostle"});
private ItemPool<PaperCard> getAllowedAdditions(Iterable<Entry<PaperCard, Integer>> itemsToAdd) { private ItemPool<PaperCard> getAllowedAdditions(Iterable<Entry<PaperCard, Integer>> itemsToAdd, boolean isAddSource) {
ItemPool<PaperCard> additions = new ItemPool<PaperCard>(cardManager.getGenericType()); ItemPool<PaperCard> additions = new ItemPool<PaperCard>(cardManager.getGenericType());
CardLimit limit = parentScreen.getCardLimit(); CardLimit limit = parentScreen.getCardLimit();
Deck deck = parentScreen.getDeck(); Deck deck = parentScreen.getDeck();
@@ -568,21 +568,26 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
max -= deck.get(DeckSection.Commander).count(card); max -= deck.get(DeckSection.Commander).count(card);
} }
} }
if (qty > max) { if (isAddSource) {
qty = max; if (qty > max) {
qty = max;
}
if (qty > 0) {
additions.add(item, qty);
}
} }
if (qty > 0) { else { //if not source of items being added, use max directly
additions.add(item, qty); additions.add(item, max);
} }
} }
return additions; return additions;
} }
private int getMaxMoveQuantity(boolean isAddMenu) { private int getMaxMoveQuantity(boolean isAddMenu, boolean isAddSource) {
ItemPool<PaperCard> selectedItemPool = cardManager.getSelectedItemPool(); ItemPool<PaperCard> selectedItemPool = cardManager.getSelectedItemPool();
if (isAddMenu) { if (isAddMenu) {
selectedItemPool = getAllowedAdditions(selectedItemPool); selectedItemPool = getAllowedAdditions(selectedItemPool, isAddSource);
} }
if (selectedItemPool.isEmpty()) { if (selectedItemPool.isEmpty()) {
return 0; return 0;
@@ -596,8 +601,8 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
return max; return max;
} }
protected void addItem(FDropDownMenu menu, final String verb, String dest, FImage icon, boolean isAddMenu, final Callback<Integer> callback) { protected void addItem(FDropDownMenu menu, final String verb, String dest, FImage icon, boolean isAddMenu, boolean isAddSource, final Callback<Integer> callback) {
final int max = getMaxMoveQuantity(isAddMenu); final int max = getMaxMoveQuantity(isAddMenu, isAddSource);
if (max == 0) { return; } if (max == 0) { return; }
String label = verb; String label = verb;
@@ -677,7 +682,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
@Override @Override
protected void buildMenu(final FDropDownMenu menu, final PaperCard card) { protected void buildMenu(final FDropDownMenu menu, final PaperCard card) {
addItem(menu, "Add", "to main deck", parentScreen.getMainDeckPage().getIcon(), true, new Callback<Integer>() { addItem(menu, "Add", "to main deck", parentScreen.getMainDeckPage().getIcon(), true, true, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -685,7 +690,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
parentScreen.getMainDeckPage().addCard(card, result); parentScreen.getMainDeckPage().addCard(card, result);
} }
}); });
addItem(menu, "Add", "to sideboard", parentScreen.getSideboardPage().getIcon(), true, new Callback<Integer>() { addItem(menu, "Add", "to sideboard", parentScreen.getSideboardPage().getIcon(), true, true, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -783,7 +788,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
protected void buildMenu(final FDropDownMenu menu, final PaperCard card) { protected void buildMenu(final FDropDownMenu menu, final PaperCard card) {
switch (deckSection) { switch (deckSection) {
case Main: case Main:
addItem(menu, "Add", null, FSkinImage.PLUS, true, new Callback<Integer>() { addItem(menu, "Add", null, FSkinImage.PLUS, true, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -792,7 +797,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
} }
}); });
if (!parentScreen.isLimitedEditor()) { if (!parentScreen.isLimitedEditor()) {
addItem(menu, "Remove", null, FSkinImage.MINUS, false, new Callback<Integer>() { addItem(menu, "Remove", null, FSkinImage.MINUS, false, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -804,7 +809,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
} }
}); });
} }
addItem(menu, "Move", "to sideboard", parentScreen.getSideboardPage().getIcon(), false, new Callback<Integer>() { addItem(menu, "Move", "to sideboard", parentScreen.getSideboardPage().getIcon(), false, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -815,7 +820,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
}); });
break; break;
case Sideboard: case Sideboard:
addItem(menu, "Add", null, FSkinImage.PLUS, true, new Callback<Integer>() { addItem(menu, "Add", null, FSkinImage.PLUS, true, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -824,7 +829,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
} }
}); });
if (!parentScreen.isLimitedEditor()) { if (!parentScreen.isLimitedEditor()) {
addItem(menu, "Remove", null, FSkinImage.MINUS, false, new Callback<Integer>() { addItem(menu, "Remove", null, FSkinImage.MINUS, false, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -836,7 +841,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
} }
}); });
} }
addItem(menu, "Move", "to main deck", parentScreen.getMainDeckPage().getIcon(), false, new Callback<Integer>() { addItem(menu, "Move", "to main deck", parentScreen.getMainDeckPage().getIcon(), false, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -847,7 +852,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
}); });
break; break;
case Commander: case Commander:
addItem(menu, "Remove", null, FSkinImage.MINUS, false, new Callback<Integer>() { addItem(menu, "Remove", null, FSkinImage.MINUS, false, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -857,7 +862,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
}); });
break; break;
case Avatar: case Avatar:
addItem(menu, "Remove", null, FSkinImage.MINUS, false, new Callback<Integer>() { addItem(menu, "Remove", null, FSkinImage.MINUS, false, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -867,7 +872,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
}); });
break; break;
case Schemes: case Schemes:
addItem(menu, "Add", null, FSkinImage.PLUS, true, new Callback<Integer>() { addItem(menu, "Add", null, FSkinImage.PLUS, true, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -875,7 +880,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
addCard(card, result); addCard(card, result);
} }
}); });
addItem(menu, "Remove", null, FSkinImage.MINUS, false, new Callback<Integer>() { addItem(menu, "Remove", null, FSkinImage.MINUS, false, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -885,7 +890,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
}); });
break; break;
case Planes: case Planes:
addItem(menu, "Add", null, FSkinImage.PLUS, true, new Callback<Integer>() { addItem(menu, "Add", null, FSkinImage.PLUS, true, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -893,7 +898,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
addCard(card, result); addCard(card, result);
} }
}); });
addItem(menu, "Remove", null, FSkinImage.MINUS, false, new Callback<Integer>() { addItem(menu, "Remove", null, FSkinImage.MINUS, false, false, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == null || result <= 0) { return; } if (result == null || result <= 0) { return; }
@@ -948,14 +953,14 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
@Override @Override
protected void buildMenu(final FDropDownMenu menu, final PaperCard card) { protected void buildMenu(final FDropDownMenu menu, final PaperCard card) {
addItem(menu, "Add", "to main deck", parentScreen.getMainDeckPage().getIcon(), true, new Callback<Integer>() { addItem(menu, "Add", "to main deck", parentScreen.getMainDeckPage().getIcon(), true, true, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { //ignore quantity public void run(Integer result) { //ignore quantity
parentScreen.getMainDeckPage().addCard(card); parentScreen.getMainDeckPage().addCard(card);
afterCardPicked(card); afterCardPicked(card);
} }
}); });
addItem(menu, "Add", "to sideboard", parentScreen.getSideboardPage().getIcon(), true, new Callback<Integer>() { addItem(menu, "Add", "to sideboard", parentScreen.getSideboardPage().getIcon(), true, true, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { //ignore quantity public void run(Integer result) { //ignore quantity
parentScreen.getSideboardPage().addCard(card); parentScreen.getSideboardPage().addCard(card);