Deck editor enabled in home screen.

Also, decks can now be directly edited in constructed mode sub menu.
This commit is contained in:
Doublestrike
2011-12-14 11:03:41 +00:00
parent e3fb596d04
commit cb6e87ce3f
5 changed files with 83 additions and 27 deletions

1
.gitattributes vendored
View File

@@ -10758,6 +10758,7 @@ 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/TriggerUntaps.java svneol=native#text/plain
src/main/java/forge/card/trigger/package-info.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/ControlAllUI.java -text
src/main/java/forge/control/ControlHomeUI.java -text
src/main/java/forge/control/ControlMatchUI.java -text src/main/java/forge/control/ControlMatchUI.java -text
src/main/java/forge/control/ControlWinLose.java -text src/main/java/forge/control/ControlWinLose.java -text
src/main/java/forge/control/home/ControlConstructed.java -text src/main/java/forge/control/home/ControlConstructed.java -text

View File

@@ -0,0 +1,48 @@
package forge.control;
import forge.Command;
import forge.deck.Deck;
import forge.game.GameType;
import forge.gui.deckeditor.DeckEditorCommon;
import forge.view.home.HomeTopLevel;
/**
* TODO: Write javadoc for this type.
*
*/
public class ControlHomeUI {
private HomeTopLevel view;
/** @param v0   HomeTopLevel */
public ControlHomeUI(HomeTopLevel v0) {
view = v0;
}
/** @param d0   Deck*/
public void showDeckEditor(Deck d0) {
GameType gt = GameType.Constructed;
DeckEditorCommon editor = new DeckEditorCommon(gt);
final Command exit = new Command() {
private static final long serialVersionUID = -9133358399503226853L;
@Override
public void execute() {
view.getConstructedController().updateDeckNames();
}
};
editor.show(exit);
if (d0 != null) {
editor.getCustomMenu().showDeck(d0, gt);
}
editor.setVisible(true);
}
/** */
public void exit() {
System.exit(0);
}
}

View File

@@ -55,6 +55,7 @@ public class ControlConstructed {
this.view = v0; this.view = v0;
// Reference values for colors, needed for deck generation classes. // Reference values for colors, needed for deck generation classes.
// TODO enum me or get from another enum
colorVals = new HashMap<String, String>(); colorVals = new HashMap<String, String>();
colorVals.put("Random", "AI"); colorVals.put("Random", "AI");
colorVals.put("Black", "black"); colorVals.put("Black", "black");
@@ -410,7 +411,7 @@ public class ControlConstructed {
} }
/** Fired when start button is pressed; checks various conditions from lists and starts game. */ /** Fired when start button is pressed; checks various conditions from lists and starts game. */
public void launch() { public void start() {
String[] humanSelected = oa2sa(currentHumanSelection.getSelectedValues()); String[] humanSelected = oa2sa(currentHumanSelection.getSelectedValues());
String[] aiSelected = oa2sa(currentAISelection.getSelectedValues()); String[] aiSelected = oa2sa(currentAISelection.getSelectedValues());
@@ -466,12 +467,8 @@ public class ControlConstructed {
return themeNames.toArray(); return themeNames.toArray();
} }
/** /** */
* Array of pre-constructed deck names, usually used in list boxes. public void updateDeckNames() {
*
* @return Object[]
*/
public Object[] getDeckNames() {
deckNames = new ArrayList<String>(); deckNames = new ArrayList<String>();
deckNames.add(0, "Random"); deckNames.add(0, "Random");
@@ -483,7 +480,8 @@ public class ControlConstructed {
// No pre-constructed decks? // No pre-constructed decks?
if (deckNames.size() == 1) { deckNames = new ArrayList<String>(); } if (deckNames.size() == 1) { deckNames = new ArrayList<String>(); }
return deckNames.toArray(); view.getLstDecksHuman().setListData(deckNames.toArray());
view.getLstDecksAI().setListData(deckNames.toArray());
} }
/** /**

View File

@@ -28,6 +28,8 @@ import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import forge.AllZone; import forge.AllZone;
import forge.control.ControlHomeUI;
import forge.control.home.ControlConstructed;
import forge.control.home.ControlDraft; import forge.control.home.ControlDraft;
import forge.view.toolbox.FButton; import forge.view.toolbox.FButton;
import forge.view.toolbox.FPanel; import forge.view.toolbox.FPanel;
@@ -47,6 +49,7 @@ public class HomeTopLevel extends FPanel {
private FSkin skin; private FSkin skin;
private String constraints; private String constraints;
private String imgDirAddress; private String imgDirAddress;
private ControlHomeUI control;
private ViewConstructed constructed; private ViewConstructed constructed;
private ViewSealed sealed; private ViewSealed sealed;
@@ -126,13 +129,13 @@ public class HomeTopLevel extends FPanel {
btnEditor = new FButton(); btnEditor = new FButton();
btnEditor.setAction(new AbstractAction() { btnEditor.setAction(new AbstractAction() {
public void actionPerformed(ActionEvent arg0) { showDeckEditor(); } public void actionPerformed(ActionEvent arg0) { control.showDeckEditor(null); }
}); });
btnEditor.setText("Deck Editor"); btnEditor.setText("Deck Editor");
btnExit = new FButton(); btnExit = new FButton();
btnExit.setAction(new AbstractAction() { btnExit.setAction(new AbstractAction() {
public void actionPerformed(ActionEvent arg0) { exit(); } public void actionPerformed(ActionEvent arg0) { control.exit(); }
}); });
btnExit.setText("Exit"); btnExit.setText("Exit");
@@ -152,6 +155,8 @@ public class HomeTopLevel extends FPanel {
pnlMenu.add(btnEditor, constraints); pnlMenu.add(btnEditor, constraints);
pnlMenu.add(btnExit, constraints); pnlMenu.add(btnExit, constraints);
control = new ControlHomeUI(this);
// Open "constructed" menu on first run. // Open "constructed" menu on first run.
showConstructedMenu(); showConstructedMenu();
} }
@@ -216,14 +221,6 @@ public class HomeTopLevel extends FPanel {
pnlContent.repaint(); pnlContent.repaint();
} }
public void showDeckEditor() {
}
private void exit() {
System.exit(0);
}
/** @return String */ /** @return String */
public String getImgDirAddress() { public String getImgDirAddress() {
return imgDirAddress; return imgDirAddress;
@@ -244,6 +241,11 @@ public class HomeTopLevel extends FPanel {
return new ImageIcon(imgDirAddress + "btnStart_Up.png"); return new ImageIcon(imgDirAddress + "btnStart_Up.png");
} }
/** @return ControlConstructed */
public ControlConstructed getConstructedController() {
return constructed.getController();
}
/** @return ControlDraft */ /** @return ControlDraft */
public ControlDraft getDraftController() { public ControlDraft getDraftController() {
return draft.getController(); return draft.getController();
@@ -263,4 +265,9 @@ public class HomeTopLevel extends FPanel {
quest = new ViewQuest(this); quest = new ViewQuest(this);
showQuestMenu(); showQuestMenu();
} }
/** @return ControlHomeUI */
public ControlHomeUI getController() {
return control;
}
} }

View File

@@ -19,6 +19,7 @@ import javax.swing.Timer;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import forge.AllZone; import forge.AllZone;
import forge.control.home.ControlConstructed; import forge.control.home.ControlConstructed;
import forge.deck.Deck;
import forge.view.toolbox.FSkin; import forge.view.toolbox.FSkin;
/** /**
@@ -52,7 +53,6 @@ public class ViewConstructed extends JPanel {
skin = AllZone.getSkin(); skin = AllZone.getSkin();
control = new ControlConstructed(this); control = new ControlConstructed(this);
// Assemble JLists with arrays from above.
lstColorsHuman = new JList(); lstColorsHuman = new JList();
lstColorsHuman.setListData(control.oa2sa(control.getColorNames())); lstColorsHuman.setListData(control.oa2sa(control.getColorNames()));
@@ -60,10 +60,7 @@ public class ViewConstructed extends JPanel {
lstColorsAI.setListData(control.oa2sa(control.getColorNames())); lstColorsAI.setListData(control.oa2sa(control.getColorNames()));
lstDecksHuman = new JList(); lstDecksHuman = new JList();
lstDecksHuman.setListData(control.oa2sa(control.getDeckNames()));
lstDecksAI = new JList(); lstDecksAI = new JList();
lstDecksAI.setListData(control.oa2sa(control.getDeckNames()));
lstThemesHuman = new JList(); lstThemesHuman = new JList();
lstThemesHuman.setListData(control.oa2sa(control.getThemeNames())); lstThemesHuman.setListData(control.oa2sa(control.getThemeNames()));
@@ -81,12 +78,14 @@ public class ViewConstructed extends JPanel {
btnHumanDeckList = new SubButton(); btnHumanDeckList = new SubButton();
btnHumanDeckList.setAction(new AbstractAction() { btnHumanDeckList.setAction(new AbstractAction() {
public void actionPerformed(ActionEvent arg0) { public void actionPerformed(ActionEvent arg0) {
ViewConstructed.this.control.viewDeckList("Human"); String s = lstDecksHuman.getSelectedValue().toString();
Deck d = AllZone.getDeckManager().getDeck(s);
parentView.getController().showDeckEditor(d);
} }
}); });
btnHumanDeckList.setFont(skin.getFont1().deriveFont(Font.PLAIN, 13)); btnHumanDeckList.setFont(skin.getFont1().deriveFont(Font.PLAIN, 13));
btnHumanDeckList.setText("View selected deck"); btnHumanDeckList.setText("Edit selected deck");
btnHumanDeckList.setVerticalTextPosition(SwingConstants.CENTER); btnHumanDeckList.setVerticalTextPosition(SwingConstants.CENTER);
// Add components // Add components
@@ -108,11 +107,13 @@ public class ViewConstructed extends JPanel {
btnAIDeckList = new SubButton(); btnAIDeckList = new SubButton();
btnAIDeckList.setAction(new AbstractAction() { btnAIDeckList.setAction(new AbstractAction() {
public void actionPerformed(ActionEvent arg0) { public void actionPerformed(ActionEvent arg0) {
ViewConstructed.this.control.viewDeckList("Computer"); String s = lstDecksAI.getSelectedValue().toString();
Deck d = AllZone.getDeckManager().getDeck(s);
parentView.getController().showDeckEditor(d);
} }
}); });
btnAIDeckList.setFont(skin.getFont1().deriveFont(Font.PLAIN, 13)); btnAIDeckList.setFont(skin.getFont1().deriveFont(Font.PLAIN, 13));
btnAIDeckList.setText("View selected deck"); btnAIDeckList.setText("Edit selected deck");
// Add components // Add components
this.add(new JScrollPane(lstColorsAI), constraints + ", gapleft 3%"); this.add(new JScrollPane(lstColorsAI), constraints + ", gapleft 3%");
@@ -141,7 +142,7 @@ public class ViewConstructed extends JPanel {
JButton btnStart = new JButton(); JButton btnStart = new JButton();
btnStart.setAction(new AbstractAction() { btnStart.setAction(new AbstractAction() {
@Override @Override
public void actionPerformed(ActionEvent arg0) { control.launch(); } public void actionPerformed(ActionEvent arg0) { control.start(); }
}); });
btnStart.setRolloverEnabled(true); btnStart.setRolloverEnabled(true);
btnStart.setPressedIcon(parentView.getStartButtonDown()); btnStart.setPressedIcon(parentView.getStartButtonDown());
@@ -162,6 +163,7 @@ public class ViewConstructed extends JPanel {
// When all components have been added, add listeners. // When all components have been added, add listeners.
control.addListeners(); control.addListeners();
control.updateDeckNames();
} }
// For some reason, MigLayout has sizing problems with a JLabel next to a JList. // For some reason, MigLayout has sizing problems with a JLabel next to a JList.