Reset game in menu.

master
ubeefx 2011-04-17 18:09:43 +00:00
parent b48b69c625
commit e9591c8355
5 changed files with 48 additions and 16 deletions

View File

@ -38,7 +38,6 @@ Release 1.12 (April 17, 2011)
- added selectable avatar sets in preferences, separate from theme - added selectable avatar sets in preferences, separate from theme
- added unlimited undo support - added unlimited undo support
- added "Reset game" in menu, undoing all moves - 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 - added M key as additional shortcut for messages
Release 1.11 (April 11, 2011) Release 1.11 (April 11, 2011)

View File

@ -41,12 +41,7 @@ public class CubeDefinitions {
cubeDefinitions.add(new MagicCubeDefinition(cubeName)); cubeDefinitions.add(new MagicCubeDefinition(cubeName));
} }
} }
public String getCardText() {
return cubeDefinitions.get(0).size()+" / "+cubeDefinitions.get(1).size()+" cards";
}
public String[] getCubeNames() { public String[] getCubeNames() {
final String names[]=new String[cubeDefinitions.size()]; final String names[]=new String[cubeDefinitions.size()];

View File

@ -44,6 +44,7 @@ public class GameController {
private boolean undoClicked=false; private boolean undoClicked=false;
private boolean actionClicked=false; private boolean actionClicked=false;
private boolean combatChoice=false; private boolean combatChoice=false;
private boolean resetGame=false;
private Object choiceClicked=null; private Object choiceClicked=null;
private MagicCardDefinition sourceCardDefinition; private MagicCardDefinition sourceCardDefinition;
@ -359,13 +360,21 @@ public class GameController {
return; return;
} }
if (choiceResults==MagicChoice.UNDO_CHOICE_RESULTS) { if (choiceResults==MagicChoice.UNDO_CHOICE_RESULTS) {
game.gotoLastUndoPoint(); performUndo();
return; return;
} }
} }
game.executeNextEvent(choiceResults); game.executeNextEvent(choiceResults);
} }
public synchronized void resetGame() {
if (game.hasUndoPoints()) {
resetGame=true;
undoClicked();
}
}
public synchronized void concede() { public synchronized void concede() {
if (!gameConceded&&!game.isFinished()) { if (!gameConceded&&!game.isFinished()) {
@ -376,6 +385,19 @@ public class GameController {
notifyAll(); notifyAll();
} }
} }
public void performUndo() {
if (resetGame) {
resetGame=false;
while (game.hasUndoPoints()) {
game.gotoLastUndoPoint();
}
} else {
game.gotoLastUndoPoint();
}
}
public void haltGame() { public void haltGame() {
@ -400,7 +422,7 @@ public class GameController {
showMessage(null,"{L} "+game.getLosingPlayer()+" "+(gameConceded?"conceded":"lost")+" the game.|Press {f} to continue."); showMessage(null,"{L} "+game.getLosingPlayer()+" "+(gameConceded?"conceded":"lost")+" the game.|Press {f} to continue.");
enableForwardButton(); enableForwardButton();
if (waitForInputOrUndo()) { if (waitForInputOrUndo()) {
game.gotoLastUndoPoint(); performUndo();
update(); update();
continue; continue;
} else { } else {
@ -434,4 +456,4 @@ public class GameController {
} }
running.set(false); running.set(false);
} }
} }

View File

@ -39,6 +39,7 @@ public class MagicFrame extends JFrame implements ActionListener {
private static final String SAVE_DECK_ITEM="SaveDeck"; private static final String SAVE_DECK_ITEM="SaveDeck";
private static final String SWAP_DECKS_ITEM="Swap"; private static final String SWAP_DECKS_ITEM="Swap";
private static final String PLAY_GAME_ITEM="Play"; 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 CONCEDE_GAME_ITEM="Concede";
private static final String CARD_EXPLORER_ITEM="Explorer"; private static final String CARD_EXPLORER_ITEM="Explorer";
private static final String KEYWORDS_ITEM="Keywords"; private static final String KEYWORDS_ITEM="Keywords";
@ -55,6 +56,7 @@ public class MagicFrame extends JFrame implements ActionListener {
private JMenuItem saveDeckItem; private JMenuItem saveDeckItem;
private JMenuItem swapDecksItem; private JMenuItem swapDecksItem;
private JMenuItem playGameItem; private JMenuItem playGameItem;
private JMenuItem resetGameItem;
private JMenuItem concedeGameItem; private JMenuItem concedeGameItem;
private JMenuItem preferencesItem; private JMenuItem preferencesItem;
private JMenuItem quitItem; private JMenuItem quitItem;
@ -127,13 +129,15 @@ public class MagicFrame extends JFrame implements ActionListener {
swapDecksItem.setEnabled(enabled); swapDecksItem.setEnabled(enabled);
} else if (PLAY_GAME_ITEM.equals(item)) { } else if (PLAY_GAME_ITEM.equals(item)) {
playGameItem.setEnabled(enabled); playGameItem.setEnabled(enabled);
} else if (RESET_GAME_ITEM.equals(item)) {
resetGameItem.setEnabled(enabled);
} else if (CONCEDE_GAME_ITEM.equals(item)) { } else if (CONCEDE_GAME_ITEM.equals(item)) {
concedeGameItem.setEnabled(enabled); concedeGameItem.setEnabled(enabled);
} else if (CARD_EXPLORER_ITEM.equals(item)) { } else if (CARD_EXPLORER_ITEM.equals(item)) {
cardExplorerItem.setEnabled(enabled); cardExplorerItem.setEnabled(enabled);
} else if (KEYWORDS_ITEM.equals(item)) { } else if (KEYWORDS_ITEM.equals(item)) {
keywordsItem.setEnabled(enabled); keywordsItem.setEnabled(enabled);
} }
} }
private void setInitialContent() { private void setInitialContent() {
@ -172,6 +176,7 @@ public class MagicFrame extends JFrame implements ActionListener {
enableMenuItem(SAVE_DECK_ITEM,false); enableMenuItem(SAVE_DECK_ITEM,false);
enableMenuItem(SWAP_DECKS_ITEM,false); enableMenuItem(SWAP_DECKS_ITEM,false);
enableMenuItem(PLAY_GAME_ITEM,false); enableMenuItem(PLAY_GAME_ITEM,false);
enableMenuItem(RESET_GAME_ITEM,false);
enableMenuItem(CONCEDE_GAME_ITEM,false); enableMenuItem(CONCEDE_GAME_ITEM,false);
enableMenuItem(CARD_EXPLORER_ITEM,true); enableMenuItem(CARD_EXPLORER_ITEM,true);
enableMenuItem(KEYWORDS_ITEM,true); enableMenuItem(KEYWORDS_ITEM,true);
@ -223,6 +228,10 @@ public class MagicFrame extends JFrame implements ActionListener {
playGameItem.addActionListener(this); playGameItem.addActionListener(this);
tournamentMenu.add(playGameItem); tournamentMenu.add(playGameItem);
resetGameItem=new JMenuItem("Reset game");
resetGameItem.addActionListener(this);
tournamentMenu.add(resetGameItem);
concedeGameItem=new JMenuItem("Concede game"); concedeGameItem=new JMenuItem("Concede game");
concedeGameItem.addActionListener(this); concedeGameItem.addActionListener(this);
tournamentMenu.add(concedeGameItem); 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() { public void concedeGame() {
if (gamePanel!=null) { if (gamePanel!=null) {
gamePanel.getController().concede(); gamePanel.getController().concede();
} }
} }
public void nextGame() { public void nextGame() {
tournament.updateDifficulty(); tournament.updateDifficulty();
@ -383,6 +399,7 @@ public class MagicFrame extends JFrame implements ActionListener {
final GameLayeredPane gamePane=new GameLayeredPane(gamePanel,backgroundLabel); final GameLayeredPane gamePane=new GameLayeredPane(gamePanel,backgroundLabel);
setContent(gamePane); setContent(gamePane);
gamePanel.requestFocus(); gamePanel.requestFocus();
enableMenuItem(RESET_GAME_ITEM,true);
enableMenuItem(CONCEDE_GAME_ITEM,true); enableMenuItem(CONCEDE_GAME_ITEM,true);
} }
@ -443,6 +460,8 @@ public class MagicFrame extends JFrame implements ActionListener {
swapDecks(); swapDecks();
} else if (source==playGameItem) { } else if (source==playGameItem) {
nextGame(); nextGame();
} else if (source==resetGameItem) {
resetGame();
} else if (source==concedeGameItem) { } else if (source==concedeGameItem) {
concedeGame(); concedeGame();
} else if (source==preferencesItem) { } else if (source==preferencesItem) {

View File

@ -17,7 +17,6 @@ import javax.swing.JPanel;
import javax.swing.border.Border; import javax.swing.border.Border;
import magic.data.CardDefinitions; import magic.data.CardDefinitions;
import magic.data.CubeDefinitions;
import magic.data.IconImages; import magic.data.IconImages;
import magic.model.MagicCardDefinition; import magic.model.MagicCardDefinition;
import magic.model.MagicRandom; import magic.model.MagicRandom;
@ -30,9 +29,7 @@ public class VersionPanel extends JPanel implements ActionListener {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static final String VERSION = "1.12"; private static final String VERSION = "1.12";
private static final String CARDS = CubeDefinitions.getInstance().getCardText(); private static final String VERSION_TEXT = "Magarena Limited Edition "+VERSION+" by ubeefx";
private static final String SPACING = " ";
private static final String VERSION_TEXT = "Magarena Limited Edition "+VERSION+SPACING+"by ubeefx"+SPACING+CARDS;
private static final Border LOGO_BORDER=BorderFactory.createMatteBorder(2,2,2,2,new Color(0x8C,0x78,0x53)); private static final Border LOGO_BORDER=BorderFactory.createMatteBorder(2,2,2,2,new Color(0x8C,0x78,0x53));