Support showing card associated with achievement using double click or middle/long press

This commit is contained in:
drdev
2014-09-22 15:31:09 +00:00
parent a4f8ee4f9c
commit 86ecc75dbe
5 changed files with 65 additions and 3 deletions

View File

@@ -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);
}
});

View File

@@ -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

View File

@@ -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() {

View File

@@ -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" : "");

View File

@@ -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" : "");