From a2484cc6d982c4a0c2731f84708c9fe2633fe8ff Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 16 Nov 2014 08:59:59 +0100 Subject: [PATCH] Added F10 to skip priority while the stack resolves. --- .../main/java/mage/client/game/GamePanel.java | 59 +++++++++++++++--- .../mage/plugins/card/utils/ImageManager.java | 1 + .../card/utils/impl/ImageManagerImpl.java | 9 +++ .../src/main/resources/buttons/skip_stack.png | Bin 0 -> 2440 bytes Mage.Common/src/mage/view/PlayerView.java | 5 ++ .../src/mage/player/human/HumanPlayer.java | 9 +++ 6 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 Mage.Client/src/main/resources/buttons/skip_stack.png diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index e0a4826f2c4..e69f613cb9b 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -367,6 +367,7 @@ public final class GamePanel extends javax.swing.JPanel { this.btnSkipToNextTurn.setVisible(true); this.btnSkipToEndTurn.setVisible(true); this.btnSkipToNextMain.setVisible(true); + this.btnSkipStack.setVisible(true); this.btnSkipToYourTurn.setVisible(true); this.pnlReplay.setVisible(false); @@ -395,6 +396,7 @@ public final class GamePanel extends javax.swing.JPanel { this.btnSkipToNextTurn.setVisible(false); this.btnSkipToEndTurn.setVisible(false); this.btnSkipToNextMain.setVisible(false); + this.btnSkipStack.setVisible(false); this.btnSkipToYourTurn.setVisible(false); @@ -605,7 +607,7 @@ public final class GamePanel extends javax.swing.JPanel { } players.get(player.getPlayerId()).update(player); if (player.getPlayerId().equals(playerId)) { - updateSkipButtons(player.isPassedTurn(), player.isPassedUntilEndOfTurn(), player.isPassedUntilNextMain(), player.isPassedAllTurns()); + updateSkipButtons(player.isPassedTurn(), player.isPassedUntilEndOfTurn(), player.isPassedUntilNextMain(), player.isPassedAllTurns(), player.isPassedUntilStackResolved()); } } else { logger.warn("Couldn't find player."); @@ -664,7 +666,7 @@ public final class GamePanel extends javax.swing.JPanel { static final int BORDER_SIZE = 2; - private void updateSkipButtons(boolean turn, boolean endOfTurn, boolean nextMain, boolean allTurns) { + private void updateSkipButtons(boolean turn, boolean endOfTurn, boolean nextMain, boolean allTurns, boolean stack) { if (turn) { //F4 btnSkipToNextTurn.setBorder(new LineBorder(Color.red, BORDER_SIZE)); } else { @@ -680,6 +682,11 @@ public final class GamePanel extends javax.swing.JPanel { } else { btnSkipToNextMain.setBorder(new EmptyBorder(BORDER_SIZE,BORDER_SIZE,BORDER_SIZE,BORDER_SIZE)); } + if (stack) { // F8 + btnSkipStack.setBorder(new LineBorder(Color.red, BORDER_SIZE)); + } else { + btnSkipStack.setBorder(new EmptyBorder(BORDER_SIZE,BORDER_SIZE,BORDER_SIZE,BORDER_SIZE)); + } if (allTurns) { // F9 btnSkipToYourTurn.setBorder(new LineBorder(Color.red, BORDER_SIZE)); } else { @@ -937,6 +944,7 @@ public final class GamePanel extends javax.swing.JPanel { btnSkipToNextTurn = new javax.swing.JButton(); // F4 btnSkipToEndTurn = new javax.swing.JButton(); // F5 btnSkipToNextMain = new javax.swing.JButton(); // F7 + btnSkipStack = new javax.swing.JButton(); // F8 btnSkipToYourTurn = new javax.swing.JButton(); // F9 btnConcede = new javax.swing.JButton(); @@ -1139,7 +1147,30 @@ public final class GamePanel extends javax.swing.JPanel { btnPassPriorityUntilNextYourTurnActionPerformed(actionEvent); } }); - + + btnSkipStack.setContentAreaFilled(false); + btnSkipStack.setBorder(new EmptyBorder(BORDER_SIZE,BORDER_SIZE,BORDER_SIZE, BORDER_SIZE)); + btnSkipStack.setIcon(new ImageIcon(ImageManagerImpl.getInstance().getSkipStackButtonImage())); + btnSkipStack.setToolTipText("Skip until stack is resolved (F10)."); + btnSkipStack.setFocusable(false); + btnSkipStack.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent evt) { + if (evt.getButton() == MouseEvent.BUTTON1) { + btnPassPriorityUntilStackResolvedActionPerformed(null); + } + } + }); + + ks = KeyStroke.getKeyStroke(KeyEvent.VK_F10, 0); + this.getInputMap(c).put(ks, "F10_PRESS"); + this.getActionMap().put("F10_PRESS", new AbstractAction() { + @Override + public void actionPerformed(ActionEvent actionEvent) { + btnPassPriorityUntilStackResolvedActionPerformed(actionEvent); + } + }); + btnConcede.setContentAreaFilled(false); btnConcede.setBorder(new EmptyBorder(BORDER_SIZE,BORDER_SIZE,BORDER_SIZE, BORDER_SIZE)); btnConcede.setIcon(new ImageIcon(ImageManagerImpl.getInstance().getConcedeButtonImage())); @@ -1336,6 +1367,7 @@ public final class GamePanel extends javax.swing.JPanel { .addComponent(btnSkipToEndTurn) .addComponent(btnSkipToNextMain) .addComponent(btnSkipToYourTurn) + .addComponent(btnSkipStack) ) .addGroup(gl_pnlShortCuts.createSequentialGroup() .addComponent(btnSwitchHands) @@ -1367,6 +1399,7 @@ public final class GamePanel extends javax.swing.JPanel { .addComponent(btnSkipToEndTurn) .addComponent(btnSkipToNextMain) .addComponent(btnSkipToYourTurn) + .addComponent(btnSkipStack) ) .addGroup(gl_pnlShortCuts.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(btnSwitchHands) @@ -1523,6 +1556,9 @@ public final class GamePanel extends javax.swing.JPanel { for (MouseListener ml :this.btnSkipToYourTurn.getMouseListeners()) { this.btnSkipToYourTurn.removeMouseListener(ml); } + for (MouseListener ml :this.btnSkipStack.getMouseListeners()) { + this.btnSkipStack.removeMouseListener(ml); + } for (MouseListener ml :this.btnSkipToEndTurn.getMouseListeners()) { this.btnSkipToEndTurn.removeMouseListener(ml); } @@ -1591,31 +1627,37 @@ public final class GamePanel extends javax.swing.JPanel { private void btnEndTurnActionPerformed(java.awt.event.ActionEvent evt) { session.sendPlayerAction(PlayerAction.PASS_PRIORITY_UNTIL_NEXT_TURN, gameId); AudioManager.playOnSkipButton(); - updateSkipButtons(true, false, false, false); + updateSkipButtons(true, false, false, false, false); } private void btnUntilEndOfTurnActionPerformed(java.awt.event.ActionEvent evt) { session.sendPlayerAction(PlayerAction.PASS_PRIORITY_UNTIL_TURN_END_STEP, gameId); AudioManager.playOnSkipButton(); - updateSkipButtons(false, true, false, false); + updateSkipButtons(false, true, false, false, false); } private void btnUntilNextMainPhaseActionPerformed(java.awt.event.ActionEvent evt) { session.sendPlayerAction(PlayerAction.PASS_PRIORITY_UNTIL_NEXT_MAIN_PHASE, gameId); AudioManager.playOnSkipButton(); - updateSkipButtons(false, false, true, false); + updateSkipButtons(false, false, true, false, false); } private void btnPassPriorityUntilNextYourTurnActionPerformed(java.awt.event.ActionEvent evt) { session.sendPlayerAction(PlayerAction.PASS_PRIORITY_UNTIL_MY_NEXT_TURN, gameId); AudioManager.playOnSkipButton(); - updateSkipButtons(false, false, false, true); + updateSkipButtons(false, false, false, true, false); + } + + private void btnPassPriorityUntilStackResolvedActionPerformed(java.awt.event.ActionEvent evt) { + session.sendPlayerAction(PlayerAction.PASS_PRIORITY_UNTIL_STACK_RESOLVED, gameId); + AudioManager.playOnSkipButton(); + updateSkipButtons(false, false, false, false, true); } private void restorePriorityActionPerformed(java.awt.event.ActionEvent evt) { session.sendPlayerAction(PlayerAction.PASS_PRIORITY_CANCEL_ALL_ACTIONS, gameId); AudioManager.playOnSkipButtonCancel(); - updateSkipButtons(false, false, false, false); + updateSkipButtons(false, false, false, false, false); } private void mouseClickPhaseBar(MouseEvent evt) { @@ -1728,6 +1770,7 @@ public final class GamePanel extends javax.swing.JPanel { private javax.swing.JButton btnSkipToNextTurn; // F4 private javax.swing.JButton btnSkipToEndTurn; // F5 private javax.swing.JButton btnSkipToNextMain; // F7 + private javax.swing.JButton btnSkipStack; // F8 private javax.swing.JButton btnSkipToYourTurn; // F9 private javax.swing.JButton btnConcede; diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java b/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java index a7254e7771b..52138aa9969 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/utils/ImageManager.java @@ -37,6 +37,7 @@ public interface ImageManager { Image getSkipNextTurnButtonImage(); Image getSkipEndTurnButtonImage(); Image getSkipMainButtonImage(); + Image getSkipStackButtonImage(); Image getSkipYourNextTurnButtonImage(); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java b/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java index 3d30f575da9..4ec5ac433db 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/utils/impl/ImageManagerImpl.java @@ -293,6 +293,14 @@ public class ImageManagerImpl implements ImageManager { return imageSkipToMainButton; } + @Override + public Image getSkipStackButtonImage() { + if (imageSkipStackButton == null) { + imageSkipStackButton = getBufferedImageFromResource("/buttons/skip_stack.png"); + } + return imageSkipStackButton; + } + @Override public Image getSkipYourNextTurnButtonImage() { if (imageSkipYourNextTurnButton == null) { @@ -388,6 +396,7 @@ public class ImageManagerImpl implements ImageManager { private static BufferedImage imageSkipNextTurnButton; private static BufferedImage imageSkipToEndTurnButton; private static BufferedImage imageSkipToMainButton; + private static BufferedImage imageSkipStackButton; private static BufferedImage imageSkipYourNextTurnButton; private static Map phasesImages; diff --git a/Mage.Client/src/main/resources/buttons/skip_stack.png b/Mage.Client/src/main/resources/buttons/skip_stack.png new file mode 100644 index 0000000000000000000000000000000000000000..40597cfb64fed8491cb760927fa4098411ce4400 GIT binary patch literal 2440 zcmV;333v91P)S^IHf0gY?!qDh3ZfDb zL|L_Nh|2*L#03EXBO)oV3+e?c4dj`Tr4&HBdMw zY}9Fq>U0 zYQJC>U)4TDUPMpijXaW9sX^KRT*q2hFpWtP%oDB)=85Pucp*F@i!fvHZX~8xvSF8bVz#n&c*!$6pgHQlM_1ju~r@;KY^haPH=VcBzvM-ywEg z4Kzfr#*a*jbD`(epJWaiGf*&iP(Oo5i|wEvF>8md8+D= z0ac$|*d>%Bzv^nUm0Nik6Ji&_%3&1xS=+(MHyDeH4scn_l6;Kt3gq+a*LemTyNyJav8En&qKp2q5mE6tWiNDRb#LEp#> z7K7|Kt);DtjIw%og~f49=hv^ZcJ>wP+ahgiZHu1wHj#HF2Qd*FGfKWEq)xhe@Qg^|GPlrKoHy9XkMlJ;c0yFf zb}rL1H0HA8!Wy|AmA^OCnbStS2eilsiM%&vAvR(pRt2+sXbGKdoi+Q!Jn>0AjDS_A zWCdlOM%?C$n7^|D3(KxHOEEds7!foJMwT{mLj)$Sg>&$1IVSZQWG`RS#n6QF;_{Bl z^&I`9xlBuJEQ%9~PBiQJd;D+Mmta1|-2|^h{2xYj#4H?&h2x6_v&Hbh=4BAT<4uTyLOz1g7Pkho-jF z0FyF5M{E5NBe62GVi?eb&_kRd*EmLO`p=w?Z=f|AIX;ois;XyL}Q zB7tLvfLRDgF5+}&0}~{bH1L_?==HU7JrxyI=$rJFhJb|?TI-EOjKs>!iph}1f{9ws zz%71BWmvrXR;v}1oDVzSDH!550j{CRh%Y$B`H{=ZIHohjzlm7DaddVSyr(VY^xV>~ z;S!R>(AMJhbe|FaGmyObOq+NkMq(vqrP%nhJ!=}eSoaW8}OMj4|6xwaNJTwEiXaW9%cxdo$=Os7K0tQ zUSp*cRLkX#qa(Pt#OEAf&)HSCFx+zj)HF0%HtvDQIeJfKB1U3uJOrdkP}e4GM97K< zAAa!zlp5ylFLlKU(QxnyktQ(TP;B|?5nTKuIi6Qo$uVhT?OkM5e2tvLH|0E~vOm3w zbyeTUanzCmzTQ82!B6TomVQrZwXhoD0q3#dtQF;Fkg=;CcAn$qC6#;>*F8i~+)|D` z!e+8~Wl35oGZ7=PHl75fWl*F0P)nzn3+t-?h>y-aVL5mQ^9{P2_JM1_6vVA8M%m>b zv81HB$$Cz4@XSSGFHw{8-nVte&Wn$+?%;X!FzX}dn_9k)yy~ln%h<&6gt%1rMo1f< z(UG(H{*7g5EH%Kms1(Ge7hyr+e$F2i5CJ`d9x!`vpzMM2ZCrgh&fIqvE6cy)^f0$E z%tLI%NUV*QK|!%8=&ft!nU%Pq>gBF0{{U&z@o(Yi9VD*X9c2KYi8HXR?oSwKJ5mCO zoyReqM|k;TeZ`mPKh&PfviF>Xjf5Mq+Ke5t6sUf|iA+Q%GvV$7dg);t$V|kXekd_%wW2dmXbfHcIQe_?Bz#JcoD4 z6pq*K{*2?qRRtJi=LDV3UC^bQfn3(ZR05znjrH60B~8GLdt0LV_ESX8St{pkue&K< zpIWe!RxO;c@2Z@o%pSj zhB!K*?94TM`3T6_TP^;~)e*P7YFM+Y60Tz;(4OYK;W<7`Jon-{zq@`Pc5WWf5Qh=f zr8MQO+_s17BxmMuY}&^XeXWL|=Jq4Lzf#uXGpSzj(Yhx2N`=SIZBl;f`{x)PKAoRO zav2kh^zF4Th>6&k@eMzRUwse}1Y<$N(9zZ}rfkjr`WH2KU*fZSV4eB_IP+us7I{?q zCGW&QEX2fYZ}}kd>XR6)k?P&-tw)9DrxjN}skrv|RU%LZVzYEd_#GZnR)<8WIo9V&vtB$SRSNCk!#lPanofrIo&+h}r{?a}~UdR)9 zBah^jJd<}~V3uZn6m9xhToAg6G8fdk*y5fQc7(p-q0000