diff --git a/src/main/java/forge/Gui_WinLose.java b/src/main/java/forge/Gui_WinLose.java index 021eb3eda61..481ce64553c 100644 --- a/src/main/java/forge/Gui_WinLose.java +++ b/src/main/java/forge/Gui_WinLose.java @@ -46,7 +46,7 @@ import java.util.List; * @version $Id$ */ public class Gui_WinLose extends JFrame implements NewConstants { - /** Constant serialVersionUID=-5800412940994975483L */ + /** Constant serialVersionUID=-5800412940994975483L. */ private static final long serialVersionUID = -5800412940994975483L; private JLabel titleLabel = new JLabel(); @@ -72,6 +72,10 @@ public class Gui_WinLose extends JFrame implements NewConstants { /** *

Constructor for Gui_WinLose.

+ * + * @param matchState a QuestMatchState + * @param quest a QuestData object + * @param qa a Quest_Assignment object */ public Gui_WinLose(final QuestMatchState matchState, final QuestData quest, final Quest_Assignment qa) { model = new WinLoseModel(); @@ -118,7 +122,7 @@ public class Gui_WinLose extends JFrame implements NewConstants { } else { titleLabel.setText(ForgeProps.getLocalized(WINLOSE_TEXT.LOSE)); } - }//setup(); + } //setup(); /** *

jbInit.

@@ -134,15 +138,15 @@ public class Gui_WinLose extends JFrame implements NewConstants { this.getContentPane().setLayout(new MigLayout("fill")); continueButton.setText(ForgeProps.getLocalized(WINLOSE_TEXT.CONTINUE)); continueButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(ActionEvent e) { continueButton_actionPerformed(e); } + public void actionPerformed(final ActionEvent e) { continueButton_actionPerformed(e); } }); restartButton.setText(ForgeProps.getLocalized(WINLOSE_TEXT.RESTART)); restartButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(ActionEvent e) { restartButton_actionPerformed(e); } + public void actionPerformed(final ActionEvent e) { restartButton_actionPerformed(e); } }); quitButton.setText(ForgeProps.getLocalized(WINLOSE_TEXT.QUIT)); quitButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(ActionEvent e) { quitButton_actionPerformed(e); } + public void actionPerformed(final ActionEvent e) { quitButton_actionPerformed(e); } }); statsLabel.setFont(new java.awt.Font("Dialog", 0, 16)); statsLabel.setHorizontalAlignment(SwingConstants.CENTER); @@ -150,7 +154,7 @@ public class Gui_WinLose extends JFrame implements NewConstants { jPanel2.setLayout(new MigLayout("align center")); this.addWindowListener(new java.awt.event.WindowAdapter() { @Override - public void windowClosing(WindowEvent e) { this_windowClosing(e); } + public void windowClosing(final WindowEvent e) { this_windowClosing(e); } }); this.getContentPane().add(titleLabel, "align center, grow, wrap"); this.getContentPane().add(statsLabel, "align center, grow, wrap"); @@ -166,38 +170,41 @@ public class Gui_WinLose extends JFrame implements NewConstants { * * @param e a {@link java.awt.event.ActionEvent} object. */ - void continueButton_actionPerformed(ActionEvent e) { + final void continueButton_actionPerformed(ActionEvent e) { // issue 147 - keep battlefield up following win/loss JFrame frame = (JFrame) AllZone.getDisplay(); frame.dispose(); //open up "Game" screen - PrepareForNextRound(); + prepareForNextRound(); AllZone.getDisplay().setVisible(true); frame.setEnabled(true); dispose(); } - - void PrepareForNextRound() - { + + void prepareForNextRound() { if (Constant.Quest.fantasyQuest[0]) { int extraLife = 0; if (model.qa != null) { forge.quest.data.QuestUtil.setupQuest(model.qa); - if (model.quest.getInventory().hasItem("Zeppelin")) + if (model.quest.getInventory().hasItem("Zeppelin")) { extraLife = 3; + } } - //AllZone.getGameAction().newGame(Constant.Runtime.HumanDeck[0], Constant.Runtime.ComputerDeck[0], humanList, computerList, humanLife, computerLife); + //AllZone.getGameAction().newGame(Constant.Runtime.HumanDeck[0], Constant.Runtime.ComputerDeck[0], + //humanList, computerList, humanLife, computerLife); CardList humanList = forge.quest.data.QuestUtil.getHumanPlantAndPet(model.quest, model.qa); CardList computerList = new CardList(); int humanLife = model.quest.getLife() + extraLife; int computerLife = 20; - if ( model.qa != null ) + if (model.qa != null) { computerLife = model.qa.getComputerLife(); + } - AllZone.getGameAction().newGame(Constant.Runtime.HumanDeck[0], Constant.Runtime.ComputerDeck[0], humanList, computerList, humanLife, computerLife, model.qa); + AllZone.getGameAction().newGame(Constant.Runtime.HumanDeck[0], Constant.Runtime.ComputerDeck[0], + humanList, computerList, humanLife, computerLife, model.qa); } else { AllZone.getGameAction().newGame(Constant.Runtime.HumanDeck[0], Constant.Runtime.ComputerDeck[0]); } @@ -209,13 +216,13 @@ public class Gui_WinLose extends JFrame implements NewConstants { * * @param e a {@link java.awt.event.ActionEvent} object. */ - void restartButton_actionPerformed(ActionEvent e) { + final void restartButton_actionPerformed(ActionEvent e) { // issue 147 - keep battlefield up following win/loss JFrame frame = (JFrame) AllZone.getDisplay(); frame.dispose(); - + model.match.reset(); - PrepareForNextRound(); + prepareForNextRound(); AllZone.getDisplay().setVisible(true); frame.setEnabled(true); dispose(); @@ -229,7 +236,9 @@ public class Gui_WinLose extends JFrame implements NewConstants { * @param q a {@link forge.quest.data.QuestData} object. * @return a {@link java.lang.String} object. */ - private String getCreditsAwardedText(final long creds, final QuestMatchState matchState, final forge.quest.data.QuestData q) { + private String getCreditsAwardedText(final long creds, final QuestMatchState matchState, + final forge.quest.data.QuestData q) + { // TODO use q.qdPrefs to write bonus credits in prefs file StringBuilder sb = new StringBuilder(""); @@ -296,7 +305,7 @@ public class Gui_WinLose extends JFrame implements NewConstants { } else if (estatesLevel == 2) { sb.append("Estates bonus: 15%.
"); } else if (estatesLevel == 3) { sb.append("Estates bonus: 20%.
"); } - + sb.append(String.format("
You have earned %d credits in total.", creds)); sb.append(""); return sb.toString(); @@ -308,7 +317,7 @@ public class Gui_WinLose extends JFrame implements NewConstants { * @param fileName a {@link java.lang.String} object. * @return a {@link javax.swing.ImageIcon} object. */ - private ImageIcon getIcon(String fileName) { + private ImageIcon getIcon(final String fileName) { File base = ForgeProps.getFile(IMAGE_ICON); File file = new File(base, fileName); ImageIcon icon = new ImageIcon(file.toString()); @@ -320,12 +329,12 @@ public class Gui_WinLose extends JFrame implements NewConstants { * * @param e a {@link java.awt.event.ActionEvent} object. */ - void quitButton_actionPerformed(ActionEvent e) { + final void quitButton_actionPerformed(ActionEvent e) { // issue 147 - keep battlefield up following win/loss JFrame frame = (JFrame) AllZone.getDisplay(); frame.dispose(); frame.setEnabled(true); - + //are we on a quest? if (AllZone.getQuestData() == null) { new OldGuiNewGame(); @@ -356,7 +365,7 @@ public class Gui_WinLose extends JFrame implements NewConstants { model.quest.saveData(); new QuestFrame(); - }//else - on quest + } //else - on quest dispose(); @@ -375,14 +384,17 @@ public class Gui_WinLose extends JFrame implements NewConstants { quitButton_actionPerformed(null); } - protected void giveBooster() - { + /** + * + * TODO Write javadoc for this method. + */ + protected final void giveBooster() { String[] boosterTypes = {"Legacy", "Extended", "Standard"}; String boosterType = GuiUtils.getChoice("Choose prize booster format", boosterTypes); List setsToGive = null; if (boosterTypes[2].equals(boosterType)) { // T2 setsToGive = new ArrayList(); - setsToGive.addAll(Arrays.asList(new String[]{"M12","NPH","MBS","M11","ROE","WWK","ZEN"})); + setsToGive.addAll(Arrays.asList(new String[]{"M12", "NPH", "MBS", "M11", "ROE", "WWK", "ZEN"})); } if (boosterTypes[1].equals(boosterType)) { // Ext setsToGive = new ArrayList(); @@ -393,9 +405,14 @@ public class Gui_WinLose extends JFrame implements NewConstants { ImageIcon icon = getIcon("BookIcon.png"); CardListViewer c = new CardListViewer("Booster", "You have won the following new cards", cardsWon, icon); c.show(); - + } + /** + * + * TODO Write javadoc for this method. + * @param wonMatch + */ protected void giveQuestRewards(final boolean wonMatch) { // Award a random booster, as frequent as set in difficulty setup if (model.quest.getRewards().willGiveBooster(wonMatch)) { @@ -420,7 +437,7 @@ public class Gui_WinLose extends JFrame implements NewConstants { if (wins > 0 && wins % 80 == 0) // at every 80 wins, give 10 random rares { List randomRares = model.quest.getCards().addRandomRare(10); - + ImageIcon icon = getIcon("BoxIcon.png"); String title = "You just won 10 random rares!"; CardListViewer c = new CardListViewer("Random rares", title, randomRares, icon); @@ -464,7 +481,8 @@ public class Gui_WinLose extends JFrame implements NewConstants { fileName = CardUtil.buildFilename(c) +".jpg"; icon = getCardIcon(fileName); - JOptionPane.showMessageDialog(null, "", "You have won a random rare for winning against a very hard deck.", JOptionPane.INFORMATION_MESSAGE, icon); + JOptionPane.showMessageDialog(null, "", "You have won a random rare for winning against a very hard deck.", + JOptionPane.INFORMATION_MESSAGE, icon); }*/ // Loss match penalty diff --git a/src/main/java/forge/deck/generate/GenerateThemeDeck.java b/src/main/java/forge/deck/generate/GenerateThemeDeck.java index d056adfc950..fdf27f046e4 100644 --- a/src/main/java/forge/deck/generate/GenerateThemeDeck.java +++ b/src/main/java/forge/deck/generate/GenerateThemeDeck.java @@ -36,23 +36,26 @@ public class GenerateThemeDeck { * * @return a {@link java.util.ArrayList} object. */ - public ArrayList getThemeNames() { + public final ArrayList getThemeNames() { ArrayList ltNames = new ArrayList(); File file = new File("res/quest/themes/"); - if (!file.exists()) + if (!file.exists()) { throw new RuntimeException("GenerateThemeDeck : getThemeNames error -- file not found -- filename is " + file.getAbsolutePath()); + } - if (!file.isDirectory()) + if (!file.isDirectory()) { throw new RuntimeException("GenerateThemeDeck : getThemeNames error -- not a directory -- " + file.getAbsolutePath()); + } String[] fileList = file.list(); for (int i = 0; i < fileList.length; i++) { - if (fileList[i].endsWith(".thm")) + if (fileList[i].endsWith(".thm")) { ltNames.add(fileList[i].substring(0, fileList[i].indexOf(".thm"))); + } } return ltNames; @@ -61,67 +64,72 @@ public class GenerateThemeDeck { /** *

getThemeDeck.

* - * @param ThemeName a {@link java.lang.String} object. - * @param Size a int. + * @param themeName a {@link java.lang.String} object. + * @param size a int. * @return a {@link forge.CardList} object. */ - public CardList getThemeDeck(String ThemeName, int Size) { + public CardList getThemeDeck(final String themeName, final int size) { CardList tDeck = new CardList(); - ArrayList Groups = new ArrayList(); + ArrayList groups = new ArrayList(); - Map CardCounts = new HashMap(); + Map cardCounts = new HashMap(); String s = ""; - int BLandPercentage = 0; - boolean Testing = false; + int bLandPercentage = 0; + boolean testing = false; // read theme file - String tFileName = "res/quest/themes/" + ThemeName + ".thm"; + String tFileName = "res/quest/themes/" + themeName + ".thm"; File tFile = new File(tFileName); - if (!tFile.exists()) - throw new RuntimeException("GenerateThemeDeck : getThemeDeck -- file not found -- filename is " + tFile.getAbsolutePath()); + if (!tFile.exists()) { + throw new RuntimeException("GenerateThemeDeck : getThemeDeck -- file not found -- filename is " + + tFile.getAbsolutePath()); + } try { in = new BufferedReader(new FileReader(tFile)); } catch (Exception ex) { ErrorViewer.showError(ex, "File \"%s\" exception", tFile.getAbsolutePath()); - throw new RuntimeException("GenerateThemeDeck : getThemeDeck -- file exception -- filename is " + tFile.getPath()); + throw new RuntimeException("GenerateThemeDeck : getThemeDeck -- file exception -- filename is " + + tFile.getPath()); } s = readLine(); while (!s.equals("End")) { if (s.startsWith("[Group")) { - Grp G = new Grp(); + Grp g = new Grp(); - String ss[] = s.replaceAll("[\\[\\]]", "").split(" "); + String[] ss = s.replaceAll("[\\[\\]]", "").split(" "); for (int i = 0; i < ss.length; i++) { if (ss[i].startsWith("Percentage")) { String p = ss[i].substring("Percentage".length() + 1); - G.Percentage = Integer.parseInt(p); + g.Percentage = Integer.parseInt(p); } if (ss[i].startsWith("MaxCnt")) { String m = ss[i].substring("MaxCnt".length() + 1); - G.MaxCnt = Integer.parseInt(m); + g.MaxCnt = Integer.parseInt(m); } } s = readLine(); while (!s.equals("[/Group]")) { - G.Cardnames.add(s); - CardCounts.put(s, 0); + g.Cardnames.add(s); + cardCounts.put(s, 0); s = readLine(); } - Groups.add(G); + groups.add(g); } - if (s.startsWith("BasicLandPercentage")) - BLandPercentage = Integer.parseInt(s.substring("BasicLandPercentage".length() + 1)); + if (s.startsWith("BasicLandPercentage")) { + bLandPercentage = Integer.parseInt(s.substring("BasicLandPercentage".length() + 1)); + } - if (s.equals("Testing")) - Testing = true; + if (s.equals("Testing")) { + testing = true; + } s = readLine(); } @@ -130,7 +138,8 @@ public class GenerateThemeDeck { in.close(); } catch (IOException ex) { ErrorViewer.showError(ex, "File \"%s\" exception", tFile.getAbsolutePath()); - throw new RuntimeException("GenerateThemeDeck : getThemeDeck -- file exception -- filename is " + tFile.getPath()); + throw new RuntimeException("GenerateThemeDeck : getThemeDeck -- file exception -- filename is " + + tFile.getPath()); } String tmpDeck = ""; @@ -138,116 +147,122 @@ public class GenerateThemeDeck { // begin assigning cards to the deck Random r = MyRandom.random; - for (int i = 0; i < Groups.size(); i++) { - Grp G = Groups.get(i); - float p = (float) ((float) G.Percentage * .01); - int GrpCnt = (int) (p * (float) Size); - int cnSize = G.Cardnames.size(); - tmpDeck += "Group" + i + ":" + GrpCnt + "\n"; + for (int i = 0; i < groups.size(); i++) { + Grp g = groups.get(i); + float p = (float) ((float) g.Percentage * .01); + int grpCnt = (int) (p * (float) size); + int cnSize = g.Cardnames.size(); + tmpDeck += "Group" + i + ":" + grpCnt + "\n"; - for (int j = 0; j < GrpCnt; j++) { - s = G.Cardnames.get(r.nextInt(cnSize)); + for (int j = 0; j < grpCnt; j++) { + s = g.Cardnames.get(r.nextInt(cnSize)); int lc = 0; - while (CardCounts.get(s) >= G.MaxCnt || lc > Size) // don't keep looping forever + while (cardCounts.get(s) >= g.MaxCnt || lc > size) // don't keep looping forever { - s = G.Cardnames.get(r.nextInt(cnSize)); + s = g.Cardnames.get(r.nextInt(cnSize)); lc++; } - if (lc > Size) - throw new RuntimeException("GenerateThemeDeck : getThemeDeck -- looped too much -- filename is " + tFile.getAbsolutePath()); + if (lc > size) { + throw new RuntimeException("GenerateThemeDeck : getThemeDeck -- looped too much -- filename is " + + tFile.getAbsolutePath()); + } - int n = CardCounts.get(s); + int n = cardCounts.get(s); tDeck.add(AllZone.getCardFactory().getCard(s, AllZone.getComputerPlayer())); - CardCounts.put(s, n + 1); + cardCounts.put(s, n + 1); tmpDeck += s + "\n"; } } int numBLands = 0; - if (BLandPercentage > 0) // if theme explicitly defines this - { - float p = (float) ((float) BLandPercentage * .01); - numBLands = (int) (p * (float) Size); - } else // otherwise, just fill in the rest of the deck with basic lands - numBLands = Size - tDeck.size(); + if (bLandPercentage > 0) { // if theme explicitly defines this + float p = (float) ((float) bLandPercentage * .01); + numBLands = (int) (p * (float) size); + } else { // otherwise, just fill in the rest of the deck with basic lands + numBLands = size - tDeck.size(); + } tmpDeck += "numBLands:" + numBLands + "\n"; if (numBLands > 0) // attempt to optimize basic land counts according to color representation { - CCnt ClrCnts[] = {new CCnt("Plains", 0), + CCnt[] clrCnts = {new CCnt("Plains", 0), new CCnt("Island", 0), new CCnt("Swamp", 0), new CCnt("Mountain", 0), new CCnt("Forest", 0)}; // count each instance of a color in mana costs - // TODO: count hybrid mana differently? + // TODO count hybrid mana differently? for (int i = 0; i < tDeck.size(); i++) { String mc = tDeck.get(i).getManaCost(); for (int j = 0; j < mc.length(); j++) { char c = mc.charAt(j); - if (c == 'W') - ClrCnts[0].Count++; - else if (c == 'U') - ClrCnts[1].Count++; - else if (c == 'B') - ClrCnts[2].Count++; - else if (c == 'R') - ClrCnts[3].Count++; - else if (c == 'G') - ClrCnts[4].Count++; + if (c == 'W') { + clrCnts[0].Count++; + } else if (c == 'U') { + clrCnts[1].Count++; + } else if (c == 'B') { + clrCnts[2].Count++; + } else if (c == 'R') { + clrCnts[3].Count++; + } else if (c == 'G') { + clrCnts[4].Count++; + } } } int totalColor = 0; for (int i = 0; i < 5; i++) { - totalColor += ClrCnts[i].Count; - tmpDeck += ClrCnts[i].Color + ":" + ClrCnts[i].Count + "\n"; + totalColor += clrCnts[i].Count; + tmpDeck += clrCnts[i].Color + ":" + clrCnts[i].Count + "\n"; } tmpDeck += "totalColor:" + totalColor + "\n"; for (int i = 0; i < 5; i++) { - if (ClrCnts[i].Count > 0) { // calculate number of lands for each color - float p = (float) ClrCnts[i].Count / (float) totalColor; + if (clrCnts[i].Count > 0) { // calculate number of lands for each color + float p = (float) clrCnts[i].Count / (float) totalColor; int nLand = (int) ((float) numBLands * p); - tmpDeck += "numLand-" + ClrCnts[i].Color + ":" + nLand + "\n"; + tmpDeck += "numLand-" + clrCnts[i].Color + ":" + nLand + "\n"; - CardCounts.put(ClrCnts[i].Color, 2); - for (int j = 0; j < nLand; j++) - tDeck.add(AllZone.getCardFactory().getCard(ClrCnts[i].Color, AllZone.getComputerPlayer())); + cardCounts.put(clrCnts[i].Color, 2); + for (int j = 0; j < nLand; j++) { + tDeck.add(AllZone.getCardFactory().getCard(clrCnts[i].Color, AllZone.getComputerPlayer())); + } } } } tmpDeck += "DeckSize:" + tDeck.size() + "\n"; - if (tDeck.size() < Size) { - int diff = Size - tDeck.size(); + if (tDeck.size() < size) { + int diff = size - tDeck.size(); for (int i = 0; i < diff; i++) { s = tDeck.get(r.nextInt(tDeck.size())).getName(); - while (CardCounts.get(s) >= 4) + while (cardCounts.get(s) >= 4) { s = tDeck.get(r.nextInt(tDeck.size())).getName(); + } - int n = CardCounts.get(s); + int n = cardCounts.get(s); tDeck.add(AllZone.getCardFactory().getCard(s, AllZone.getComputerPlayer())); - CardCounts.put(s, n + 1); + cardCounts.put(s, n + 1); tmpDeck += "Added:" + s + "\n"; } - } else if (tDeck.size() > Size) { - int diff = tDeck.size() - Size; + } else if (tDeck.size() > size) { + int diff = tDeck.size() - size; for (int i = 0; i < diff; i++) { Card c = tDeck.get(r.nextInt(tDeck.size())); - while (c.isBasicLand()) + while (c.isBasicLand()) { c = tDeck.get(r.nextInt(tDeck.size())); + } tDeck.remove(c); tmpDeck += "Removed:" + s + "\n"; @@ -255,8 +270,9 @@ public class GenerateThemeDeck { } tmpDeck += "DeckSize:" + tDeck.size() + "\n"; - if (Testing) + if (testing) { ErrorViewer.showError(tmpDeck); + } return tDeck; } @@ -270,14 +286,21 @@ public class GenerateThemeDeck { //makes the checked exception, into an unchecked runtime exception try { String s = in.readLine(); - if (s != null) s = s.trim(); + if (s != null) { + s = s.trim(); + } return s; } catch (Exception ex) { ErrorViewer.showError(ex); throw new RuntimeException("GenerateThemeDeck : readLine error"); } - }//readLine(Card) + } //readLine(Card) + /** + * + * TODO Write javadoc for this type. + * + */ class CCnt { public String Color; public int Count; @@ -288,6 +311,11 @@ public class GenerateThemeDeck { } } + /** + * + * TODO Write javadoc for this type. + * + */ class Grp { public ArrayList Cardnames = new ArrayList(); public int MaxCnt;