mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
Add Commanders screen for Planar Conquest
This commit is contained in:
6
.gitattributes
vendored
6
.gitattributes
vendored
@@ -1259,10 +1259,11 @@ forge-gui-mobile/src/forge/itemmanager/filters/CardPowerFilter.java -text
|
|||||||
forge-gui-mobile/src/forge/itemmanager/filters/CardSearchFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/CardSearchFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/CardToughnessFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/CardToughnessFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/CardTypeFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/CardTypeFilter.java -text
|
||||||
|
forge-gui-mobile/src/forge/itemmanager/filters/ColorFilter.java -text
|
||||||
|
forge-gui-mobile/src/forge/itemmanager/filters/ComboBoxFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/DeckColorFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/DeckColorFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/DeckFolderFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/DeckFolderFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/DeckFormatFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/DeckFormatFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/DeckSearchFilter.java -text
|
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/DeckStatTypeFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/DeckStatTypeFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/FormatFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/FormatFilter.java -text
|
||||||
forge-gui-mobile/src/forge/itemmanager/filters/ItemFilter.java -text
|
forge-gui-mobile/src/forge/itemmanager/filters/ItemFilter.java -text
|
||||||
@@ -1333,6 +1334,7 @@ forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java -text
|
|||||||
forge-gui-mobile/src/forge/screens/online/OnlineChatScreen.java -text
|
forge-gui-mobile/src/forge/screens/online/OnlineChatScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/online/OnlineLobbyScreen.java -text
|
forge-gui-mobile/src/forge/screens/online/OnlineLobbyScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/online/OnlineMenu.java -text
|
forge-gui-mobile/src/forge/screens/online/OnlineMenu.java -text
|
||||||
|
forge-gui-mobile/src/forge/screens/planarconquest/ConquestCommandersScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/planarconquest/ConquestDeckEditor.java -text
|
forge-gui-mobile/src/forge/screens/planarconquest/ConquestDeckEditor.java -text
|
||||||
forge-gui-mobile/src/forge/screens/planarconquest/ConquestMapScreen.java -text
|
forge-gui-mobile/src/forge/screens/planarconquest/ConquestMapScreen.java -text
|
||||||
forge-gui-mobile/src/forge/screens/planarconquest/ConquestMenu.java -text
|
forge-gui-mobile/src/forge/screens/planarconquest/ConquestMenu.java -text
|
||||||
@@ -18298,11 +18300,11 @@ forge-gui/src/main/java/forge/planarconquest/ConquestData.java -text
|
|||||||
forge-gui/src/main/java/forge/planarconquest/ConquestDataIO.java -text
|
forge-gui/src/main/java/forge/planarconquest/ConquestDataIO.java -text
|
||||||
forge-gui/src/main/java/forge/planarconquest/ConquestDeckMap.java -text
|
forge-gui/src/main/java/forge/planarconquest/ConquestDeckMap.java -text
|
||||||
forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java -text
|
forge-gui/src/main/java/forge/planarconquest/ConquestEvent.java -text
|
||||||
forge-gui/src/main/java/forge/planarconquest/ConquestEventResult.java -text
|
|
||||||
forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java -text
|
forge-gui/src/main/java/forge/planarconquest/ConquestLocation.java -text
|
||||||
forge-gui/src/main/java/forge/planarconquest/ConquestPlane.java -text
|
forge-gui/src/main/java/forge/planarconquest/ConquestPlane.java -text
|
||||||
forge-gui/src/main/java/forge/planarconquest/ConquestPlaneData.java -text
|
forge-gui/src/main/java/forge/planarconquest/ConquestPlaneData.java -text
|
||||||
forge-gui/src/main/java/forge/planarconquest/ConquestPreferences.java -text
|
forge-gui/src/main/java/forge/planarconquest/ConquestPreferences.java -text
|
||||||
|
forge-gui/src/main/java/forge/planarconquest/ConquestRecord.java -text
|
||||||
forge-gui/src/main/java/forge/planarconquest/ConquestUtil.java -text
|
forge-gui/src/main/java/forge/planarconquest/ConquestUtil.java -text
|
||||||
forge-gui/src/main/java/forge/player/GamePlayerUtil.java -text
|
forge-gui/src/main/java/forge/player/GamePlayerUtil.java -text
|
||||||
forge-gui/src/main/java/forge/player/HumanCostDecision.java -text
|
forge-gui/src/main/java/forge/player/HumanCostDecision.java -text
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import forge.game.card.CardView;
|
|||||||
import forge.item.IPaperCard;
|
import forge.item.IPaperCard;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
|
import forge.planarconquest.ConquestCommander;
|
||||||
import forge.properties.ForgePreferences;
|
import forge.properties.ForgePreferences;
|
||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.screens.match.MatchController;
|
import forge.screens.match.MatchController;
|
||||||
@@ -126,6 +127,9 @@ public class CardZoom extends FOverlay {
|
|||||||
if (item instanceof IPaperCard) {
|
if (item instanceof IPaperCard) {
|
||||||
return CardView.getCardForUi((IPaperCard)item);
|
return CardView.getCardForUi((IPaperCard)item);
|
||||||
}
|
}
|
||||||
|
if (item instanceof ConquestCommander) {
|
||||||
|
return CardView.getCardForUi(((ConquestCommander)item).getCard());
|
||||||
|
}
|
||||||
if (item instanceof InventoryItem) {
|
if (item instanceof InventoryItem) {
|
||||||
InventoryItem ii = (InventoryItem)item;
|
InventoryItem ii = (InventoryItem)item;
|
||||||
return new CardView(-1, null, ii.getName(), null, ImageKeys.getImageKey(ii, false));
|
return new CardView(-1, null, ii.getName(), null, ImageKeys.getImageKey(ii, false));
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import forge.game.IHasGameType;
|
|||||||
import forge.itemmanager.filters.AdvancedSearchFilter;
|
import forge.itemmanager.filters.AdvancedSearchFilter;
|
||||||
import forge.itemmanager.filters.DeckColorFilter;
|
import forge.itemmanager.filters.DeckColorFilter;
|
||||||
import forge.itemmanager.filters.DeckFormatFilter;
|
import forge.itemmanager.filters.DeckFormatFilter;
|
||||||
import forge.itemmanager.filters.DeckSearchFilter;
|
|
||||||
import forge.itemmanager.filters.TextSearchFilter;
|
import forge.itemmanager.filters.TextSearchFilter;
|
||||||
import forge.toolbox.FList;
|
import forge.toolbox.FList;
|
||||||
import forge.toolbox.FList.CompactModeHandler;
|
import forge.toolbox.FList.CompactModeHandler;
|
||||||
@@ -70,7 +69,7 @@ public final class DeckManager extends ItemManager<DeckProxy> implements IHasGam
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected TextSearchFilter<DeckProxy> createSearchFilter() {
|
protected TextSearchFilter<DeckProxy> createSearchFilter() {
|
||||||
return new DeckSearchFilter(this);
|
return new TextSearchFilter<DeckProxy>(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -5,10 +5,9 @@ import com.google.common.base.Predicate;
|
|||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.itemmanager.ItemManager;
|
import forge.itemmanager.ItemManager;
|
||||||
import forge.itemmanager.SFilterUtil;
|
import forge.itemmanager.SFilterUtil;
|
||||||
import forge.itemmanager.SItemManagerUtil.StatTypes;
|
|
||||||
|
|
||||||
|
|
||||||
public class CardColorFilter extends StatTypeFilter<PaperCard> {
|
public class CardColorFilter extends ColorFilter<PaperCard> {
|
||||||
public CardColorFilter(ItemManager<? super PaperCard> itemManager0) {
|
public CardColorFilter(ItemManager<? super PaperCard> itemManager0) {
|
||||||
super(itemManager0);
|
super(itemManager0);
|
||||||
}
|
}
|
||||||
@@ -18,20 +17,6 @@ public class CardColorFilter extends StatTypeFilter<PaperCard> {
|
|||||||
return new CardColorFilter(itemManager);
|
return new CardColorFilter(itemManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void buildWidget(Widget widget) {
|
|
||||||
/*if (itemManager instanceof SpellShopManager) {
|
|
||||||
addToggleButton(widget, StatTypes.PACK_OR_DECK);
|
|
||||||
}*/
|
|
||||||
addToggleButton(widget, StatTypes.WHITE);
|
|
||||||
addToggleButton(widget, StatTypes.BLUE);
|
|
||||||
addToggleButton(widget, StatTypes.BLACK);
|
|
||||||
addToggleButton(widget, StatTypes.RED);
|
|
||||||
addToggleButton(widget, StatTypes.GREEN);
|
|
||||||
addToggleButton(widget, StatTypes.COLORLESS);
|
|
||||||
addToggleButton(widget, StatTypes.MULTICOLOR);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final Predicate<PaperCard> buildPredicate() {
|
protected final Predicate<PaperCard> buildPredicate() {
|
||||||
return SFilterUtil.buildColorFilter(buttonMap);
|
return SFilterUtil.buildColorFilter(buttonMap);
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package forge.itemmanager.filters;
|
||||||
|
|
||||||
|
import forge.item.InventoryItem;
|
||||||
|
import forge.itemmanager.ItemManager;
|
||||||
|
import forge.itemmanager.SItemManagerUtil.StatTypes;
|
||||||
|
|
||||||
|
public abstract class ColorFilter<T extends InventoryItem> extends StatTypeFilter<T> {
|
||||||
|
public ColorFilter(ItemManager<? super T> itemManager0) {
|
||||||
|
super(itemManager0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void buildWidget(Widget widget) {
|
||||||
|
addToggleButton(widget, StatTypes.WHITE);
|
||||||
|
addToggleButton(widget, StatTypes.BLUE);
|
||||||
|
addToggleButton(widget, StatTypes.BLACK);
|
||||||
|
addToggleButton(widget, StatTypes.RED);
|
||||||
|
addToggleButton(widget, StatTypes.GREEN);
|
||||||
|
addToggleButton(widget, StatTypes.COLORLESS);
|
||||||
|
addToggleButton(widget, StatTypes.MULTICOLOR);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
package forge.itemmanager.filters;
|
||||||
|
|
||||||
|
import forge.assets.FSkinFont;
|
||||||
|
import forge.item.InventoryItem;
|
||||||
|
import forge.itemmanager.ItemManager;
|
||||||
|
import forge.toolbox.FComboBox;
|
||||||
|
import forge.toolbox.FDisplayObject;
|
||||||
|
import forge.toolbox.FEvent;
|
||||||
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
|
|
||||||
|
public abstract class ComboBoxFilter<T extends InventoryItem, V> extends ItemFilter<T> {
|
||||||
|
protected V filterValue;
|
||||||
|
private boolean preventHandling = false;
|
||||||
|
private FComboBox<Object> comboBox = new FComboBox<Object>();
|
||||||
|
|
||||||
|
protected ComboBoxFilter(String allText, Iterable<V> values, ItemManager<? super T> itemManager0) {
|
||||||
|
this(allText, itemManager0);
|
||||||
|
for (V value : values) {
|
||||||
|
comboBox.addItem(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
protected ComboBoxFilter(String allText, V[] values, ItemManager<? super T> itemManager0) {
|
||||||
|
this(allText, itemManager0);
|
||||||
|
for (V value : values) {
|
||||||
|
comboBox.addItem(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private ComboBoxFilter(String allText, ItemManager<? super T> itemManager0) {
|
||||||
|
super(itemManager0);
|
||||||
|
|
||||||
|
comboBox.setFont(FSkinFont.get(12));
|
||||||
|
comboBox.addItem(allText);
|
||||||
|
comboBox.setChangedHandler(new FEventHandler() {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
|
if (preventHandling) { return; }
|
||||||
|
|
||||||
|
int index = comboBox.getSelectedIndex();
|
||||||
|
if (index == -1) {
|
||||||
|
//Do nothing when index set to -1
|
||||||
|
}
|
||||||
|
else if (index == 0) {
|
||||||
|
filterValue = null;
|
||||||
|
applyChange();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
filterValue = (V)comboBox.getSelectedItem();
|
||||||
|
applyChange();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reset() {
|
||||||
|
preventHandling = true;
|
||||||
|
comboBox.setSelectedIndex(0);
|
||||||
|
preventHandling = false;
|
||||||
|
filterValue = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FDisplayObject getMainComponent() {
|
||||||
|
return comboBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return filterValue == null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void buildWidget(Widget widget) {
|
||||||
|
widget.add(comboBox);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doWidgetLayout(float width, float height) {
|
||||||
|
comboBox.setSize(width, height);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,10 +5,9 @@ import com.google.common.base.Predicate;
|
|||||||
import forge.deck.DeckProxy;
|
import forge.deck.DeckProxy;
|
||||||
import forge.itemmanager.ItemManager;
|
import forge.itemmanager.ItemManager;
|
||||||
import forge.itemmanager.SFilterUtil;
|
import forge.itemmanager.SFilterUtil;
|
||||||
import forge.itemmanager.SItemManagerUtil.StatTypes;
|
|
||||||
|
|
||||||
|
|
||||||
public class DeckColorFilter extends StatTypeFilter<DeckProxy> {
|
public class DeckColorFilter extends ColorFilter<DeckProxy> {
|
||||||
public DeckColorFilter(ItemManager<? super DeckProxy> itemManager0) {
|
public DeckColorFilter(ItemManager<? super DeckProxy> itemManager0) {
|
||||||
super(itemManager0);
|
super(itemManager0);
|
||||||
}
|
}
|
||||||
@@ -18,17 +17,6 @@ public class DeckColorFilter extends StatTypeFilter<DeckProxy> {
|
|||||||
return new DeckColorFilter(itemManager);
|
return new DeckColorFilter(itemManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void buildWidget(Widget widget) {
|
|
||||||
addToggleButton(widget, StatTypes.DECK_WHITE);
|
|
||||||
addToggleButton(widget, StatTypes.DECK_BLUE);
|
|
||||||
addToggleButton(widget, StatTypes.DECK_BLACK);
|
|
||||||
addToggleButton(widget, StatTypes.DECK_RED);
|
|
||||||
addToggleButton(widget, StatTypes.DECK_GREEN);
|
|
||||||
addToggleButton(widget, StatTypes.DECK_COLORLESS);
|
|
||||||
addToggleButton(widget, StatTypes.DECK_MULTICOLOR);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected final Predicate<DeckProxy> buildPredicate() {
|
protected final Predicate<DeckProxy> buildPredicate() {
|
||||||
return SFilterUtil.buildDeckColorFilter(buttonMap);
|
return SFilterUtil.buildDeckColorFilter(buttonMap);
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
package forge.itemmanager.filters;
|
|
||||||
|
|
||||||
import forge.deck.DeckProxy;
|
|
||||||
import forge.itemmanager.ItemManager;
|
|
||||||
|
|
||||||
|
|
||||||
public class DeckSearchFilter extends TextSearchFilter<DeckProxy> {
|
|
||||||
public DeckSearchFilter(ItemManager<? super DeckProxy> itemManager0) {
|
|
||||||
super(itemManager0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemFilter<DeckProxy> createCopy() {
|
|
||||||
DeckSearchFilter copy = new DeckSearchFilter(itemManager);
|
|
||||||
copy.getWidget(); //initialize widget
|
|
||||||
copy.txtSearch.setText(this.txtSearch.getText());
|
|
||||||
return copy;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,229 @@
|
|||||||
|
package forge.screens.planarconquest;
|
||||||
|
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
|
||||||
|
import com.google.common.base.Predicate;
|
||||||
|
|
||||||
|
import forge.Forge;
|
||||||
|
import forge.Graphics;
|
||||||
|
import forge.assets.FImage;
|
||||||
|
import forge.assets.FSkinColor;
|
||||||
|
import forge.assets.FSkinFont;
|
||||||
|
import forge.card.CardFaceSymbols;
|
||||||
|
import forge.card.CardRenderer;
|
||||||
|
import forge.card.ColorSet;
|
||||||
|
import forge.deck.FDeckChooser;
|
||||||
|
import forge.deck.FDeckViewer;
|
||||||
|
import forge.item.PaperCard;
|
||||||
|
import forge.itemmanager.ItemManager;
|
||||||
|
import forge.itemmanager.ItemManagerConfig;
|
||||||
|
import forge.itemmanager.SFilterUtil;
|
||||||
|
import forge.itemmanager.filters.AdvancedSearchFilter;
|
||||||
|
import forge.itemmanager.filters.ColorFilter;
|
||||||
|
import forge.itemmanager.filters.ComboBoxFilter;
|
||||||
|
import forge.itemmanager.filters.ItemFilter;
|
||||||
|
import forge.itemmanager.filters.TextSearchFilter;
|
||||||
|
import forge.model.FModel;
|
||||||
|
import forge.planarconquest.ConquestCommander;
|
||||||
|
import forge.planarconquest.ConquestPlane;
|
||||||
|
import forge.planarconquest.ConquestRecord;
|
||||||
|
import forge.screens.FScreen;
|
||||||
|
import forge.toolbox.FEvent;
|
||||||
|
import forge.toolbox.FLabel;
|
||||||
|
import forge.toolbox.FList;
|
||||||
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
|
import forge.toolbox.FList.CompactModeHandler;
|
||||||
|
|
||||||
|
public class ConquestCommandersScreen extends FScreen {
|
||||||
|
private final CommanderManager lstCommanders = add(new CommanderManager());
|
||||||
|
private final FLabel lblTip = add(new FLabel.Builder()
|
||||||
|
.text("Double-tap to edit deck (Long-press to view)")
|
||||||
|
.textColor(FLabel.INLINE_LABEL_COLOR)
|
||||||
|
.align(HAlignment.CENTER).font(FSkinFont.get(12)).build());
|
||||||
|
|
||||||
|
private boolean needRefreshOnActivate = true;
|
||||||
|
|
||||||
|
public ConquestCommandersScreen() {
|
||||||
|
super("", ConquestMenu.getMenu());
|
||||||
|
|
||||||
|
lstCommanders.setup(ItemManagerConfig.CONQUEST_COMMANDERS);
|
||||||
|
lstCommanders.setItemActivateHandler(new FEventHandler() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
|
editSelectedDeck();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivate() {
|
||||||
|
setHeaderCaption(FModel.getConquest().getName());
|
||||||
|
|
||||||
|
if (needRefreshOnActivate) {
|
||||||
|
needRefreshOnActivate = false;
|
||||||
|
refreshCommanders();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refreshCommanders() {
|
||||||
|
lstCommanders.setPool(FModel.getConquest().getModel().getCommanders());
|
||||||
|
lstCommanders.setup(ItemManagerConfig.CONQUEST_COMMANDERS);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void editSelectedDeck() {
|
||||||
|
final ConquestCommander commander = lstCommanders.getSelectedItem();
|
||||||
|
if (commander == null) { return; }
|
||||||
|
|
||||||
|
needRefreshOnActivate = true;
|
||||||
|
Forge.openScreen(new ConquestDeckEditor(commander));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doLayout(float startY, float width, float height) {
|
||||||
|
float x = ItemFilter.PADDING;
|
||||||
|
float y = startY;
|
||||||
|
float w = width - 2 * x;
|
||||||
|
float labelHeight = lblTip.getAutoSizeBounds().height;
|
||||||
|
float listHeight = height - labelHeight - y - 2 * FDeckChooser.PADDING;
|
||||||
|
|
||||||
|
lstCommanders.setBounds(x, y, w, listHeight);
|
||||||
|
y += listHeight + FDeckChooser.PADDING;
|
||||||
|
lblTip.setBounds(x, y, w, labelHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class CommanderManager extends ItemManager<ConquestCommander> {
|
||||||
|
private CommanderManager() {
|
||||||
|
super(ConquestCommander.class, true);
|
||||||
|
setCaption("Commanders");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addDefaultFilters() {
|
||||||
|
addFilter(new CommanderColorFilter(this));
|
||||||
|
addFilter(new CommanderOriginFilter(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected TextSearchFilter<? extends ConquestCommander> createSearchFilter() {
|
||||||
|
return new TextSearchFilter<ConquestCommander>(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected AdvancedSearchFilter<? extends ConquestCommander> createAdvancedSearchFilter() {
|
||||||
|
return new AdvancedSearchFilter<ConquestCommander>(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemRenderer getListItemRenderer(final CompactModeHandler compactModeHandler) {
|
||||||
|
return new ItemRenderer() {
|
||||||
|
@Override
|
||||||
|
public float getItemHeight() {
|
||||||
|
return CardRenderer.getCardListItemHeight(compactModeHandler.isCompactMode()); //use same height for commanders as for cards
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean tap(Integer index, Entry<ConquestCommander, Integer> value, float x, float y, int count) {
|
||||||
|
return CardRenderer.cardListItemTap(model.getOrderedList(), index, CommanderManager.this, x, y, count, compactModeHandler.isCompactMode());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean longPress(Integer index, Entry<ConquestCommander, Integer> value, float x, float y) {
|
||||||
|
FDeckViewer.show(value.getKey().getDeck());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawValue(Graphics g, Entry<ConquestCommander, Integer> value, FSkinFont font, FSkinColor foreColor, FSkinColor backColor, boolean pressed, float x, float y, float w, float h) {
|
||||||
|
ConquestCommander commander = value.getKey();
|
||||||
|
PaperCard card = commander.getCard();
|
||||||
|
ConquestRecord record = commander.getRecord();
|
||||||
|
|
||||||
|
//draw card art
|
||||||
|
FImage cardArt = CardRenderer.getCardArt(card);
|
||||||
|
float cardArtHeight = h + 2 * FList.PADDING;
|
||||||
|
float cardArtWidth = cardArtHeight * CardRenderer.CARD_ART_RATIO;
|
||||||
|
if (cardArt != null) {
|
||||||
|
g.drawImage(cardArt, x - FList.PADDING, y - FList.PADDING, cardArtWidth, cardArtHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
//draw name and color on first line
|
||||||
|
x += cardArtWidth;
|
||||||
|
float imageSize = CardRenderer.MANA_SYMBOL_SIZE;
|
||||||
|
ColorSet cardColor = card.getRules().getColor();
|
||||||
|
float availableWidth = w - cardArtWidth - CardFaceSymbols.getWidth(cardColor, imageSize) - FList.PADDING;
|
||||||
|
g.drawText(card.getName(), font, foreColor, x, y, availableWidth, imageSize, false, HAlignment.LEFT, true);
|
||||||
|
CardFaceSymbols.drawColorSet(g, cardColor, x + availableWidth + FList.PADDING, y, imageSize);
|
||||||
|
|
||||||
|
if (compactModeHandler.isCompactMode()) {
|
||||||
|
return; //skip second line if compact mode
|
||||||
|
}
|
||||||
|
|
||||||
|
//draw origin, record, and set/rarity on second line
|
||||||
|
font = FSkinFont.get(12);
|
||||||
|
float lineHeight = font.getLineHeight();
|
||||||
|
|
||||||
|
y += imageSize + FList.PADDING + CardRenderer.SET_BOX_MARGIN;
|
||||||
|
String set = card.getEdition();
|
||||||
|
float setWidth = CardRenderer.getSetWidth(font, set);
|
||||||
|
availableWidth = w - cardArtWidth - setWidth;
|
||||||
|
|
||||||
|
g.drawText(commander.getOrigin() + " (" + record.getWins() + "W / " + record.getLosses() + "L)", font, foreColor, x, y, availableWidth, lineHeight, false, HAlignment.LEFT, true);
|
||||||
|
|
||||||
|
x += availableWidth + CardRenderer.SET_BOX_MARGIN;
|
||||||
|
y -= CardRenderer.SET_BOX_MARGIN;
|
||||||
|
CardRenderer.drawSetLabel(g, font, set, card.getRarity(), x, y, setWidth, lineHeight + 2 * CardRenderer.SET_BOX_MARGIN);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class CommanderColorFilter extends ColorFilter<ConquestCommander> {
|
||||||
|
public CommanderColorFilter(ItemManager<? super ConquestCommander> itemManager0) {
|
||||||
|
super(itemManager0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemFilter<ConquestCommander> createCopy() {
|
||||||
|
return new CommanderColorFilter(itemManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected final Predicate<ConquestCommander> buildPredicate() {
|
||||||
|
return new Predicate<ConquestCommander>() {
|
||||||
|
private final Predicate<PaperCard> pred = SFilterUtil.buildColorFilter(buttonMap);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(ConquestCommander input) {
|
||||||
|
return pred.apply(input.getCard());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class CommanderOriginFilter extends ComboBoxFilter<ConquestCommander, ConquestPlane> {
|
||||||
|
public CommanderOriginFilter(ItemManager<? super ConquestCommander> itemManager0) {
|
||||||
|
super("All Planes", ConquestPlane.values(), itemManager0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemFilter<ConquestCommander> createCopy() {
|
||||||
|
CommanderOriginFilter copy = new CommanderOriginFilter(itemManager);
|
||||||
|
copy.filterValue = filterValue;
|
||||||
|
return copy;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Predicate<ConquestCommander> buildPredicate() {
|
||||||
|
return new Predicate<ConquestCommander>() {
|
||||||
|
@Override
|
||||||
|
public boolean apply(ConquestCommander input) {
|
||||||
|
if (filterValue == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return input.getOriginPlane() == filterValue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,6 +23,7 @@ import forge.toolbox.FEvent.FEventHandler;
|
|||||||
public class ConquestMenu extends FPopupMenu {
|
public class ConquestMenu extends FPopupMenu {
|
||||||
private static final ConquestMenu conquestMenu = new ConquestMenu();
|
private static final ConquestMenu conquestMenu = new ConquestMenu();
|
||||||
private static final ConquestMapScreen mapScreen = new ConquestMapScreen();
|
private static final ConquestMapScreen mapScreen = new ConquestMapScreen();
|
||||||
|
private static final ConquestCommandersScreen commandersScreen = new ConquestCommandersScreen();
|
||||||
private static final ConquestPrefsScreen prefsScreen = new ConquestPrefsScreen();
|
private static final ConquestPrefsScreen prefsScreen = new ConquestPrefsScreen();
|
||||||
|
|
||||||
private static final FMenuItem mapItem = new FMenuItem("Planar Map", FSkinImage.QUEST_MAP, new FEventHandler() {
|
private static final FMenuItem mapItem = new FMenuItem("Planar Map", FSkinImage.QUEST_MAP, new FEventHandler() {
|
||||||
@@ -31,6 +32,12 @@ public class ConquestMenu extends FPopupMenu {
|
|||||||
Forge.openScreen(mapScreen);
|
Forge.openScreen(mapScreen);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
private static final FMenuItem commandersItem = new FMenuItem("Commanders", FSkinImage.DECKLIST, new FEventHandler() {
|
||||||
|
@Override
|
||||||
|
public void handleEvent(FEvent e) {
|
||||||
|
Forge.openScreen(commandersScreen);
|
||||||
|
}
|
||||||
|
});
|
||||||
private static final FMenuItem prefsItem = new FMenuItem("Preferences", FSkinImage.SETTINGS, new FEventHandler() {
|
private static final FMenuItem prefsItem = new FMenuItem("Preferences", FSkinImage.SETTINGS, new FEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleEvent(FEvent e) {
|
public void handleEvent(FEvent e) {
|
||||||
@@ -91,6 +98,7 @@ public class ConquestMenu extends FPopupMenu {
|
|||||||
protected void buildMenu() {
|
protected void buildMenu() {
|
||||||
FScreen currentScreen = Forge.getCurrentScreen();
|
FScreen currentScreen = Forge.getCurrentScreen();
|
||||||
addItem(mapItem); mapItem.setSelected(currentScreen == mapScreen);
|
addItem(mapItem); mapItem.setSelected(currentScreen == mapScreen);
|
||||||
|
addItem(commandersItem); mapItem.setSelected(currentScreen == commandersScreen);
|
||||||
addItem(prefsItem); prefsItem.setSelected(currentScreen == prefsScreen);
|
addItem(prefsItem); prefsItem.setSelected(currentScreen == prefsScreen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ public class LoadConquestScreen extends LaunchScreen {
|
|||||||
float iconSize = h + Utils.scale(1);
|
float iconSize = h + Utils.scale(1);
|
||||||
float iconOffset = SettingsScreen.SETTING_PADDING - Utils.scale(2);
|
float iconOffset = SettingsScreen.SETTING_PADDING - Utils.scale(2);
|
||||||
|
|
||||||
String cards = String.valueOf(value.getCollection().size());
|
String cards = String.valueOf(value.getUnlockedCount());
|
||||||
font = FSkinFont.get(12);
|
font = FSkinFont.get(12);
|
||||||
float cardsWidth = font.getBounds(cards).width + iconSize + SettingsScreen.SETTING_PADDING;
|
float cardsWidth = font.getBounds(cards).width + iconSize + SettingsScreen.SETTING_PADDING;
|
||||||
g.drawText(value.getPlaneswalker().getName() + " - " + value.getCurrentPlane().getName(), font, SettingsScreen.DESC_COLOR, x, y, w - cardsWidth, h, false, HAlignment.LEFT, false);
|
g.drawText(value.getPlaneswalker().getName() + " - " + value.getCurrentPlane().getName(), font, SettingsScreen.DESC_COLOR, x, y, w - cardsWidth, h, false, HAlignment.LEFT, false);
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ public enum ItemManagerConfig {
|
|||||||
null, null, 4, 0),
|
null, null, 4, 0),
|
||||||
QUEST_DECK_EDITOR(SColumnUtil.getQuestDeckEditorDefaultColumns(), false, false, false,
|
QUEST_DECK_EDITOR(SColumnUtil.getQuestDeckEditorDefaultColumns(), false, false, false,
|
||||||
GroupDef.DEFAULT, ColumnDef.CMC, 4, 1),
|
GroupDef.DEFAULT, ColumnDef.CMC, 4, 1),
|
||||||
|
CONQUEST_COMMANDERS(SColumnUtil.getDecksDefaultColumns(true, false), false, false, false,
|
||||||
|
null, null, 3, 0),
|
||||||
CONQUEST_COLLECTION(SColumnUtil.getConquestCollectionDefaultColumns(), false, false, false,
|
CONQUEST_COLLECTION(SColumnUtil.getConquestCollectionDefaultColumns(), false, false, false,
|
||||||
null, null, 4, 0),
|
null, null, 4, 0),
|
||||||
CONQUEST_DECK_EDITOR(SColumnUtil.getConquestDeckEditorDefaultColumns(), false, false, false,
|
CONQUEST_DECK_EDITOR(SColumnUtil.getConquestDeckEditorDefaultColumns(), false, false, false,
|
||||||
|
|||||||
@@ -2,19 +2,45 @@ package forge.planarconquest;
|
|||||||
|
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.generation.DeckGenPool;
|
import forge.deck.generation.DeckGenPool;
|
||||||
|
import forge.item.InventoryItem;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
|
import forge.planarconquest.ConquestPlane.Region;
|
||||||
|
|
||||||
public class ConquestCommander {
|
public class ConquestCommander implements InventoryItem {
|
||||||
private final PaperCard card;
|
private final PaperCard card;
|
||||||
private final Deck deck;
|
private final Deck deck;
|
||||||
|
private final ConquestRecord record;
|
||||||
|
private final ConquestPlane originPlane;
|
||||||
|
private final String originRegionName;
|
||||||
|
|
||||||
public ConquestCommander(PaperCard card0) {
|
public ConquestCommander(PaperCard card0) {
|
||||||
card = card0;
|
this(card0, new Deck(card0.getName()));
|
||||||
deck = new Deck(card0.getName());
|
|
||||||
}
|
}
|
||||||
public ConquestCommander(PaperCard card0, DeckGenPool cardPool0, boolean forAi) {
|
public ConquestCommander(PaperCard card0, DeckGenPool cardPool0, boolean forAi) {
|
||||||
|
this(card0, ConquestUtil.generateDeck(card0, cardPool0, forAi));
|
||||||
|
}
|
||||||
|
private ConquestCommander(PaperCard card0, Deck deck0) {
|
||||||
card = card0;
|
card = card0;
|
||||||
deck = ConquestUtil.generateDeck(card0, cardPool0, forAi);
|
deck = deck0;
|
||||||
|
record = new ConquestRecord();
|
||||||
|
|
||||||
|
//determine origin of commander
|
||||||
|
ConquestPlane originPlane0 = null;
|
||||||
|
String originRegionName0 = null;
|
||||||
|
for (ConquestPlane plane : ConquestPlane.values()) {
|
||||||
|
if (plane.getCommanders().contains(card)) {
|
||||||
|
originPlane0 = plane;
|
||||||
|
for (Region region : plane.getRegions()) {
|
||||||
|
if (region.getCommanders().contains(card)) {
|
||||||
|
originRegionName0 = region.getName();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
originPlane = originPlane0;
|
||||||
|
originRegionName = originRegionName0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
@@ -41,6 +67,24 @@ public class ConquestCommander {
|
|||||||
return deck;
|
return deck;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ConquestRecord getRecord() {
|
||||||
|
return record;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOrigin() {
|
||||||
|
return originPlane.getName() + " - " + originRegionName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConquestPlane getOriginPlane() {
|
||||||
|
return originPlane;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getItemType() {
|
||||||
|
return "Commander";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return card.getName();
|
return card.getName();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -283,7 +283,7 @@ public class ConquestController {
|
|||||||
List<PaperCard> mythics = new ArrayList<PaperCard>();
|
List<PaperCard> mythics = new ArrayList<PaperCard>();
|
||||||
int newCardCount = 0;
|
int newCardCount = 0;
|
||||||
for (PaperCard c : cardPool) {
|
for (PaperCard c : cardPool) {
|
||||||
if ((pred == null || pred.apply(c.getRules())) && !model.getCollection().contains(c)) {
|
if ((pred == null || pred.apply(c.getRules())) && !model.hasUnlockedCard(c)) {
|
||||||
switch (c.getRarity()) {
|
switch (c.getRarity()) {
|
||||||
case Common:
|
case Common:
|
||||||
commons.add(c);
|
commons.add(c);
|
||||||
@@ -439,7 +439,7 @@ public class ConquestController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
model.addCardsToCollection(rewards);
|
model.unlockCards(rewards);
|
||||||
|
|
||||||
String message = messagePrefix;
|
String message = messagePrefix;
|
||||||
if (messageSuffix != null) {
|
if (messageSuffix != null) {
|
||||||
@@ -513,7 +513,7 @@ public class ConquestController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
BoosterUtils.sort(rewards);
|
BoosterUtils.sort(rewards);
|
||||||
model.addCardsToCollection(rewards);
|
model.unlockCards(rewards);
|
||||||
view.showCards("Booster contained " + count + " new card" + (count != 1 ? "s" : ""), rewards);
|
view.showCards("Booster contained " + count + " new card" + (count != 1 ? "s" : ""), rewards);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -521,7 +521,7 @@ public class ConquestController {
|
|||||||
List<PaperCard> cards = new ArrayList<PaperCard>();
|
List<PaperCard> cards = new ArrayList<PaperCard>();
|
||||||
for (Entry<PaperCard, Integer> entry : gameRunner.event.getOpponentDeck().getMain()) {
|
for (Entry<PaperCard, Integer> entry : gameRunner.event.getOpponentDeck().getMain()) {
|
||||||
PaperCard c = entry.getKey();
|
PaperCard c = entry.getKey();
|
||||||
if (!c.getRules().getType().isBasicLand() && !getModel().getCollection().contains(c)) {
|
if (!c.getRules().getType().isBasicLand() && !getModel().hasUnlockedCard(c)) {
|
||||||
cards.add(c);
|
cards.add(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -530,7 +530,7 @@ public class ConquestController {
|
|||||||
|
|
||||||
BoosterUtils.sort(cards);
|
BoosterUtils.sort(cards);
|
||||||
PaperCard card = SGuiChoose.one("Choose a card from your opponent's deck", cards);
|
PaperCard card = SGuiChoose.one("Choose a card from your opponent's deck", cards);
|
||||||
model.addCardToCollection(card);
|
model.unlockCard(card);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -548,7 +548,7 @@ public class ConquestController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void add(PaperCard c) {
|
private void add(PaperCard c) {
|
||||||
if (!model.getCollection().contains(c)) {
|
if (!model.hasUnlockedCard(c)) {
|
||||||
newCount++;
|
newCount++;
|
||||||
}
|
}
|
||||||
cards.add(c);
|
cards.add(c);
|
||||||
@@ -564,7 +564,7 @@ public class ConquestController {
|
|||||||
int index = Aggregates.randomInt(0, cards.size() - 1);
|
int index = Aggregates.randomInt(0, cards.size() - 1);
|
||||||
c = cards.get(index);
|
c = cards.get(index);
|
||||||
|
|
||||||
if (!model.getCollection().contains(c)) {
|
if (!model.hasUnlockedCard(c)) {
|
||||||
newCount--;
|
newCount--;
|
||||||
cards.remove(c);
|
cards.remove(c);
|
||||||
rewards.add(c);
|
rewards.add(c);
|
||||||
|
|||||||
@@ -70,13 +70,13 @@ public final class ConquestData {
|
|||||||
currentLocation = new ConquestLocation(startingPlane, -1, 0, Region.PORTAL_COL);
|
currentLocation = new ConquestLocation(startingPlane, -1, 0, Region.PORTAL_COL);
|
||||||
planeswalker = planeswalker0;
|
planeswalker = planeswalker0;
|
||||||
planeswalkerToken = PlaneswalkerAchievements.getTrophyImage(planeswalker.getName());
|
planeswalkerToken = PlaneswalkerAchievements.getTrophyImage(planeswalker.getName());
|
||||||
addCardToCollection(planeswalker);
|
unlockCard(planeswalker);
|
||||||
|
|
||||||
//generate deck for starting commander and add all cards to collection
|
//generate deck for starting commander and add all cards to collection
|
||||||
ConquestCommander commander = new ConquestCommander(startingCommander0, startingPlane.getCardPool(), false);
|
ConquestCommander commander = new ConquestCommander(startingCommander0, startingPlane.getCardPool(), false);
|
||||||
commanders.add(commander);
|
commanders.add(commander);
|
||||||
addCardToCollection(startingCommander0);
|
unlockCard(startingCommander0);
|
||||||
addCardsToCollection(commander.getDeck().getMain().toFlatList());
|
unlockCards(commander.getDeck().getMain().toFlatList());
|
||||||
decks.put(commander.getDeck().getName(), commander.getDeck());
|
decks.put(commander.getDeck().getName(), commander.getDeck());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,19 +120,31 @@ public final class ConquestData {
|
|||||||
return getOrCreatePlaneData(getCurrentPlane());
|
return getOrCreatePlaneData(getCurrentPlane());
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashSet<PaperCard> getCollection() {
|
public Iterable<PaperCard> getCollection() {
|
||||||
return collection;
|
return collection;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCardToCollection(PaperCard card) {
|
public boolean hasUnlockedCard(PaperCard card) {
|
||||||
|
return collection.contains(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unlockCard(PaperCard card) {
|
||||||
collection.add(card);
|
collection.add(card);
|
||||||
newCards.add(card);
|
newCards.add(card);
|
||||||
}
|
}
|
||||||
public void addCardsToCollection(Collection<PaperCard> cards) {
|
public void unlockCards(Collection<PaperCard> cards) {
|
||||||
collection.addAll(cards);
|
collection.addAll(cards);
|
||||||
newCards.addAll(cards);
|
newCards.addAll(cards);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getUnlockedCount() {
|
||||||
|
return collection.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Iterable<ConquestCommander> getCommanders() {
|
||||||
|
return commanders;
|
||||||
|
}
|
||||||
|
|
||||||
public ConquestDeckMap getDeckStorage() {
|
public ConquestDeckMap getDeckStorage() {
|
||||||
return new ConquestDeckMap(decks);
|
return new ConquestDeckMap(decks);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -357,6 +357,10 @@ public enum ConquestPlane {
|
|||||||
return cardPool;
|
return cardPool;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FCollectionView<PaperCard> getCommanders() {
|
||||||
|
return commanders;
|
||||||
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
package forge.planarconquest;
|
package forge.planarconquest;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.planarconquest.ConquestPlane.Region;
|
import forge.planarconquest.ConquestPlane.Region;
|
||||||
|
|
||||||
public class ConquestPlaneData {
|
public class ConquestPlaneData {
|
||||||
private final ConquestPlane plane;
|
private final ConquestPlane plane;
|
||||||
private final ConquestEventResult[] eventResults;
|
private final ConquestRecord[] eventResults;
|
||||||
|
|
||||||
public ConquestPlaneData(ConquestPlane plane0) {
|
public ConquestPlaneData(ConquestPlane plane0) {
|
||||||
plane = plane0;
|
plane = plane0;
|
||||||
eventResults = new ConquestEventResult[plane.getEventCount()];
|
eventResults = new ConquestRecord[plane.getEventCount()];
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasConqueredBoss() {
|
public boolean hasConqueredBoss() {
|
||||||
@@ -30,16 +29,16 @@ public class ConquestPlaneData {
|
|||||||
return hasConquered(regionIndex * Region.ROWS_PER_REGION * Region.COLS_PER_REGION + row * Region.COLS_PER_REGION + col);
|
return hasConquered(regionIndex * Region.ROWS_PER_REGION * Region.COLS_PER_REGION + row * Region.COLS_PER_REGION + col);
|
||||||
}
|
}
|
||||||
private boolean hasConquered(int index) {
|
private boolean hasConquered(int index) {
|
||||||
ConquestEventResult result = eventResults[index];
|
ConquestRecord result = eventResults[index];
|
||||||
return result != null && result.getWins() > 0;
|
return result != null && result.getWins() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ConquestEventResult getOrCreateResult(ConquestEvent event) {
|
private ConquestRecord getOrCreateResult(ConquestEvent event) {
|
||||||
ConquestLocation loc = event.getLocation();
|
ConquestLocation loc = event.getLocation();
|
||||||
int index = loc.getRegionIndex() * Region.ROWS_PER_REGION * Region.COLS_PER_REGION + loc.getRow() * Region.COLS_PER_REGION + loc.getCol();
|
int index = loc.getRegionIndex() * Region.ROWS_PER_REGION * Region.COLS_PER_REGION + loc.getRow() * Region.COLS_PER_REGION + loc.getCol();
|
||||||
ConquestEventResult result = eventResults[index];
|
ConquestRecord result = eventResults[index];
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
result = new ConquestEventResult();
|
result = new ConquestRecord();
|
||||||
eventResults[index] = result;
|
eventResults[index] = result;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@@ -65,9 +64,9 @@ public class ConquestPlaneData {
|
|||||||
|
|
||||||
public int getUnlockedCount() {
|
public int getUnlockedCount() {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
HashSet<PaperCard> collection = FModel.getConquest().getModel().getCollection();
|
ConquestData model = FModel.getConquest().getModel();
|
||||||
for (PaperCard pc : plane.getCardPool().getAllCards()) {
|
for (PaperCard pc : plane.getCardPool().getAllCards()) {
|
||||||
if (collection.contains(pc)) {
|
if (model.hasUnlockedCard(pc)) {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package forge.planarconquest;
|
package forge.planarconquest;
|
||||||
|
|
||||||
public class ConquestEventResult {
|
public class ConquestRecord {
|
||||||
private int wins, losses;
|
private int wins, losses;
|
||||||
|
|
||||||
public int getWins() {
|
public int getWins() {
|
||||||
@@ -94,7 +94,10 @@ public class ConquestUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static CardPool getAvailablePool(Deck deck) {
|
public static CardPool getAvailablePool(Deck deck) {
|
||||||
HashSet<PaperCard> availableCards = new HashSet<PaperCard>(FModel.getConquest().getModel().getCollection());
|
HashSet<PaperCard> availableCards = new HashSet<PaperCard>();
|
||||||
|
for (PaperCard pc : FModel.getConquest().getModel().getCollection()) {
|
||||||
|
availableCards.add(pc);
|
||||||
|
}
|
||||||
|
|
||||||
//remove all cards in main deck
|
//remove all cards in main deck
|
||||||
for (Entry<PaperCard, Integer> e : deck.getMain()) {
|
for (Entry<PaperCard, Integer> e : deck.getMain()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user