From e9591c835539a05ac1d277374de7b7196591d5f8 Mon Sep 17 00:00:00 2001 From: ubeefx Date: Sun, 17 Apr 2011 18:09:43 +0000 Subject: [PATCH] Reset game in menu. --- launch4j/Readme.txt | 1 - src/magic/data/CubeDefinitions.java | 7 +------ src/magic/ui/GameController.java | 28 +++++++++++++++++++++++++--- src/magic/ui/MagicFrame.java | 23 +++++++++++++++++++++-- src/magic/ui/VersionPanel.java | 5 +---- 5 files changed, 48 insertions(+), 16 deletions(-) diff --git a/launch4j/Readme.txt b/launch4j/Readme.txt index a39d308270..d958502bb7 100644 --- a/launch4j/Readme.txt +++ b/launch4j/Readme.txt @@ -38,7 +38,6 @@ Release 1.12 (April 17, 2011) - added selectable avatar sets in preferences, separate from theme - added unlimited undo support - added "Reset game" in menu, undoing all moves -- added counter for number of games played in startup screen - added M key as additional shortcut for messages Release 1.11 (April 11, 2011) diff --git a/src/magic/data/CubeDefinitions.java b/src/magic/data/CubeDefinitions.java index 8fcd235edd..cb30164b63 100644 --- a/src/magic/data/CubeDefinitions.java +++ b/src/magic/data/CubeDefinitions.java @@ -41,12 +41,7 @@ public class CubeDefinitions { cubeDefinitions.add(new MagicCubeDefinition(cubeName)); } } - - public String getCardText() { - - return cubeDefinitions.get(0).size()+" / "+cubeDefinitions.get(1).size()+" cards"; - } - + public String[] getCubeNames() { final String names[]=new String[cubeDefinitions.size()]; diff --git a/src/magic/ui/GameController.java b/src/magic/ui/GameController.java index 22ebb31cd1..d8074cf648 100644 --- a/src/magic/ui/GameController.java +++ b/src/magic/ui/GameController.java @@ -44,6 +44,7 @@ public class GameController { private boolean undoClicked=false; private boolean actionClicked=false; private boolean combatChoice=false; + private boolean resetGame=false; private Object choiceClicked=null; private MagicCardDefinition sourceCardDefinition; @@ -359,13 +360,21 @@ public class GameController { return; } if (choiceResults==MagicChoice.UNDO_CHOICE_RESULTS) { - game.gotoLastUndoPoint(); + performUndo(); return; } } game.executeNextEvent(choiceResults); } + public synchronized void resetGame() { + + if (game.hasUndoPoints()) { + resetGame=true; + undoClicked(); + } + } + public synchronized void concede() { if (!gameConceded&&!game.isFinished()) { @@ -376,6 +385,19 @@ public class GameController { notifyAll(); } } + + public void performUndo() { + + if (resetGame) { + resetGame=false; + while (game.hasUndoPoints()) { + + game.gotoLastUndoPoint(); + } + } else { + game.gotoLastUndoPoint(); + } + } public void haltGame() { @@ -400,7 +422,7 @@ public class GameController { showMessage(null,"{L} "+game.getLosingPlayer()+" "+(gameConceded?"conceded":"lost")+" the game.|Press {f} to continue."); enableForwardButton(); if (waitForInputOrUndo()) { - game.gotoLastUndoPoint(); + performUndo(); update(); continue; } else { @@ -434,4 +456,4 @@ public class GameController { } running.set(false); } -} +} \ No newline at end of file diff --git a/src/magic/ui/MagicFrame.java b/src/magic/ui/MagicFrame.java index 6d3feba024..5f237e8048 100644 --- a/src/magic/ui/MagicFrame.java +++ b/src/magic/ui/MagicFrame.java @@ -39,6 +39,7 @@ public class MagicFrame extends JFrame implements ActionListener { private static final String SAVE_DECK_ITEM="SaveDeck"; private static final String SWAP_DECKS_ITEM="Swap"; private static final String PLAY_GAME_ITEM="Play"; + private static final String RESET_GAME_ITEM="Reset"; private static final String CONCEDE_GAME_ITEM="Concede"; private static final String CARD_EXPLORER_ITEM="Explorer"; private static final String KEYWORDS_ITEM="Keywords"; @@ -55,6 +56,7 @@ public class MagicFrame extends JFrame implements ActionListener { private JMenuItem saveDeckItem; private JMenuItem swapDecksItem; private JMenuItem playGameItem; + private JMenuItem resetGameItem; private JMenuItem concedeGameItem; private JMenuItem preferencesItem; private JMenuItem quitItem; @@ -127,13 +129,15 @@ public class MagicFrame extends JFrame implements ActionListener { swapDecksItem.setEnabled(enabled); } else if (PLAY_GAME_ITEM.equals(item)) { playGameItem.setEnabled(enabled); + } else if (RESET_GAME_ITEM.equals(item)) { + resetGameItem.setEnabled(enabled); } else if (CONCEDE_GAME_ITEM.equals(item)) { concedeGameItem.setEnabled(enabled); } else if (CARD_EXPLORER_ITEM.equals(item)) { cardExplorerItem.setEnabled(enabled); } else if (KEYWORDS_ITEM.equals(item)) { keywordsItem.setEnabled(enabled); - } + } } private void setInitialContent() { @@ -172,6 +176,7 @@ public class MagicFrame extends JFrame implements ActionListener { enableMenuItem(SAVE_DECK_ITEM,false); enableMenuItem(SWAP_DECKS_ITEM,false); enableMenuItem(PLAY_GAME_ITEM,false); + enableMenuItem(RESET_GAME_ITEM,false); enableMenuItem(CONCEDE_GAME_ITEM,false); enableMenuItem(CARD_EXPLORER_ITEM,true); enableMenuItem(KEYWORDS_ITEM,true); @@ -223,6 +228,10 @@ public class MagicFrame extends JFrame implements ActionListener { playGameItem.addActionListener(this); tournamentMenu.add(playGameItem); + resetGameItem=new JMenuItem("Reset game"); + resetGameItem.addActionListener(this); + tournamentMenu.add(resetGameItem); + concedeGameItem=new JMenuItem("Concede game"); concedeGameItem.addActionListener(this); tournamentMenu.add(concedeGameItem); @@ -362,13 +371,20 @@ public class MagicFrame extends JFrame implements ActionListener { } } + public void resetGame() { + + if (gamePanel!=null) { + gamePanel.getController().resetGame(); + } + } + public void concedeGame() { if (gamePanel!=null) { gamePanel.getController().concede(); } } - + public void nextGame() { tournament.updateDifficulty(); @@ -383,6 +399,7 @@ public class MagicFrame extends JFrame implements ActionListener { final GameLayeredPane gamePane=new GameLayeredPane(gamePanel,backgroundLabel); setContent(gamePane); gamePanel.requestFocus(); + enableMenuItem(RESET_GAME_ITEM,true); enableMenuItem(CONCEDE_GAME_ITEM,true); } @@ -443,6 +460,8 @@ public class MagicFrame extends JFrame implements ActionListener { swapDecks(); } else if (source==playGameItem) { nextGame(); + } else if (source==resetGameItem) { + resetGame(); } else if (source==concedeGameItem) { concedeGame(); } else if (source==preferencesItem) { diff --git a/src/magic/ui/VersionPanel.java b/src/magic/ui/VersionPanel.java index 1fbb360ffc..a7b2b77184 100644 --- a/src/magic/ui/VersionPanel.java +++ b/src/magic/ui/VersionPanel.java @@ -17,7 +17,6 @@ import javax.swing.JPanel; import javax.swing.border.Border; import magic.data.CardDefinitions; -import magic.data.CubeDefinitions; import magic.data.IconImages; import magic.model.MagicCardDefinition; import magic.model.MagicRandom; @@ -30,9 +29,7 @@ public class VersionPanel extends JPanel implements ActionListener { private static final long serialVersionUID = 1L; private static final String VERSION = "1.12"; - private static final String CARDS = CubeDefinitions.getInstance().getCardText(); - private static final String SPACING = " "; - private static final String VERSION_TEXT = "Magarena Limited Edition "+VERSION+SPACING+"by ubeefx"+SPACING+CARDS; + private static final String VERSION_TEXT = "Magarena Limited Edition "+VERSION+" by ubeefx"; private static final Border LOGO_BORDER=BorderFactory.createMatteBorder(2,2,2,2,new Color(0x8C,0x78,0x53));