GUI: fixed not working single and double clicks on the card's second side (draft, deck editor, see #7472);

This commit is contained in:
Oleg Agafonov 2021-02-03 11:32:15 +04:00
parent 3b7e01d687
commit be77ecea84
4 changed files with 14 additions and 14 deletions

View file

@ -46,13 +46,11 @@ public class DraftGrid extends javax.swing.JPanel implements CardEventProducer {
@Override @Override
public void event(Event event) { public void event(Event event) {
if (event.getEventType() == ClientEventType.CARD_DOUBLE_CLICK) { if (event.getEventType() == ClientEventType.CARD_DOUBLE_CLICK) {
logger.info("draft grid: catch double click");
CardView card = (CardView) event.getSource(); CardView card = (CardView) event.getSource();
cardEventSource.fireEvent(card, ClientEventType.DRAFT_PICK_CARD); cardEventSource.fireEvent(card, ClientEventType.DRAFT_PICK_CARD);
hidePopup(); hidePopup();
AudioManager.playOnDraftSelect(); AudioManager.playOnDraftSelect();
} else if (event.getEventType() == ClientEventType.CARD_CLICK) { } else if (event.getEventType() == ClientEventType.CARD_CLICK) {
logger.info("draft grid: catch single click");
CardView card = (CardView) event.getSource(); CardView card = (CardView) event.getSource();
MageCard cardPanel = (MageCard) event.getComponent(); MageCard cardPanel = (MageCard) event.getComponent();
if (markedCard != null) { if (markedCard != null) {

View file

@ -271,7 +271,7 @@
if (this.pickingCardsListener == null) { if (this.pickingCardsListener == null) {
this.pickingCardsListener = event -> { this.pickingCardsListener = event -> {
if (event.getEventType() == ClientEventType.DRAFT_PICK_CARD) { if (event.getEventType() == ClientEventType.DRAFT_PICK_CARD) {
logger.info("draft panel: catch pick card"); // PICK card
SimpleCardView source = (SimpleCardView) event.getSource(); SimpleCardView source = (SimpleCardView) event.getSource();
DraftPickView view = SessionHandler.sendCardPick(draftId, source.getId(), cardsHidden); DraftPickView view = SessionHandler.sendCardPick(draftId, source.getId(), cardsHidden);
if (view != null) { if (view != null) {
@ -281,7 +281,7 @@
setMessage("Waiting for other players"); setMessage("Waiting for other players");
} }
} else if (event.getEventType() == ClientEventType.DRAFT_MARK_CARD) { } else if (event.getEventType() == ClientEventType.DRAFT_MARK_CARD) {
logger.info("draft panel: catch mark card"); // MARK card
SimpleCardView source = (SimpleCardView) event.getSource(); SimpleCardView source = (SimpleCardView) event.getSource();
SessionHandler.sendCardMark(draftId, source.getId()); SessionHandler.sendCardMark(draftId, source.getId());
} }

View file

@ -26,7 +26,7 @@ import java.util.UUID;
/** /**
* Main class for drawing Mage card object. * Main class for drawing Mage card object.
* * <p>
* WARNING, if you want to catch mouse events then use cardEventSource and related code. You can't use outer listeners. * WARNING, if you want to catch mouse events then use cardEventSource and related code. You can't use outer listeners.
* *
* @author arcane, nantuko, noxx, JayDi85 * @author arcane, nantuko, noxx, JayDi85
@ -48,10 +48,11 @@ public abstract class CardPanel extends MagePermanent implements ComponentListen
private static final float ROT_CENTER_TO_TOP_CORNER = 1.0295630140987000315797369464196f; private static final float ROT_CENTER_TO_TOP_CORNER = 1.0295630140987000315797369464196f;
private static final float ROT_CENTER_TO_BOTTOM_CORNER = 0.7071067811865475244008443621048f; private static final float ROT_CENTER_TO_BOTTOM_CORNER = 0.7071067811865475244008443621048f;
private CardView gameCard; private CardView gameCard; // current card side, can be different for double faces cards (it's a gui sides, not mtg - so mdf cards will have second side too)
private CardView updateCard; private CardView updateCard;
// for two faced cards // if null then gameCard contains main card
// if not null then gameCard contains second side
private CardView temporary; private CardView temporary;
private double tappedAngle = 0; private double tappedAngle = 0;
@ -584,7 +585,13 @@ public abstract class CardPanel extends MagePermanent implements ComponentListen
@Override @Override
public CardView getOriginal() { public CardView getOriginal() {
return this.getGameCard(); if (this.temporary == null) {
// current side: main, return: main
return this.getGameCard();
} else {
// current side: second, return: main
return this.temporary;
}
} }
@Override @Override
@ -646,7 +653,7 @@ public abstract class CardPanel extends MagePermanent implements ComponentListen
} }
} }
@Override @Override
public void mouseExited(MouseEvent e) { public void mouseExited(MouseEvent e) {
if (getGameCard().hideInfo()) { if (getGameCard().hideInfo()) {
return; return;
@ -836,7 +843,6 @@ public abstract class CardPanel extends MagePermanent implements ComponentListen
BufferedImage day = ImageManagerImpl.instance.getDayImage(); BufferedImage day = ImageManagerImpl.instance.getDayImage();
dayNightButton.setIcon(new ImageIcon(day)); dayNightButton.setIcon(new ImageIcon(day));
} }
if (!isPermanent) { // use only for custom transformation (when pressing day-night button) if (!isPermanent) { // use only for custom transformation (when pressing day-night button)
copySelections(this.getGameCard().getSecondCardFace(), this.getGameCard()); copySelections(this.getGameCard().getSecondCardFace(), this.getGameCard());
update(this.getTemporary()); update(this.getTemporary());

View file

@ -12,7 +12,6 @@ import mage.server.managers.ManagerFactory;
import mage.view.DraftPickView; import mage.view.DraftPickView;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import java.io.File;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
@ -26,7 +25,6 @@ import java.util.concurrent.ConcurrentMap;
public class DraftController { public class DraftController {
private static final Logger logger = Logger.getLogger(GameController.class); private static final Logger logger = Logger.getLogger(GameController.class);
public static final String INIT_FILE_PATH = "config" + File.separator + "init.txt";
private final ManagerFactory managerFactory; private final ManagerFactory managerFactory;
private final ConcurrentMap<UUID, DraftSession> draftSessions = new ConcurrentHashMap<>(); private final ConcurrentMap<UUID, DraftSession> draftSessions = new ConcurrentHashMap<>();
@ -34,7 +32,6 @@ public class DraftController {
private final UUID draftSessionId; private final UUID draftSessionId;
private final Draft draft; private final Draft draft;
private final UUID tableId; private final UUID tableId;
private final UUID markedCard;
public DraftController(ManagerFactory managerFactory, Draft draft, ConcurrentHashMap<UUID, UUID> userPlayerMap, UUID tableId) { public DraftController(ManagerFactory managerFactory, Draft draft, ConcurrentHashMap<UUID, UUID> userPlayerMap, UUID tableId) {
this.managerFactory = managerFactory; this.managerFactory = managerFactory;
@ -42,7 +39,6 @@ public class DraftController {
this.userPlayerMap = userPlayerMap; this.userPlayerMap = userPlayerMap;
this.draft = draft; this.draft = draft;
this.tableId = tableId; this.tableId = tableId;
this.markedCard = null;
init(); init();
} }