mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Support showing card associated with achievement using double click or middle/long press
This commit is contained in:
@@ -10,7 +10,6 @@ import java.awt.Rectangle;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseMotionListener;
|
||||
|
||||
@@ -20,6 +19,7 @@ import forge.assets.FSkinProp;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.item.IPaperCard;
|
||||
import forge.screens.home.EMenuGroup;
|
||||
import forge.screens.home.IVSubmenu;
|
||||
import forge.screens.home.VHomeUI;
|
||||
@@ -29,6 +29,8 @@ import forge.toolbox.FSkin.Colors;
|
||||
import forge.toolbox.FSkin.SkinColor;
|
||||
import forge.toolbox.FSkin.SkinFont;
|
||||
import forge.toolbox.FSkin.SkinImage;
|
||||
import forge.toolbox.special.CardZoomer;
|
||||
import forge.view.ViewUtil;
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -78,9 +80,28 @@ public enum VSubmenuAchievements implements IVSubmenu<CSubmenuAchievements> {
|
||||
public void mouseDragged(MouseEvent e) {
|
||||
}
|
||||
});
|
||||
trophyCase.addMouseListener(new MouseAdapter() {
|
||||
trophyCase.addMouseListener(new FMouseAdapter() {
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
public void onMiddleMouseDown(MouseEvent e) {
|
||||
showCard(e);
|
||||
}
|
||||
@Override
|
||||
public void onLeftDoubleClick(MouseEvent e) {
|
||||
showCard(e);
|
||||
}
|
||||
|
||||
private void showCard(MouseEvent e) {
|
||||
Achievement achievement = getAchievementAt(e.getX(), e.getY());
|
||||
if (achievement != null) {
|
||||
IPaperCard pc = achievement.getPaperCard();
|
||||
if (pc != null) {
|
||||
CardZoomer.SINGLETON_INSTANCE.doMouseButtonZoom(ViewUtil.getCardForUi(pc));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMouseExit(MouseEvent e) {
|
||||
trophyCase.setSelectedAchievement(null);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -13,6 +13,8 @@ import forge.assets.FSkinColor;
|
||||
import forge.assets.FSkinFont;
|
||||
import forge.assets.FSkinImage;
|
||||
import forge.assets.FSkinTexture;
|
||||
import forge.card.CardZoom;
|
||||
import forge.item.IPaperCard;
|
||||
import forge.menu.FDropDown;
|
||||
import forge.screens.FScreen;
|
||||
import forge.screens.TabPageScreen.TabPage;
|
||||
@@ -132,6 +134,9 @@ public class AchievementsPage extends TabPage<SettingsScreen> {
|
||||
@Override
|
||||
public boolean tap(float x, float y, int count) {
|
||||
Achievement achievement = getAchievementAt(x, y);
|
||||
if (count > 1 && showCard(achievement)) {
|
||||
return true;
|
||||
}
|
||||
if (achievement == selectedAchievement) {
|
||||
achievement = null; //unselect if selected achievement tapped again
|
||||
}
|
||||
@@ -139,6 +144,22 @@ public class AchievementsPage extends TabPage<SettingsScreen> {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean longPress(float x, float y) {
|
||||
return showCard(getAchievementAt(x, y));
|
||||
}
|
||||
|
||||
private boolean showCard(Achievement achievement) {
|
||||
if (achievement != null) {
|
||||
IPaperCard pc = achievement.getPaperCard();
|
||||
if (pc != null) {
|
||||
CardZoom.show(pc);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean zoom(float x, float y, float amount) {
|
||||
selectedAchievement = null; //unselect when zooming
|
||||
|
||||
@@ -8,6 +8,7 @@ import forge.assets.ISkinImage;
|
||||
import forge.game.Game;
|
||||
import forge.game.player.Player;
|
||||
import forge.interfaces.IGuiBase;
|
||||
import forge.item.IPaperCard;
|
||||
import forge.properties.ForgeConstants;
|
||||
|
||||
public abstract class Achievement {
|
||||
@@ -99,6 +100,11 @@ public abstract class Achievement {
|
||||
return best <= commonThreshold;
|
||||
}
|
||||
|
||||
//get card associated with this achievement if any
|
||||
public IPaperCard getPaperCard() {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected abstract int evaluate(Player player, Game game);
|
||||
|
||||
private void updateTrophyImage() {
|
||||
|
||||
@@ -5,6 +5,8 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import forge.game.Game;
|
||||
import forge.game.player.Player;
|
||||
import forge.interfaces.IGuiBase;
|
||||
import forge.item.IPaperCard;
|
||||
import forge.model.FModel;
|
||||
import forge.properties.ForgeConstants;
|
||||
|
||||
public class AltWinAchievements extends AchievementCollection {
|
||||
@@ -68,6 +70,11 @@ public class AltWinAchievements extends AchievementCollection {
|
||||
return current + 1; //if this reaches this point, it can be presumed that alternate win condition achieved
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPaperCard getPaperCard() {
|
||||
return FModel.getMagicDb().getCommonCards().getCard(getKey());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSubTitle() {
|
||||
return current + " Win" + (current != 1 ? "s" : "");
|
||||
|
||||
@@ -5,6 +5,8 @@ import java.util.HashSet;
|
||||
import forge.game.Game;
|
||||
import forge.game.player.Player;
|
||||
import forge.interfaces.IGuiBase;
|
||||
import forge.item.IPaperCard;
|
||||
import forge.model.FModel;
|
||||
import forge.properties.ForgeConstants;
|
||||
|
||||
public class PlaneswalkerAchievements extends AchievementCollection {
|
||||
@@ -109,6 +111,11 @@ public class PlaneswalkerAchievements extends AchievementCollection {
|
||||
return current + 1; //if this reaches this point, it can be presumed that alternate win condition achieved
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPaperCard getPaperCard() {
|
||||
return FModel.getMagicDb().getCommonCards().getCard(getKey());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSubTitle() {
|
||||
return current + " Win" + (current != 1 ? "s" : "");
|
||||
|
||||
Reference in New Issue
Block a user