mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +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.RenderingHints;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.MouseAdapter;
|
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.event.MouseMotionListener;
|
import java.awt.event.MouseMotionListener;
|
||||||
|
|
||||||
@@ -20,6 +19,7 @@ import forge.assets.FSkinProp;
|
|||||||
import forge.gui.framework.DragCell;
|
import forge.gui.framework.DragCell;
|
||||||
import forge.gui.framework.DragTab;
|
import forge.gui.framework.DragTab;
|
||||||
import forge.gui.framework.EDocID;
|
import forge.gui.framework.EDocID;
|
||||||
|
import forge.item.IPaperCard;
|
||||||
import forge.screens.home.EMenuGroup;
|
import forge.screens.home.EMenuGroup;
|
||||||
import forge.screens.home.IVSubmenu;
|
import forge.screens.home.IVSubmenu;
|
||||||
import forge.screens.home.VHomeUI;
|
import forge.screens.home.VHomeUI;
|
||||||
@@ -29,6 +29,8 @@ import forge.toolbox.FSkin.Colors;
|
|||||||
import forge.toolbox.FSkin.SkinColor;
|
import forge.toolbox.FSkin.SkinColor;
|
||||||
import forge.toolbox.FSkin.SkinFont;
|
import forge.toolbox.FSkin.SkinFont;
|
||||||
import forge.toolbox.FSkin.SkinImage;
|
import forge.toolbox.FSkin.SkinImage;
|
||||||
|
import forge.toolbox.special.CardZoomer;
|
||||||
|
import forge.view.ViewUtil;
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
@@ -78,9 +80,28 @@ public enum VSubmenuAchievements implements IVSubmenu<CSubmenuAchievements> {
|
|||||||
public void mouseDragged(MouseEvent e) {
|
public void mouseDragged(MouseEvent e) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
trophyCase.addMouseListener(new MouseAdapter() {
|
trophyCase.addMouseListener(new FMouseAdapter() {
|
||||||
@Override
|
@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);
|
trophyCase.setSelectedAchievement(null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import forge.assets.FSkinColor;
|
|||||||
import forge.assets.FSkinFont;
|
import forge.assets.FSkinFont;
|
||||||
import forge.assets.FSkinImage;
|
import forge.assets.FSkinImage;
|
||||||
import forge.assets.FSkinTexture;
|
import forge.assets.FSkinTexture;
|
||||||
|
import forge.card.CardZoom;
|
||||||
|
import forge.item.IPaperCard;
|
||||||
import forge.menu.FDropDown;
|
import forge.menu.FDropDown;
|
||||||
import forge.screens.FScreen;
|
import forge.screens.FScreen;
|
||||||
import forge.screens.TabPageScreen.TabPage;
|
import forge.screens.TabPageScreen.TabPage;
|
||||||
@@ -132,6 +134,9 @@ public class AchievementsPage extends TabPage<SettingsScreen> {
|
|||||||
@Override
|
@Override
|
||||||
public boolean tap(float x, float y, int count) {
|
public boolean tap(float x, float y, int count) {
|
||||||
Achievement achievement = getAchievementAt(x, y);
|
Achievement achievement = getAchievementAt(x, y);
|
||||||
|
if (count > 1 && showCard(achievement)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (achievement == selectedAchievement) {
|
if (achievement == selectedAchievement) {
|
||||||
achievement = null; //unselect if selected achievement tapped again
|
achievement = null; //unselect if selected achievement tapped again
|
||||||
}
|
}
|
||||||
@@ -139,6 +144,22 @@ public class AchievementsPage extends TabPage<SettingsScreen> {
|
|||||||
return true;
|
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
|
@Override
|
||||||
public boolean zoom(float x, float y, float amount) {
|
public boolean zoom(float x, float y, float amount) {
|
||||||
selectedAchievement = null; //unselect when zooming
|
selectedAchievement = null; //unselect when zooming
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import forge.assets.ISkinImage;
|
|||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.interfaces.IGuiBase;
|
import forge.interfaces.IGuiBase;
|
||||||
|
import forge.item.IPaperCard;
|
||||||
import forge.properties.ForgeConstants;
|
import forge.properties.ForgeConstants;
|
||||||
|
|
||||||
public abstract class Achievement {
|
public abstract class Achievement {
|
||||||
@@ -99,6 +100,11 @@ public abstract class Achievement {
|
|||||||
return best <= commonThreshold;
|
return best <= commonThreshold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//get card associated with this achievement if any
|
||||||
|
public IPaperCard getPaperCard() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract int evaluate(Player player, Game game);
|
protected abstract int evaluate(Player player, Game game);
|
||||||
|
|
||||||
private void updateTrophyImage() {
|
private void updateTrophyImage() {
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.interfaces.IGuiBase;
|
import forge.interfaces.IGuiBase;
|
||||||
|
import forge.item.IPaperCard;
|
||||||
|
import forge.model.FModel;
|
||||||
import forge.properties.ForgeConstants;
|
import forge.properties.ForgeConstants;
|
||||||
|
|
||||||
public class AltWinAchievements extends AchievementCollection {
|
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
|
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
|
@Override
|
||||||
public String getSubTitle() {
|
public String getSubTitle() {
|
||||||
return current + " Win" + (current != 1 ? "s" : "");
|
return current + " Win" + (current != 1 ? "s" : "");
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import java.util.HashSet;
|
|||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.interfaces.IGuiBase;
|
import forge.interfaces.IGuiBase;
|
||||||
|
import forge.item.IPaperCard;
|
||||||
|
import forge.model.FModel;
|
||||||
import forge.properties.ForgeConstants;
|
import forge.properties.ForgeConstants;
|
||||||
|
|
||||||
public class PlaneswalkerAchievements extends AchievementCollection {
|
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
|
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
|
@Override
|
||||||
public String getSubTitle() {
|
public String getSubTitle() {
|
||||||
return current + " Win" + (current != 1 ? "s" : "");
|
return current + " Win" + (current != 1 ? "s" : "");
|
||||||
|
|||||||
Reference in New Issue
Block a user