mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
Draft Ranking on ImageView
- add an option to show draft card rankings
This commit is contained in:
@@ -22,6 +22,7 @@ import forge.assets.FSkin;
|
||||
import forge.assets.FSkinFont;
|
||||
import forge.assets.ImageCache;
|
||||
import forge.error.ExceptionHandler;
|
||||
import forge.gamemodes.limited.BoosterDraft;
|
||||
import forge.gui.FThreads;
|
||||
import forge.gui.GuiBase;
|
||||
import forge.gui.error.BugReporter;
|
||||
@@ -221,6 +222,7 @@ public class Forge implements ApplicationListener {
|
||||
/* call preloadExtendedArt here, if we put it above we will *
|
||||
* get error: No OpenGL context found in the current thread. */
|
||||
preloadExtendedArt();
|
||||
preloadBoosterDrafts();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -250,7 +252,10 @@ public class Forge implements ApplicationListener {
|
||||
if (!filteredkeys.isEmpty())
|
||||
ImageCache.preloadCache(filteredkeys);
|
||||
}
|
||||
|
||||
private void preloadBoosterDrafts() {
|
||||
//preloading of custom drafts
|
||||
BoosterDraft.initializeCustomDrafts();
|
||||
}
|
||||
public static void openHomeScreen(int index, FScreen lastMatch) {
|
||||
openScreen(HomeScreen.instance);
|
||||
HomeScreen.instance.openMenu(index);
|
||||
|
||||
@@ -125,6 +125,13 @@ public enum FSkinImage implements FImage {
|
||||
WATERMARK_W (FSkinProp.IMG_WATERMARK_W, SourceFile.WATERMARKS),
|
||||
WATERMARK_C (FSkinProp.IMG_WATERMARK_C, SourceFile.WATERMARKS),
|
||||
|
||||
//draft ranks
|
||||
DRAFTRANK_D (FSkinProp.IMG_DRAFTRANK_D, SourceFile.DRAFTRANKS),
|
||||
DRAFTRANK_C (FSkinProp.IMG_DRAFTRANK_C, SourceFile.DRAFTRANKS),
|
||||
DRAFTRANK_B (FSkinProp.IMG_DRAFTRANK_B, SourceFile.DRAFTRANKS),
|
||||
DRAFTRANK_A (FSkinProp.IMG_DRAFTRANK_A, SourceFile.DRAFTRANKS),
|
||||
DRAFTRANK_S (FSkinProp.IMG_DRAFTRANK_S, SourceFile.DRAFTRANKS),
|
||||
|
||||
//CardBG
|
||||
CARDBG_A (FSkinProp.IMG_CARDBG_A, SourceFile.CARDBG),
|
||||
CARDBG_B (FSkinProp.IMG_CARDBG_B, SourceFile.CARDBG),
|
||||
@@ -497,6 +504,7 @@ public enum FSkinImage implements FImage {
|
||||
PHYREXIAN(ForgeConstants.SPRITE_PHYREXIAN_FILE),
|
||||
SETLOGOS(ForgeConstants.SPRITE_SETLOGO_FILE),
|
||||
WATERMARKS(ForgeConstants.SPRITE_WATERMARK_FILE),
|
||||
DRAFTRANKS(ForgeConstants.SPRITE_DRAFTRANKS_FILE),
|
||||
CRACKS(ForgeConstants.SPRITE_CRACKS_FILE),
|
||||
CARDBG(ForgeConstants.SPRITE_CARDBG_FILE),
|
||||
PLANAR_CONQUEST(ForgeConstants.SPRITE_PLANAR_CONQUEST_FILE);
|
||||
|
||||
@@ -162,7 +162,7 @@ public class FDeckChooser extends FScreen {
|
||||
&& selectedDeckType != DeckType.VINTAGE_CARDGEN_DECK && selectedDeckType != DeckType.MODERN_COLOR_DECK &&
|
||||
selectedDeckType != DeckType.COLOR_DECK && selectedDeckType != DeckType.THEME_DECK
|
||||
&& selectedDeckType != DeckType.RANDOM_COMMANDER_DECK && selectedDeckType != DeckType.RANDOM_CARDGEN_COMMANDER_DECK) {
|
||||
FDeckViewer.show(getDeck());
|
||||
FDeckViewer.show(getDeck(), false, DeckType.DRAFT_DECK.equals(selectedDeckType));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -682,6 +682,15 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
protected boolean isDraftEditor() {
|
||||
switch (editorType) {
|
||||
case Draft:
|
||||
case QuestDraft:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean allowsReplacement(final EditorType editorType){
|
||||
switch (editorType) {
|
||||
@@ -766,6 +775,9 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
CardManagerPage.this.buildMenu(menu, card);
|
||||
}
|
||||
});
|
||||
cardManager.setShowRanking(ItemManagerConfig.DRAFT_CONSPIRACY.equals(config0)
|
||||
|| ItemManagerConfig.DRAFT_PACK.equals(config0) || ItemManagerConfig.DRAFT_POOL.equals(config0)
|
||||
|| ItemManagerConfig.DRAFT_DECKS.equals(config0) || (parentScreen != null && parentScreen.isDraftEditor()));
|
||||
}
|
||||
|
||||
protected void initialize() {
|
||||
@@ -773,6 +785,9 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
cardManager.setup(config);
|
||||
else //fix planar conquest deck editor and maybe others...
|
||||
cardManager.setup(config, parentScreen.getColOverrides(config));
|
||||
cardManager.setShowRanking(ItemManagerConfig.DRAFT_CONSPIRACY.equals(config)
|
||||
|| ItemManagerConfig.DRAFT_PACK.equals(config) || ItemManagerConfig.DRAFT_POOL.equals(config)
|
||||
|| ItemManagerConfig.DRAFT_DECKS.equals(config) || (parentScreen != null && parentScreen.isDraftEditor()));
|
||||
}
|
||||
|
||||
protected boolean canAddCards() {
|
||||
@@ -1695,6 +1710,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
int packNumber = draft.getCurrentBoosterIndex() + 1;
|
||||
caption = Localizer.getInstance().getMessage("lblPackN", String.valueOf(packNumber));
|
||||
cardManager.setPool(pool);
|
||||
cardManager.setShowRanking(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -114,9 +114,12 @@ public class FDeckViewer extends FScreen {
|
||||
private DeckSection currentSection;
|
||||
|
||||
public static void show(final Deck deck0) {
|
||||
show(deck0, false);
|
||||
show(deck0, false, false);
|
||||
}
|
||||
public static void show(final Deck deck0, boolean noPreload) {
|
||||
show(deck0, noPreload, false);
|
||||
}
|
||||
public static void show(final Deck deck0, boolean noPreload, boolean showRanking) {
|
||||
if (deck0 == null) { return; }
|
||||
|
||||
if (!noPreload){
|
||||
@@ -124,12 +127,12 @@ public class FDeckViewer extends FScreen {
|
||||
ImageCache.preloadCache(deck0);
|
||||
}
|
||||
|
||||
deckViewer = new FDeckViewer(deck0);
|
||||
deckViewer = new FDeckViewer(deck0, showRanking);
|
||||
deckViewer.setRotate180(MatchController.getView() != null && MatchController.getView().isTopHumanPlayerActive());
|
||||
Forge.openScreen(deckViewer);
|
||||
}
|
||||
|
||||
private FDeckViewer(Deck deck0) {
|
||||
private FDeckViewer(Deck deck0, boolean showRanking) {
|
||||
super(new MenuHeader(deck0.getName(), menu) {
|
||||
@Override
|
||||
protected boolean displaySidebarForLandscapeMode() {
|
||||
@@ -139,6 +142,7 @@ public class FDeckViewer extends FScreen {
|
||||
deck = deck0;
|
||||
cardManager = new CardManager(false);
|
||||
cardManager.setPool(deck.getMain());
|
||||
cardManager.setShowRanking(showRanking);
|
||||
|
||||
currentSection = DeckSection.Main;
|
||||
updateCaption();
|
||||
|
||||
@@ -74,6 +74,7 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
private final List<ItemFilter<? extends T>> filters = new ArrayList<>();
|
||||
private boolean hideFilters = false;
|
||||
private boolean wantUnique = false;
|
||||
private boolean showRanking = false;
|
||||
private boolean multiSelectMode = false;
|
||||
private FEventHandler selectionChangedHandler, itemActivateHandler;
|
||||
private ContextMenuBuilder<T> contextMenuBuilder;
|
||||
@@ -820,10 +821,18 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
return wantUnique;
|
||||
}
|
||||
|
||||
public boolean getShowRanking() {
|
||||
return showRanking;
|
||||
}
|
||||
|
||||
public void setWantUnique(boolean unique) {
|
||||
wantUnique = unique;
|
||||
}
|
||||
|
||||
public void setShowRanking(boolean showRanking0) {
|
||||
showRanking = showRanking0;
|
||||
}
|
||||
|
||||
public void setSelectionSupport(int minSelections0, int maxSelections0) {
|
||||
for (ItemView<T> view : views) {
|
||||
view.setSelectionSupport(minSelections0, maxSelections0);
|
||||
|
||||
@@ -17,11 +17,14 @@ import forge.card.CardRenderer.CardStackPosition;
|
||||
import forge.deck.*;
|
||||
import forge.deck.io.DeckPreferences;
|
||||
import forge.game.card.CardView;
|
||||
import forge.gamemodes.limited.CardRanker;
|
||||
import forge.gamemodes.planarconquest.ConquestCommander;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.PaperCard;
|
||||
import forge.itemmanager.*;
|
||||
import forge.itemmanager.filters.ItemFilter;
|
||||
import forge.localinstance.properties.ForgePreferences;
|
||||
import forge.model.FModel;
|
||||
import forge.toolbox.*;
|
||||
import forge.toolbox.FEvent.FEventHandler;
|
||||
import forge.util.ImageUtil;
|
||||
@@ -985,6 +988,26 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
|
||||
if (item instanceof PaperCard) {
|
||||
CardRenderer.drawCard(g, (PaperCard) item, x, y, w, h, pos);
|
||||
if (itemManager.getShowRanking() && FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_OVERLAY_DRAFT_RANKING)) {
|
||||
double score = CardRanker.getRawScore((PaperCard) item);
|
||||
int draftRank = score <= 0 ? 0 : score > 99 ? 99 : (int) Math.round(CardRanker.getRawScore((PaperCard) item));
|
||||
float rankSize = w/2;
|
||||
float y2 = y+(rankSize-(rankSize*0.1f));
|
||||
float x2 = x+rankSize/2;
|
||||
if (draftRank >= 90) {
|
||||
g.drawImage(FSkinImage.DRAFTRANK_S, x2, y2+1, rankSize, rankSize);
|
||||
} else if (draftRank >= 80 && draftRank <= 89 ) {
|
||||
g.drawImage(FSkinImage.DRAFTRANK_A, x2, y2+1, rankSize, rankSize);
|
||||
} else if (draftRank >= 60 && draftRank <= 79 ) {
|
||||
g.drawImage(FSkinImage.DRAFTRANK_B, x2, y2+1, rankSize, rankSize);
|
||||
} else if (draftRank >= 25 && draftRank <= 59 ) {
|
||||
g.drawImage(FSkinImage.DRAFTRANK_C, x2, y2+1, rankSize, rankSize);
|
||||
} else {
|
||||
g.drawImage(FSkinImage.DRAFTRANK_D, x2, y2+1, rankSize, rankSize);
|
||||
}
|
||||
String value = String.valueOf(draftRank);
|
||||
g.drawText(value, FSkinFont.forHeight(rankSize/4), Color.WHITE, x, y, w, h, true, Align.center, true);
|
||||
}
|
||||
} else if (item instanceof ConquestCommander) {
|
||||
CardRenderer.drawCard(g, ((ConquestCommander) item).getCard(), x, y, w, h, pos);
|
||||
} else if (deckSelectMode) {
|
||||
|
||||
@@ -595,13 +595,17 @@ public class SettingsPage extends TabPage<SettingsScreen> {
|
||||
localizer.getMessage("lblShowCardIDOverlays"),
|
||||
localizer.getMessage("nlShowCardIDOverlays")),
|
||||
5);
|
||||
lstSettings.addItem(new BooleanSetting(FPref.UI_OVERLAY_DRAFT_RANKING,
|
||||
localizer.getMessage("lblShowDraftRankingOverlay"),
|
||||
localizer.getMessage("nlShowDraftRankingOverlay")),
|
||||
5);
|
||||
lstSettings.addItem(new BooleanSetting(FPref.UI_OVERLAY_ABILITY_ICONS,
|
||||
localizer.getMessage("lblShowAbilityIconsOverlays"),
|
||||
localizer.getMessage("nlShowAbilityIconsOverlays")),
|
||||
5);
|
||||
lstSettings.addItem(new BooleanSetting(FPref.UI_USE_LASER_ARROWS,
|
||||
localizer.getMessage("lblUseLaserArrows"),
|
||||
localizer.getMessage("nlUseLaserArrows")),
|
||||
localizer.getMessage("lblUseLaserArrows"),
|
||||
localizer.getMessage("nlUseLaserArrows")),
|
||||
5);
|
||||
//Vibration Options
|
||||
lstSettings.addItem(new BooleanSetting(FPref.UI_VIBRATE_ON_LIFE_LOSS,
|
||||
|
||||
Reference in New Issue
Block a user