mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Current progress on Quest submenu.
This commit is contained in:
4
.gitattributes
vendored
4
.gitattributes
vendored
@@ -10061,6 +10061,8 @@ res/pics/icons/Mage01.jpg -text
|
||||
res/pics/icons/Mage02.jpg -text
|
||||
res/pics/icons/MapIcon.png -text svneol=unset#image/png
|
||||
res/pics/icons/MapIconLarge.png -text svneol=unset#image/png
|
||||
res/pics/icons/PetIcon.png -text
|
||||
res/pics/icons/PlantIcon.png -text
|
||||
res/pics/icons/Unknown.jpg -text
|
||||
res/pics/icons/ZeppelinIcon.png -text svneol=unset#image/png
|
||||
res/pics/icons/notesIcon.png -text svneol=unset#image/png
|
||||
@@ -10748,8 +10750,6 @@ src/main/java/forge/card/trigger/TriggerUnequip.java svneol=native#text/plain
|
||||
src/main/java/forge/card/trigger/TriggerUntaps.java svneol=native#text/plain
|
||||
src/main/java/forge/card/trigger/package-info.java svneol=native#text/plain
|
||||
src/main/java/forge/control/ControlAllUI.java -text
|
||||
src/main/java/forge/control/ControlEditorUI.java -text
|
||||
src/main/java/forge/control/ControlHomeUI.java -text
|
||||
src/main/java/forge/control/ControlMatchUI.java -text
|
||||
src/main/java/forge/control/ControlWinLose.java -text
|
||||
src/main/java/forge/control/home/ControlConstructed.java -text
|
||||
|
||||
BIN
res/pics/icons/PetIcon.png
Normal file
BIN
res/pics/icons/PetIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
BIN
res/pics/icons/PlantIcon.png
Normal file
BIN
res/pics/icons/PlantIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@@ -26,6 +26,7 @@ import java.awt.event.WindowEvent;
|
||||
import javax.swing.JLayeredPane;
|
||||
|
||||
import forge.AllZone;
|
||||
import forge.quest.gui.bazaar.QuestBazaarPanel;
|
||||
import forge.view.GuiTopLevel;
|
||||
import forge.view.editor.EditorTopLevel;
|
||||
import forge.view.home.HomeTopLevel;
|
||||
@@ -45,7 +46,17 @@ public class ControlAllUI {
|
||||
private HomeTopLevel home = null;
|
||||
private ViewTopLevel match = null;
|
||||
private EditorTopLevel editor = null;
|
||||
private WindowAdapter actConcede;
|
||||
private WindowAdapter waConcede;
|
||||
private QuestBazaarPanel bazaar;
|
||||
|
||||
/** */
|
||||
public static final int HOME_SCREEN = 0;
|
||||
/** */
|
||||
public static final int MATCH_SCREEN = 1;
|
||||
/** */
|
||||
public static final int DEFAULT_EDITOR = 2;
|
||||
/** */
|
||||
public static final int QUEST_BAZAAR = 3;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -62,7 +73,7 @@ public class ControlAllUI {
|
||||
|
||||
this.display = (JLayeredPane) this.view.getContentPane();
|
||||
|
||||
this.actConcede = new WindowAdapter() {
|
||||
this.waConcede = new WindowAdapter() {
|
||||
@Override
|
||||
public void windowClosing(final WindowEvent evt) {
|
||||
ViewTopLevel t = ((GuiTopLevel) AllZone.getDisplay()).getController().getMatchController().getView();
|
||||
@@ -86,6 +97,7 @@ public class ControlAllUI {
|
||||
this.editor = null;
|
||||
|
||||
this.display.removeAll();
|
||||
this.view.removeWindowListener(waConcede);
|
||||
this.view.addOverlay();
|
||||
|
||||
view.addComponentListener(new ComponentAdapter() {
|
||||
@@ -101,14 +113,13 @@ public class ControlAllUI {
|
||||
this.home = new HomeTopLevel();
|
||||
this.display.add(this.home, JLayeredPane.DEFAULT_LAYER);
|
||||
sizeChildren();
|
||||
view.removeWindowListener(actConcede);
|
||||
break;
|
||||
|
||||
case 1: // Match screen
|
||||
this.match = new ViewTopLevel();
|
||||
this.display.add(this.match, JLayeredPane.DEFAULT_LAYER);
|
||||
sizeChildren();
|
||||
view.addWindowListener(actConcede);
|
||||
view.addWindowListener(waConcede);
|
||||
break;
|
||||
|
||||
case 2: // Deck editor screen
|
||||
@@ -116,6 +127,12 @@ public class ControlAllUI {
|
||||
this.display.add(this.editor);
|
||||
break;
|
||||
|
||||
case 3: // Quest Bazaar screen
|
||||
this.bazaar = new QuestBazaarPanel(null);
|
||||
this.display.add(bazaar, JLayeredPane.DEFAULT_LAYER);
|
||||
sizeChildren();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -139,6 +156,20 @@ public class ControlAllUI {
|
||||
return this.match.getController();
|
||||
}
|
||||
|
||||
/** @return HomeTopLevel */
|
||||
public HomeTopLevel getHomeView() {
|
||||
return this.home;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the match view.
|
||||
*
|
||||
* @return ViewTopLevel
|
||||
*/
|
||||
public QuestBazaarPanel getBazaarView() {
|
||||
return this.bazaar;
|
||||
}
|
||||
|
||||
/** Sizes children of JLayeredPane to fully fit their layers. */
|
||||
private void sizeChildren() {
|
||||
Component[] children;
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
/*
|
||||
* Forge: Play Magic: the Gathering.
|
||||
* Copyright (C) 2011 Forge Team
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package forge.control;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* ControlEditorUI
|
||||
* </p>
|
||||
* Top-level controller for deck editor.
|
||||
*
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public class ControlEditorUI extends JPanel {
|
||||
/**
|
||||
* <p>
|
||||
* ControlEditorUI
|
||||
* </p>
|
||||
* Top-level controller for deck editor.
|
||||
*
|
||||
*/
|
||||
public ControlEditorUI() {
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* Forge: Play Magic: the Gathering.
|
||||
* Copyright (C) 2011 Forge Team
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package forge.control;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public class ControlHomeUI {
|
||||
|
||||
}
|
||||
@@ -1,19 +1,22 @@
|
||||
package forge.control.home;
|
||||
|
||||
import java.awt.event.WindowAdapter;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import forge.AllZone;
|
||||
import forge.Command;
|
||||
import forge.Constant;
|
||||
import forge.control.ControlAllUI;
|
||||
import forge.deck.Deck;
|
||||
import forge.gui.deckeditor.DeckEditorQuest;
|
||||
import forge.gui.deckeditor.DeckEditorShop;
|
||||
import forge.quest.data.QuestData;
|
||||
import forge.quest.data.QuestUtil;
|
||||
import forge.quest.gui.QuestFrame;
|
||||
import forge.quest.gui.bazaar.QuestBazaarPanel;
|
||||
import forge.quest.data.item.QuestItemZeppelin;
|
||||
import forge.quest.gui.main.QuestChallenge;
|
||||
import forge.quest.gui.main.QuestEvent;
|
||||
import forge.view.GuiTopLevel;
|
||||
import forge.view.home.ViewQuest;
|
||||
|
||||
@@ -23,6 +26,7 @@ import forge.view.home.ViewQuest;
|
||||
*/
|
||||
public class ControlQuest {
|
||||
private ViewQuest view;
|
||||
private QuestEvent event;
|
||||
|
||||
/**
|
||||
* Controls logic and listeners for quest mode in home screen.
|
||||
@@ -31,8 +35,27 @@ public class ControlQuest {
|
||||
*/
|
||||
public ControlQuest(ViewQuest v0) {
|
||||
this.view = v0;
|
||||
|
||||
updateDeckList();
|
||||
|
||||
view.getPetComboBox().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent actionEvent) {
|
||||
if (view.getPetComboBox().getSelectedIndex() > 0) {
|
||||
view.getQuestData().getPetManager().setSelectedPet(
|
||||
(String) view.getPetComboBox().getSelectedItem());
|
||||
} else {
|
||||
view.getQuestData().getPetManager().setSelectedPet(null);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
view.getPlantCheckBox().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent actionEvent) {
|
||||
view.getQuestData().getPetManager()
|
||||
.setUsePlant(view.getPlantCheckBox().isSelected());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/** @return ViewQuest */
|
||||
@@ -82,20 +105,11 @@ public class ControlQuest {
|
||||
}
|
||||
|
||||
/** */
|
||||
// Since QuestBazaarPanel is not in a JFrame for some reason, one
|
||||
// must be created here. Later, this will be integrated into the
|
||||
// top level UI. Doublestrike 11-12-11.
|
||||
public void showBazaar() {
|
||||
QuestFrame f = new QuestFrame();
|
||||
f.getContentPane().add(new QuestBazaarPanel(f));
|
||||
f.setVisible(true);
|
||||
GuiTopLevel g = ((GuiTopLevel) AllZone.getDisplay());
|
||||
|
||||
f.addWindowListener(new WindowAdapter() {
|
||||
@Override
|
||||
public void windowClosed(WindowEvent e) {
|
||||
AllZone.getQuestData().saveData();
|
||||
}
|
||||
});
|
||||
g.getController().changeState(ControlAllUI.QUEST_BAZAAR);
|
||||
g.validate();
|
||||
} // card shop button
|
||||
|
||||
/**
|
||||
@@ -103,9 +117,10 @@ public class ControlQuest {
|
||||
*/
|
||||
public void newQuest() {
|
||||
int difficulty = 0;
|
||||
QuestData questData = AllZone.getQuestData();
|
||||
QuestData questData = new QuestData();
|
||||
|
||||
final String mode = view.getRadFantasy().isSelected() ? forge.quest.data.QuestData.FANTASY
|
||||
final String mode = view.getRadFantasy().isSelected()
|
||||
? forge.quest.data.QuestData.FANTASY
|
||||
: forge.quest.data.QuestData.REALISTIC;
|
||||
|
||||
if (view.getRadEasy().isSelected()) {
|
||||
@@ -118,8 +133,8 @@ public class ControlQuest {
|
||||
difficulty = 3;
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(null,
|
||||
"Please select a difficulty.",
|
||||
"New Quest: Difficulty?", JOptionPane.ERROR_MESSAGE);
|
||||
"This should not be happening!",
|
||||
"New Quest: Difficulty Bug!?", JOptionPane.ERROR_MESSAGE);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -147,21 +162,83 @@ public class ControlQuest {
|
||||
|
||||
/** */
|
||||
public void start() {
|
||||
QuestData questData = AllZone.getQuestData();
|
||||
if (view.getLstDeckChooser().getSelectedIndex() == -1) {
|
||||
JOptionPane.showMessageDialog(null,
|
||||
"A mysterious wall blocks your way."
|
||||
+ "\n\rAn unseen sepulchral voice booms:"
|
||||
+ "\n\r\"Entrance Forbidden Without A Deck\"",
|
||||
"No deck", JOptionPane.ERROR_MESSAGE);
|
||||
return;
|
||||
}
|
||||
|
||||
Constant.Runtime.HUMAN_DECK[0] = questData.getDeck((String) view.getLstDeckChooser().getSelectedValue());
|
||||
Constant.Runtime.COMPUTER_DECK[0] = view.getSelectedOpponent().getEvent().getEventDeck();
|
||||
event = view.getSelectedOpponent().getEvent();
|
||||
AllZone.setQuestEvent(event);
|
||||
final QuestItemZeppelin zeppelin = (QuestItemZeppelin) view.getQuestData().getInventory().getItem("Zeppelin");
|
||||
zeppelin.setZeppelinUsed(false);
|
||||
view.getQuestData().randomizeOpponents();
|
||||
|
||||
AllZone.setQuestEvent(view.getSelectedOpponent().getEvent());
|
||||
String deckname = (String) view.getLstDeckChooser().getSelectedValue();
|
||||
Constant.Runtime.HUMAN_DECK[0] = view.getQuestData().getDeck(deckname);
|
||||
Constant.Runtime.COMPUTER_DECK[0] = event.getEventDeck();
|
||||
Deck humanDeck = view.getQuestData().getDeck(deckname);
|
||||
|
||||
Constant.Runtime.HUMAN_DECK[0] = humanDeck;
|
||||
|
||||
Constant.Quest.OPP_ICON_NAME[0] = event.getIcon();
|
||||
|
||||
GuiTopLevel g = (GuiTopLevel) AllZone.getDisplay();
|
||||
g.getController().changeState(1);
|
||||
g.getController().getMatchController().initMatch();
|
||||
|
||||
AllZone.getMatchState().reset();
|
||||
if (event.getEventType().equals("challenge")) {
|
||||
this.setupChallenge(humanDeck);
|
||||
} else {
|
||||
this.setupDuel(humanDeck);
|
||||
}
|
||||
|
||||
view.getQuestData().saveData();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* setupDuel.
|
||||
* </p>
|
||||
*
|
||||
* @param humanDeck
|
||||
* a {@link forge.deck.Deck} object.
|
||||
*/
|
||||
final void setupDuel(final Deck humanDeck) {
|
||||
final Deck computer = event.getEventDeck();
|
||||
Constant.Runtime.COMPUTER_DECK[0] = computer;
|
||||
|
||||
AllZone.getGameAction().newGame(
|
||||
Constant.Runtime.HUMAN_DECK[0], Constant.Runtime.COMPUTER_DECK[0],
|
||||
QuestUtil.getHumanStartingCards(questData),
|
||||
QuestUtil.getComputerStartingCards(questData),
|
||||
questData.getLife(), 20, null);
|
||||
QuestUtil.getHumanStartingCards(view.getQuestData()),
|
||||
QuestUtil.getComputerStartingCards(view.getQuestData()),
|
||||
view.getQuestData().getLife(), 20, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* setupChallenge.
|
||||
* </p>
|
||||
*
|
||||
* @param humanDeck
|
||||
* a {@link forge.deck.Deck} object.
|
||||
*/
|
||||
private void setupChallenge(final Deck humanDeck) {
|
||||
int extraLife = 0;
|
||||
|
||||
if (view.getQuestData().getInventory().getItemLevel("Gear") == 2) {
|
||||
extraLife = 3;
|
||||
}
|
||||
|
||||
AllZone.getGameAction().newGame(
|
||||
Constant.Runtime.HUMAN_DECK[0], Constant.Runtime.COMPUTER_DECK[0],
|
||||
QuestUtil.getHumanStartingCards(view.getQuestData(), event),
|
||||
QuestUtil.getHumanStartingCards(view.getQuestData(), event),
|
||||
view.getQuestData().getLife() + extraLife, ((QuestChallenge) event).getAILife(), event);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,9 +31,13 @@ import javax.swing.JButton;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JToggleButton;
|
||||
|
||||
import forge.AllZone;
|
||||
import forge.Constant;
|
||||
import forge.control.ControlAllUI;
|
||||
import forge.quest.data.bazaar.QuestStallManager;
|
||||
import forge.quest.gui.QuestAbstractPanel;
|
||||
import forge.quest.gui.QuestFrame;
|
||||
import forge.view.GuiTopLevel;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -142,7 +146,14 @@ public class QuestBazaarPanel extends QuestAbstractPanel {
|
||||
quitButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
QuestBazaarPanel.this.getMainFrame().showMainPane();
|
||||
if (Constant.Runtime.OLDGUI[0]) {
|
||||
QuestBazaarPanel.this.getMainFrame().showMainPane();
|
||||
}
|
||||
else {
|
||||
ControlAllUI g = ((GuiTopLevel) AllZone.getDisplay()).getController();
|
||||
g.changeState(ControlAllUI.HOME_SCREEN);
|
||||
g.getHomeView().showQuestMenu();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -87,39 +87,39 @@ public class HomeTopLevel extends FPanel {
|
||||
pnlContent.setBackground(skin.getColor("zebra"));
|
||||
pnlContent.setLayout(new MigLayout("insets 0, gap 0"));
|
||||
|
||||
btnDraft = new FButton();
|
||||
btnDraft.setAction(new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent arg0) { draft(); }
|
||||
});
|
||||
btnDraft.setText("Draft (Hard)");
|
||||
|
||||
btnConstructed = new FButton();
|
||||
btnConstructed.setAction(new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent arg0) { constructed(); }
|
||||
public void actionPerformed(ActionEvent arg0) { showConstructedMenu(); }
|
||||
});
|
||||
btnConstructed.setText("Constructed (Easy)");
|
||||
|
||||
btnSealed = new FButton();
|
||||
btnSealed.setAction(new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent arg0) { sealed(); }
|
||||
public void actionPerformed(ActionEvent arg0) { showSealedMenu(); }
|
||||
});
|
||||
btnSealed.setText("Sealed (Medium)");
|
||||
|
||||
btnDraft = new FButton();
|
||||
btnDraft.setAction(new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent arg0) { showDraftMenu(); }
|
||||
});
|
||||
btnDraft.setText("Draft (Hard)");
|
||||
|
||||
btnQuest = new FButton();
|
||||
btnQuest.setAction(new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent arg0) { quest(); }
|
||||
public void actionPerformed(ActionEvent arg0) { showQuestMenu(); }
|
||||
});
|
||||
btnQuest.setText("Quest");
|
||||
|
||||
btnSettings = new FButton();
|
||||
btnSettings.setAction(new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent arg0) { settings(); }
|
||||
public void actionPerformed(ActionEvent arg0) { showSettingsMenu(); }
|
||||
});
|
||||
btnSettings.setText("Settings");
|
||||
|
||||
btnUtilities = new FButton();
|
||||
btnUtilities.setAction(new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent arg0) { utilities(); }
|
||||
public void actionPerformed(ActionEvent arg0) { showUtilitiesMenu(); }
|
||||
});
|
||||
btnUtilities.setText("Utilities");
|
||||
|
||||
@@ -148,11 +148,12 @@ public class HomeTopLevel extends FPanel {
|
||||
pnlMenu.add(btnEditor, constraints);
|
||||
pnlMenu.add(btnExit, constraints);
|
||||
|
||||
// Open "constructed" screen on first run.
|
||||
constructed();
|
||||
// Open "constructed" menu on first run.
|
||||
showConstructedMenu();
|
||||
}
|
||||
|
||||
private void constructed() {
|
||||
/** Opens menu for constructed mode. */
|
||||
public void showConstructedMenu() {
|
||||
clearToggles();
|
||||
btnConstructed.setToggled(true);
|
||||
pnlContent.removeAll();
|
||||
@@ -161,7 +162,8 @@ public class HomeTopLevel extends FPanel {
|
||||
pnlContent.repaint();
|
||||
}
|
||||
|
||||
private void draft() {
|
||||
/** Opens menu for draft mode. */
|
||||
public void showDraftMenu() {
|
||||
clearToggles();
|
||||
btnDraft.setToggled(true);
|
||||
pnlContent.removeAll();
|
||||
@@ -170,7 +172,8 @@ public class HomeTopLevel extends FPanel {
|
||||
pnlContent.repaint();
|
||||
}
|
||||
|
||||
private void sealed() {
|
||||
/** Opens menu for sealed mode. */
|
||||
public void showSealedMenu() {
|
||||
clearToggles();
|
||||
btnSealed.setToggled(true);
|
||||
pnlContent.removeAll();
|
||||
@@ -179,7 +182,8 @@ public class HomeTopLevel extends FPanel {
|
||||
pnlContent.repaint();
|
||||
}
|
||||
|
||||
private void quest() {
|
||||
/** Opens menu for quest mode. */
|
||||
public void showQuestMenu() {
|
||||
clearToggles();
|
||||
btnQuest.setToggled(true);
|
||||
pnlContent.removeAll();
|
||||
@@ -188,7 +192,8 @@ public class HomeTopLevel extends FPanel {
|
||||
pnlContent.repaint();
|
||||
}
|
||||
|
||||
private void settings() {
|
||||
/** Opens menu for settings. */
|
||||
public void showSettingsMenu() {
|
||||
clearToggles();
|
||||
btnSettings.setToggled(true);
|
||||
pnlContent.removeAll();
|
||||
@@ -197,7 +202,8 @@ public class HomeTopLevel extends FPanel {
|
||||
pnlContent.repaint();
|
||||
}
|
||||
|
||||
private void utilities() {
|
||||
/** Opens menu for utilities. */
|
||||
public void showUtilitiesMenu() {
|
||||
clearToggles();
|
||||
btnUtilities.setToggled(true);
|
||||
pnlContent.removeAll();
|
||||
@@ -242,6 +248,6 @@ public class HomeTopLevel extends FPanel {
|
||||
/** */
|
||||
public void resetQuest() {
|
||||
quest = new ViewQuest(this);
|
||||
quest();
|
||||
showQuestMenu();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
package forge.view.home;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Font;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.swing.AbstractAction;
|
||||
import javax.swing.ButtonGroup;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JComboBox;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JRadioButton;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTextArea;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.border.LineBorder;
|
||||
import javax.swing.border.MatteBorder;
|
||||
@@ -25,12 +27,12 @@ import net.miginfocom.swing.MigLayout;
|
||||
import forge.AllZone;
|
||||
import forge.control.home.ControlQuest;
|
||||
import forge.gui.GuiUtils;
|
||||
import forge.gui.MultiLineLabel;
|
||||
import forge.gui.MultiLineLabelUI;
|
||||
import forge.properties.ForgeProps;
|
||||
import forge.properties.NewConstants;
|
||||
import forge.quest.data.QuestData;
|
||||
import forge.quest.data.QuestDataIO;
|
||||
import forge.quest.data.item.QuestItemZeppelin;
|
||||
import forge.quest.data.pet.QuestPetAbstract;
|
||||
import forge.quest.gui.main.QuestChallenge;
|
||||
import forge.quest.gui.main.QuestDuel;
|
||||
import forge.quest.gui.main.QuestEvent;
|
||||
@@ -52,7 +54,9 @@ public class ViewQuest extends JScrollPane {
|
||||
private JList lstDeckChooser;
|
||||
private ControlQuest control;
|
||||
private JRadioButton radEasy, radMedium, radHard, radExpert, radFantasy, radClassic;
|
||||
private JCheckBox cbStandardStart;
|
||||
private JCheckBox cbStandardStart, cbPlant, cbZep;
|
||||
private JComboBox cbxPet;
|
||||
private JLabel lblPlant, lblPet, lblZep;
|
||||
|
||||
/**
|
||||
* Populates Swing components of Quest mode in home screen.
|
||||
@@ -62,24 +66,33 @@ public class ViewQuest extends JScrollPane {
|
||||
public ViewQuest(HomeTopLevel v0) {
|
||||
// Basic init stuff
|
||||
super(VERTICAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||
AllZone.setQuestData(QuestDataIO.loadData());
|
||||
this.setOpaque(false);
|
||||
this.setBorder(null);
|
||||
parentView = v0;
|
||||
skin = AllZone.getSkin();
|
||||
AllZone.setQuestData(QuestDataIO.loadData());
|
||||
questData = AllZone.getQuestData();
|
||||
|
||||
// Panel is dropped into scroll pane for resize safety.
|
||||
viewport = new JPanel();
|
||||
viewport.setOpaque(false);
|
||||
viewport.setLayout(new MigLayout("insets 0, gap 0, wrap"));
|
||||
viewport.setLayout(new MigLayout("insets 0, gap 0, wrap 2"));
|
||||
this.getViewport().setOpaque(false);
|
||||
|
||||
JLabel lblContinue = new JLabel(questData.getRank());
|
||||
JLabel lblContinue = new JLabel(" " + questData.getRank());
|
||||
lblContinue.setOpaque(true);
|
||||
lblContinue.setBorder(new MatteBorder(0, 0, 1, 0, skin.getColor("borders")));
|
||||
lblContinue.setForeground(skin.getColor("text"));
|
||||
lblContinue.setBackground(skin.getColor("theme").darker());
|
||||
lblContinue.setFont(skin.getFont1().deriveFont(Font.BOLD, 20));
|
||||
viewport.add(lblContinue, "w 90%!, gap 5% 0 2% 0");
|
||||
viewport.add(lblContinue, "w 90%!, h 50px!, gap 5% 0 2% 0, span 2");
|
||||
|
||||
JLabel lblStats = new JLabel("Wins: " + questData.getWin()
|
||||
+ " / Losses: " + questData.getLost());
|
||||
lblStats.setForeground(skin.getColor("text"));
|
||||
lblStats.setFont(skin.getFont1().deriveFont(Font.BOLD, 17));
|
||||
lblStats.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
viewport.add(lblStats, "h 35px!, ax center, span 2");
|
||||
|
||||
// Quest events
|
||||
populateQuestEvents();
|
||||
@@ -88,19 +101,7 @@ public class ViewQuest extends JScrollPane {
|
||||
populateQuestOptions();
|
||||
|
||||
// Start button
|
||||
StartButton btnStart = new StartButton(parentView);
|
||||
|
||||
JPanel pnlButtonContainer = new JPanel();
|
||||
pnlButtonContainer.setOpaque(false);
|
||||
|
||||
pnlButtonContainer.setLayout(new BorderLayout());
|
||||
pnlButtonContainer.add(btnStart, SwingConstants.CENTER);
|
||||
viewport.add(pnlButtonContainer, "w 100%!, gapbottom 2%, gaptop 2%");
|
||||
|
||||
btnStart.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) { control.start(); }
|
||||
});
|
||||
populateStartArea();
|
||||
|
||||
// New Quest
|
||||
populateNewQuest();
|
||||
@@ -144,18 +145,29 @@ public class ViewQuest extends JScrollPane {
|
||||
challengesContainer.add(temp, "w 100%, h 70px:70px, gapbottom 5px");
|
||||
}
|
||||
|
||||
if (challenges.size() == 0) {
|
||||
JLabel lblTeaser = new JLabel("(Next challenge available in "
|
||||
+ nextChallengeInWins() + " wins.)");
|
||||
lblTeaser.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
lblTeaser.setForeground(skin.getColor("text"));
|
||||
lblTeaser.setFont(skin.getFont1().deriveFont(Font.BOLD, 16));
|
||||
challengesContainer.add(lblTeaser, "w 100%!, ax center, ay top");
|
||||
}
|
||||
|
||||
JLabel lblDuels = new JLabel("Available Duels");
|
||||
lblDuels.setForeground(skin.getColor("text"));
|
||||
lblDuels.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
lblDuels.setFont(skin.getFont1().deriveFont(Font.ITALIC, 14));
|
||||
|
||||
JLabel lblChallenges = new JLabel("Available Challenges");
|
||||
lblChallenges.setForeground(skin.getColor("text"));
|
||||
lblChallenges.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
lblChallenges.setFont(skin.getFont1().deriveFont(Font.ITALIC, 14));
|
||||
|
||||
viewport.add(lblDuels, "w 90%, gapleft 5%, gapbottom 1%, gaptop 1%");
|
||||
viewport.add(duelsContainer, " w 90%, gapleft 5%, gapbottom 2%");
|
||||
viewport.add(lblChallenges, "w 90%, gapleft 5%, gapbottom 1%");
|
||||
viewport.add(challengesContainer, " w 90%, gapleft 5%, gapbottom 2%");
|
||||
viewport.add(lblDuels, "w 48%, gap 1% 1% 2% 1%");
|
||||
viewport.add(lblChallenges, "w 48%, gap 0 0 2% 1%, wrap");
|
||||
viewport.add(duelsContainer, " w 48%, gap 1% 1% 1% 2%, ay top");
|
||||
viewport.add(challengesContainer, " w 48%, gap 0 0 1% 2%, wrap");
|
||||
|
||||
// Select first event.
|
||||
selectedOpponent = (SelectablePanel) duelsContainer.getComponent(0);
|
||||
@@ -167,6 +179,21 @@ public class ViewQuest extends JScrollPane {
|
||||
JPanel optionsContainer = new JPanel();
|
||||
optionsContainer.setOpaque(false);
|
||||
optionsContainer.setLayout(new MigLayout("insets 0, gap 0"));
|
||||
optionsContainer.setBorder(new MatteBorder(0, 0, 1, 0, skin.getColor("borders")));
|
||||
|
||||
JLabel lblCredits = new JLabel("Credits: " + Long.toString(questData.getCredits()));
|
||||
lblCredits.setIcon(GuiUtils.getResizedIcon(new ImageIcon("res/pics/icons/CoinStack.png"), 26, 26));
|
||||
lblCredits.setForeground(skin.getColor("text"));
|
||||
lblCredits.setIconTextGap(5);
|
||||
lblCredits.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
lblCredits.setFont(skin.getFont1().deriveFont(Font.BOLD, 14));
|
||||
|
||||
JLabel lblLife = new JLabel("Life: " + Long.toString(questData.getLife()));
|
||||
lblLife.setIcon(GuiUtils.getResizedIcon(new ImageIcon("res/pics/icons/Life.png"), 26, 26));
|
||||
lblLife.setForeground(skin.getColor("text"));
|
||||
lblLife.setIconTextGap(5);
|
||||
lblLife.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
lblLife.setFont(skin.getFont1().deriveFont(Font.BOLD, 14));
|
||||
|
||||
SubButton btnEditor = new SubButton("");
|
||||
btnEditor.setAction(new AbstractAction() {
|
||||
@@ -195,38 +222,112 @@ public class ViewQuest extends JScrollPane {
|
||||
});
|
||||
btnBazaar.setText("Bazaar");
|
||||
|
||||
OptionsCheckBox cbPet = new OptionsCheckBox("Summon Pet");
|
||||
OptionsCheckBox cbWall = new OptionsCheckBox("Summon Wall");
|
||||
OptionsCheckBox cbZep = new OptionsCheckBox("Launch Zeppelin");
|
||||
|
||||
lstDeckChooser = new JList();
|
||||
|
||||
optionsContainer.add(btnEditor, "w 30%, h 30px!, gapleft 5%, gapright 5%, gapbottom 5px");
|
||||
optionsContainer.add(cbPet, "w 25%, h 30px!, ax center");
|
||||
optionsContainer.add(btnCardShop, "w 25%, h 30px!, gapleft 5%, wrap");
|
||||
optionsContainer.add(btnEditor, "w 35%, h 30px!, gap 10% 5% 10px 10px");
|
||||
optionsContainer.add(lblCredits, "w 35%!, h 30px!, wrap");
|
||||
|
||||
optionsContainer.add(new JScrollPane(lstDeckChooser), "w 30%, h 60px!, gapleft 5%, gapright 5%, span 1 2");
|
||||
optionsContainer.add(cbWall, "w 25%, h 30px!, ax center, gapbottom 5px, wrap");
|
||||
optionsContainer.add(new JScrollPane(lstDeckChooser), "w 35%, h 110px!, gap 10% 5% 0 10px, span 1 3");
|
||||
optionsContainer.add(lblLife, "w 35%, h 30px!, gap 0 0 0 10px, wrap");
|
||||
|
||||
optionsContainer.add(cbZep, "w 25%, h 30px!");
|
||||
optionsContainer.add(btnBazaar, "w 25%, h 30px!, gapleft 5%, wrap");
|
||||
optionsContainer.add(btnCardShop, "w 35%, h 30px!, gap 0 0 0 10px, wrap");
|
||||
optionsContainer.add(btnBazaar, "w 35%, h 30px!, gap 0 0 0 10px, wrap");
|
||||
|
||||
if (!questData.isFantasy()) {
|
||||
cbPet.setVisible(false);
|
||||
cbWall.setVisible(false);
|
||||
cbZep.setVisible(false);
|
||||
lblLife.setVisible(false);
|
||||
btnBazaar.setVisible(false);
|
||||
}
|
||||
|
||||
viewport.add(optionsContainer, "w 90%, gap 5% 0 1% 1%");
|
||||
viewport.add(optionsContainer, "w 90%, gap 5% 0 1% 1%, span 2 1");
|
||||
}
|
||||
|
||||
private void populateStartArea() {
|
||||
JPanel pnlButtonContainer = new JPanel();
|
||||
pnlButtonContainer.setOpaque(false);
|
||||
pnlButtonContainer.setLayout(new MigLayout("insets 0, gap 0, wrap 2, ax center, hidemode 3"));
|
||||
|
||||
cbxPet = new JComboBox();
|
||||
cbxPet.setFont(skin.getFont1().deriveFont(Font.PLAIN, 14));
|
||||
|
||||
cbPlant = new OptionsCheckBox("Summon Wall");
|
||||
cbZep = new OptionsCheckBox("Launch Zeppelin");
|
||||
|
||||
lblPet = new JLabel(GuiUtils.getResizedIcon(
|
||||
new ImageIcon("res/pics/icons/PetIcon.png"), 30, 30));
|
||||
lblPlant = new JLabel(GuiUtils.getResizedIcon(
|
||||
new ImageIcon("res/pics/icons/PlantIcon.png"), 30, 30));
|
||||
lblZep = new JLabel(GuiUtils.getResizedIcon(
|
||||
new ImageIcon("res/pics/icons/ZeppelinIcon.png"), 30, 30));
|
||||
|
||||
StartButton btnStart = new StartButton(parentView);
|
||||
btnStart.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) { control.start(); }
|
||||
});
|
||||
|
||||
pnlButtonContainer.add(lblPet, "w 30px!, h 30px!, gapright 10px");
|
||||
pnlButtonContainer.add(cbxPet, "w 30%!, h 30px!, gapbottom 10px, wrap");
|
||||
|
||||
pnlButtonContainer.add(lblPlant, "w 30px!, h 30px!, gapright 10px");
|
||||
pnlButtonContainer.add(cbPlant, "w 30%!, h 30px!, gapbottom 10px, wrap");
|
||||
|
||||
pnlButtonContainer.add(lblZep, "w 30px!, h 30px!, gapright 10px");
|
||||
pnlButtonContainer.add(cbZep, "w 30%!, h 30px!, gapbottom 10px, wrap");
|
||||
|
||||
pnlButtonContainer.add(btnStart, "span 2 1");
|
||||
|
||||
viewport.add(pnlButtonContainer, "w 100%!, gapbottom 2%, gaptop 2%, span 2");
|
||||
|
||||
if (this.questData.getMode().equals(QuestData.FANTASY)) {
|
||||
final Set<String> petList = this.questData.getPetManager().getAvailablePetNames();
|
||||
final QuestPetAbstract pet = this.questData.getPetManager().getSelectedPet();
|
||||
|
||||
// Pet list visibility
|
||||
if (petList.size() > 0) {
|
||||
cbxPet.setEnabled(true);
|
||||
cbxPet.addItem("Don't summon a pet");
|
||||
for (final String aPetList : petList) {
|
||||
cbxPet.addItem(aPetList);
|
||||
}
|
||||
|
||||
if (pet != null) { cbxPet.setSelectedItem(pet.getName()); }
|
||||
} else {
|
||||
cbxPet.setVisible(false);
|
||||
lblPet.setVisible(false);
|
||||
}
|
||||
|
||||
// Plant visiblity
|
||||
if (this.questData.getPetManager().getPlant().getLevel() == 0) {
|
||||
cbPlant.setVisible(false);
|
||||
lblPlant.setVisible(false);
|
||||
}
|
||||
else {
|
||||
cbPlant.setSelected(this.questData.getPetManager().shouldPlantBeUsed());
|
||||
}
|
||||
|
||||
// Zeppelin visibility
|
||||
final QuestItemZeppelin zeppelin = (QuestItemZeppelin) this.questData.getInventory().getItem("Zeppelin");
|
||||
cbZep.setVisible(zeppelin.hasBeenUsed());
|
||||
lblZep.setVisible(zeppelin.hasBeenUsed());
|
||||
}
|
||||
else {
|
||||
cbxPet.setVisible(false);
|
||||
lblPet.setVisible(false);
|
||||
cbPlant.setVisible(false);
|
||||
lblPlant.setVisible(false);
|
||||
cbZep.setVisible(false);
|
||||
lblZep.setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void populateNewQuest() {
|
||||
JLabel lblNew = new JLabel("Embark on a new Quest");
|
||||
JLabel lblNew = new JLabel(" Embark on a new Quest");
|
||||
lblNew.setForeground(skin.getColor("text"));
|
||||
lblNew.setBackground(skin.getColor("theme").darker());
|
||||
lblNew.setOpaque(true);
|
||||
lblNew.setBorder(new MatteBorder(1, 0, 1, 0, skin.getColor("borders")));
|
||||
lblNew.setFont(skin.getFont1().deriveFont(Font.BOLD, 16));
|
||||
viewport.add(lblNew, "w 90%!, h 50px!, gap 5% 5% 2%");
|
||||
viewport.add(lblNew, "w 90%!, h 50px!, gap 5% 5% 2%, span 2");
|
||||
|
||||
JLabel lblNotes = new JLabel("<html>"
|
||||
+ "Start a new Quest will delete your current player decks, credits and win loss record."
|
||||
@@ -234,7 +335,7 @@ public class ViewQuest extends JScrollPane {
|
||||
+ "</html>");
|
||||
lblNotes.setFont(skin.getFont1().deriveFont(Font.PLAIN, 14));
|
||||
lblNotes.setForeground(skin.getColor("text"));
|
||||
viewport.add(lblNotes, "w 90%, gapleft 5%");
|
||||
viewport.add(lblNotes, "w 90%, gapleft 5%, span 2");
|
||||
|
||||
radEasy = new OptionsRadio("Easy - 50 games");
|
||||
radMedium = new OptionsRadio("Medium - 100 games");
|
||||
@@ -283,7 +384,7 @@ public class ViewQuest extends JScrollPane {
|
||||
|
||||
optionsContainer.add(btnEmbark, "w 40%!, h 30px!, gapleft 30%, gaptop 3%, span 3 1");
|
||||
|
||||
viewport.add(optionsContainer, "w 100%!, gaptop 2%");
|
||||
viewport.add(optionsContainer, "w 100%!, gaptop 2%, span 2");
|
||||
}
|
||||
|
||||
//========= CUSTOM CLASSES
|
||||
@@ -293,7 +394,21 @@ public class ViewQuest extends JScrollPane {
|
||||
public OptionsRadio(String txt0) {
|
||||
super();
|
||||
setText(txt0);
|
||||
setForeground(skin.getColor("text"));
|
||||
setBackground(skin.getColor("hover"));
|
||||
setOpaque(false);
|
||||
|
||||
this.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
setOpaque(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
setOpaque(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,7 +417,21 @@ public class ViewQuest extends JScrollPane {
|
||||
public OptionsCheckBox(String txt0) {
|
||||
super();
|
||||
setText(txt0);
|
||||
setForeground(skin.getColor("text"));
|
||||
setBackground(skin.getColor("hover"));
|
||||
setOpaque(false);
|
||||
|
||||
this.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
setOpaque(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
setOpaque(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -316,8 +445,42 @@ public class ViewQuest extends JScrollPane {
|
||||
setBorder(new LineBorder(skin.getColor("borders"), 1));
|
||||
setBackground(skin.getColor("inactive"));
|
||||
setLayout(new MigLayout("insets 0, gap 0"));
|
||||
|
||||
this.event = e0;
|
||||
|
||||
final File base = ForgeProps.getFile(NewConstants.IMAGE_ICON);
|
||||
File file = new File(base, event.getIcon());
|
||||
|
||||
if (!file.exists()) {
|
||||
file = new File(base, "Unknown.jpg");
|
||||
}
|
||||
|
||||
JLabel lblIcon = new JLabel(GuiUtils.getResizedIcon(new ImageIcon(file.toString()), 60, 60));
|
||||
lblIcon.setForeground(skin.getColor("text"));
|
||||
this.add(lblIcon, "h 60px!, w 60px!, gap 5px 5px 5px 5px, span 1 2");
|
||||
|
||||
// Name
|
||||
JLabel lblName = new JLabel(event.getTitle() + ": " + event.getDifficulty());
|
||||
lblName.setFont(skin.getFont1().deriveFont(Font.BOLD, 17));
|
||||
lblName.setForeground(skin.getColor("text"));
|
||||
this.add(lblName, "h 20px!, gap 1% 1% 5px 5px, wrap");
|
||||
|
||||
// Description
|
||||
JTextArea tarDesc = new JTextArea();
|
||||
tarDesc.setText(event.getDescription());
|
||||
tarDesc.setFont(skin.getFont1().deriveFont(Font.ITALIC, 12));
|
||||
tarDesc.setForeground(skin.getColor("text"));
|
||||
tarDesc.setOpaque(false);
|
||||
tarDesc.setWrapStyleWord(true);
|
||||
tarDesc.setLineWrap(true);
|
||||
tarDesc.setFocusable(false);
|
||||
tarDesc.setEditable(false);
|
||||
this.add(tarDesc, " h 35px!, w 75%!, gap 1% 0 0 5px");
|
||||
|
||||
this.setToolTipText("<html>" + event.getTitle()
|
||||
+ ": " + event.getDifficulty()
|
||||
+ "<br>" + event.getDescription()
|
||||
+ "</html>");
|
||||
|
||||
this.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent e) {
|
||||
@@ -345,29 +508,7 @@ public class ViewQuest extends JScrollPane {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
final File base = ForgeProps.getFile(NewConstants.IMAGE_ICON);
|
||||
File file = new File(base, event.getIcon());
|
||||
|
||||
if (!file.exists()) {
|
||||
file = new File(base, "Unknown.jpg");
|
||||
}
|
||||
|
||||
JLabel lblIcon = new JLabel(GuiUtils.getResizedIcon(new ImageIcon(file.toString()), 60, 60));
|
||||
lblIcon.setForeground(skin.getColor("text"));
|
||||
this.add(lblIcon, "h 60px!, w 60px!, gap 5px 5px 5px 5px, span 1 2");
|
||||
|
||||
JLabel lblName = new JLabel(event.getTitle() + ": " + event.getDifficulty());
|
||||
lblName.setFont(skin.getFont1().deriveFont(Font.BOLD, 17));
|
||||
lblName.setForeground(skin.getColor("text"));
|
||||
this.add(lblName, "h 20px!, gap 1% 1% 5px 5px, wrap");
|
||||
|
||||
MultiLineLabel lblDesc = new MultiLineLabel(event.getDescription());
|
||||
lblDesc.setFont(skin.getFont1().deriveFont(Font.PLAIN, 12));
|
||||
lblDesc.setForeground(skin.getColor("text"));
|
||||
lblDesc.setUI(MultiLineLabelUI.getLabelUI());
|
||||
this.add(lblDesc, " h 35px!, w 80%!, gap 1% 0 0 5px");
|
||||
}
|
||||
}
|
||||
|
||||
/** @return QuestEvent */
|
||||
public QuestEvent getEvent() {
|
||||
@@ -375,6 +516,38 @@ public class ViewQuest extends JScrollPane {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* nextChallengeInWins.
|
||||
* </p>
|
||||
*
|
||||
* @return a int.
|
||||
*/
|
||||
private int nextChallengeInWins() {
|
||||
final QuestData questData = AllZone.getQuestData();
|
||||
|
||||
// Number of wins was 25, lowereing the number to 20 to help short term
|
||||
// questers.
|
||||
if (questData.getWin() < 20) {
|
||||
return 20 - questData.getWin();
|
||||
}
|
||||
|
||||
// The int mul has been lowered by one, should face special opps more
|
||||
// frequently.
|
||||
final int challengesPlayed = questData.getChallengesPlayed();
|
||||
int mul = 5;
|
||||
|
||||
if (questData.getInventory().hasItem("Zeppelin")) {
|
||||
mul = 3;
|
||||
} else if (questData.getInventory().hasItem("Map")) {
|
||||
mul = 4;
|
||||
}
|
||||
|
||||
final int delta = (challengesPlayed * mul) - questData.getWin();
|
||||
|
||||
return (delta > 0) ? delta : 0;
|
||||
}
|
||||
|
||||
//========= RETRIEVAL FUNCTIONS
|
||||
|
||||
/** @return JList */
|
||||
@@ -431,4 +604,19 @@ public class ViewQuest extends JScrollPane {
|
||||
public ControlQuest getController() {
|
||||
return control;
|
||||
}
|
||||
|
||||
/** @return JComboBox */
|
||||
public JComboBox getPetComboBox() {
|
||||
return cbxPet;
|
||||
}
|
||||
|
||||
/** @return JCheckBox */
|
||||
public JCheckBox getPlantCheckBox() {
|
||||
return cbPlant;
|
||||
}
|
||||
|
||||
/** @return QuestData instance currently in use in this view */
|
||||
public QuestData getQuestData() {
|
||||
return questData;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user