mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
bugfix that allows to import older .deck files, before Deck changed to forge.Deck
This commit is contained in:
@@ -14,7 +14,6 @@ import java.util.Map;
|
|||||||
|
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
import forge.Deck;
|
|
||||||
import forge.DeckIO;
|
import forge.DeckIO;
|
||||||
import forge.NewDeckIO;
|
import forge.NewDeckIO;
|
||||||
import forge.properties.ForgeProps;
|
import forge.properties.ForgeProps;
|
||||||
@@ -46,8 +45,8 @@ public class DeckConverter {
|
|||||||
System.out.println("migrating deck file...");
|
System.out.println("migrating deck file...");
|
||||||
|
|
||||||
DeckIO odio = new OldDeckIO(oldDecks);
|
DeckIO odio = new OldDeckIO(oldDecks);
|
||||||
List<Deck> deckList = new ArrayList<Deck>(Arrays.asList(odio.getDecks()));
|
List<forge.Deck> deckList = new ArrayList<forge.Deck>(Arrays.asList(odio.getDecks()));
|
||||||
Map<String, Deck[]> boosterMap = odio.getBoosterDecks();
|
Map<String, forge.Deck[]> boosterMap = odio.getBoosterDecks();
|
||||||
System.out.println("Decks found:");
|
System.out.println("Decks found:");
|
||||||
System.out.printf("\t%d normal decks%n", deckList.size());
|
System.out.printf("\t%d normal decks%n", deckList.size());
|
||||||
System.out.printf("\t%d booster decks%n", boosterMap.size());
|
System.out.printf("\t%d booster decks%n", boosterMap.size());
|
||||||
@@ -64,4 +63,29 @@ public class DeckConverter {
|
|||||||
|
|
||||||
JOptionPane.showMessageDialog(null, "Your deck file was successfully migrated!");
|
JOptionPane.showMessageDialog(null, "Your deck file was successfully migrated!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static Object toForgeDeck(Object o) {
|
||||||
|
if(o instanceof forge.Deck) {
|
||||||
|
//a single new-type deck
|
||||||
|
return o;
|
||||||
|
} else if(o instanceof forge.Deck[]) {
|
||||||
|
//a new-type booster deck
|
||||||
|
Deck d = (Deck) o;
|
||||||
|
return d.migrate();
|
||||||
|
} else if(o instanceof Deck) {
|
||||||
|
// an old type deck
|
||||||
|
Deck d = (Deck) o;
|
||||||
|
return d.migrate();
|
||||||
|
} else if(o instanceof Deck[]) {
|
||||||
|
Deck[] d = (Deck[]) o;
|
||||||
|
forge.Deck[] result = new forge.Deck[d.length];
|
||||||
|
for(int i = 0; i < d.length; i++) {
|
||||||
|
result[i] = d[i].migrate();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
} else throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -438,6 +438,12 @@ public class Gui_DeckEditor_Menu extends JMenuBar implements NewConstants {
|
|||||||
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
|
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
|
||||||
check = in.readObject();
|
check = in.readObject();
|
||||||
|
|
||||||
|
//deck migration - this is a little hard to read, because i can't just plainly reference a class in the
|
||||||
|
//default package
|
||||||
|
Class<?> deckConverterClass = Class.forName("DeckConverter");
|
||||||
|
//invoke public static Object toForgeDeck(Object o) of DeckConverter
|
||||||
|
check = deckConverterClass.getDeclaredMethod("toForgeDeck", Object.class).invoke(null, check);
|
||||||
|
|
||||||
in.close();
|
in.close();
|
||||||
} catch(Exception ex) {
|
} catch(Exception ex) {
|
||||||
ErrorViewer.showError(ex);
|
ErrorViewer.showError(ex);
|
||||||
|
|||||||
@@ -28,23 +28,23 @@ import forge.error.ErrorViewer;
|
|||||||
|
|
||||||
//presumes AllZone.QuestData is not null
|
//presumes AllZone.QuestData is not null
|
||||||
public class Gui_Quest_DeckEditor_Menu extends JMenuBar {
|
public class Gui_Quest_DeckEditor_Menu extends JMenuBar {
|
||||||
private static final long serialVersionUID = -4052319220021158574L;
|
private static final long serialVersionUID = -4052319220021158574L;
|
||||||
|
|
||||||
//this should be false in the public version
|
//this should be false in the public version
|
||||||
//if true, the Quest Deck editor will let you edit the computer's decks
|
//if true, the Quest Deck editor will let you edit the computer's decks
|
||||||
private final boolean canEditComputerDecks;
|
private final boolean canEditComputerDecks;
|
||||||
|
|
||||||
private static final String deckEditorName = "Deck Editor";
|
private static final String deckEditorName = "Deck Editor";
|
||||||
|
|
||||||
//used for import and export, try to made the gui user friendly
|
//used for import and export, try to made the gui user friendly
|
||||||
private static File previousDirectory = null;
|
private static File previousDirectory = null;
|
||||||
|
|
||||||
private Command exitCommand;
|
private Command exitCommand;
|
||||||
private QuestData questData;
|
private QuestData questData;
|
||||||
private Deck currentDeck;
|
private Deck currentDeck;
|
||||||
|
|
||||||
//the class DeckDisplay is in the file "Gui_DeckEditor_Menu.java"
|
//the class DeckDisplay is in the file "Gui_DeckEditor_Menu.java"
|
||||||
private DeckDisplay deckDisplay;
|
private DeckDisplay deckDisplay;
|
||||||
|
|
||||||
|
|
||||||
public Gui_Quest_DeckEditor_Menu(DeckDisplay d, Command exit) {
|
public Gui_Quest_DeckEditor_Menu(DeckDisplay d, Command exit) {
|
||||||
@@ -68,152 +68,150 @@ public class Gui_Quest_DeckEditor_Menu extends JMenuBar {
|
|||||||
if(canEditComputerDecks) setupComputerMenu();
|
if(canEditComputerDecks) setupComputerMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupFilterMenu(){
|
private void setupFilterMenu() {
|
||||||
JMenuItem filter = new JMenuItem("New filter");
|
JMenuItem filter = new JMenuItem("New filter");
|
||||||
JMenuItem clearfilter = new JMenuItem("Clear filter");
|
JMenuItem clearfilter = new JMenuItem("Clear filter");
|
||||||
JMenu menu = new JMenu("Filter");
|
JMenu menu = new JMenu("Filter");
|
||||||
menu.add(filter);
|
menu.add(filter);
|
||||||
menu.add(clearfilter);
|
menu.add(clearfilter);
|
||||||
this.add(menu);
|
this.add(menu);
|
||||||
|
|
||||||
filter.addActionListener(new ActionListener() {
|
filter.addActionListener(new ActionListener() {
|
||||||
public void actionPerformed(ActionEvent ev) {
|
public void actionPerformed(ActionEvent ev) {
|
||||||
Gui_Quest_DeckEditor g = (Gui_Quest_DeckEditor) deckDisplay;
|
Gui_Quest_DeckEditor g = (Gui_Quest_DeckEditor) deckDisplay;
|
||||||
if(g.stCardList==null){
|
if(g.stCardList == null) {
|
||||||
g.blackCheckBox.setSelected(true);
|
g.blackCheckBox.setSelected(true);
|
||||||
g.blackCheckBox.setEnabled(true);
|
g.blackCheckBox.setEnabled(true);
|
||||||
g.blueCheckBox.setSelected(true);
|
g.blueCheckBox.setSelected(true);
|
||||||
g.blueCheckBox.setEnabled(true);
|
g.blueCheckBox.setEnabled(true);
|
||||||
g.greenCheckBox.setSelected(true);
|
g.greenCheckBox.setSelected(true);
|
||||||
g.greenCheckBox.setEnabled(true);
|
g.greenCheckBox.setEnabled(true);
|
||||||
g.redCheckBox.setSelected(true);
|
g.redCheckBox.setSelected(true);
|
||||||
g.redCheckBox.setEnabled(true);
|
g.redCheckBox.setEnabled(true);
|
||||||
g.whiteCheckBox.setSelected(true);
|
g.whiteCheckBox.setSelected(true);
|
||||||
g.whiteCheckBox.setEnabled(true);
|
g.whiteCheckBox.setEnabled(true);
|
||||||
g.colorlessCheckBox.setSelected(true);
|
g.colorlessCheckBox.setSelected(true);
|
||||||
g.colorlessCheckBox.setEnabled(true);
|
g.colorlessCheckBox.setEnabled(true);
|
||||||
g.artifactCheckBox.setSelected(true);
|
g.artifactCheckBox.setSelected(true);
|
||||||
g.artifactCheckBox.setEnabled(true);
|
g.artifactCheckBox.setEnabled(true);
|
||||||
g.creatureCheckBox.setSelected(true);
|
g.creatureCheckBox.setSelected(true);
|
||||||
g.creatureCheckBox.setEnabled(true);
|
g.creatureCheckBox.setEnabled(true);
|
||||||
g.enchantmentCheckBox.setSelected(true);
|
g.enchantmentCheckBox.setSelected(true);
|
||||||
g.enchantmentCheckBox.setEnabled(true);
|
g.enchantmentCheckBox.setEnabled(true);
|
||||||
g.instantCheckBox.setSelected(true);
|
g.instantCheckBox.setSelected(true);
|
||||||
g.instantCheckBox.setEnabled(true);
|
g.instantCheckBox.setEnabled(true);
|
||||||
g.landCheckBox.setSelected(true);
|
g.landCheckBox.setSelected(true);
|
||||||
g.landCheckBox.setEnabled(true);
|
g.landCheckBox.setEnabled(true);
|
||||||
g.planeswalkerCheckBox.setSelected(true);
|
g.planeswalkerCheckBox.setSelected(true);
|
||||||
g.planeswalkerCheckBox.setEnabled(true);
|
g.planeswalkerCheckBox.setEnabled(true);
|
||||||
g.sorceryCheckBox.setSelected(true);
|
g.sorceryCheckBox.setSelected(true);
|
||||||
g.sorceryCheckBox.setEnabled(true);
|
g.sorceryCheckBox.setEnabled(true);
|
||||||
g.stCardList = g.getTop();
|
g.stCardList = g.getTop();
|
||||||
GUI_Quest_Filter filt = new GUI_Quest_Filter(g, deckDisplay);
|
GUI_Quest_Filter filt = new GUI_Quest_Filter(g, deckDisplay);
|
||||||
g.setEnabled(false);
|
g.setEnabled(false);
|
||||||
g.filterUsed=true;
|
g.filterUsed = true;
|
||||||
filt.setVisible(true);
|
filt.setVisible(true);
|
||||||
}else
|
} else {
|
||||||
{
|
g.blackCheckBox.setSelected(true);
|
||||||
g.blackCheckBox.setSelected(true);
|
g.blackCheckBox.setEnabled(true);
|
||||||
g.blackCheckBox.setEnabled(true);
|
g.blueCheckBox.setSelected(true);
|
||||||
g.blueCheckBox.setSelected(true);
|
g.blueCheckBox.setEnabled(true);
|
||||||
g.blueCheckBox.setEnabled(true);
|
g.greenCheckBox.setSelected(true);
|
||||||
g.greenCheckBox.setSelected(true);
|
g.greenCheckBox.setEnabled(true);
|
||||||
g.greenCheckBox.setEnabled(true);
|
g.redCheckBox.setSelected(true);
|
||||||
g.redCheckBox.setSelected(true);
|
g.redCheckBox.setEnabled(true);
|
||||||
g.redCheckBox.setEnabled(true);
|
g.whiteCheckBox.setSelected(true);
|
||||||
g.whiteCheckBox.setSelected(true);
|
g.whiteCheckBox.setEnabled(true);
|
||||||
g.whiteCheckBox.setEnabled(true);
|
g.colorlessCheckBox.setSelected(true);
|
||||||
g.colorlessCheckBox.setSelected(true);
|
g.colorlessCheckBox.setEnabled(true);
|
||||||
g.colorlessCheckBox.setEnabled(true);
|
g.artifactCheckBox.setSelected(true);
|
||||||
g.artifactCheckBox.setSelected(true);
|
g.artifactCheckBox.setEnabled(true);
|
||||||
g.artifactCheckBox.setEnabled(true);
|
g.creatureCheckBox.setSelected(true);
|
||||||
g.creatureCheckBox.setSelected(true);
|
g.creatureCheckBox.setEnabled(true);
|
||||||
g.creatureCheckBox.setEnabled(true);
|
g.enchantmentCheckBox.setSelected(true);
|
||||||
g.enchantmentCheckBox.setSelected(true);
|
g.enchantmentCheckBox.setEnabled(true);
|
||||||
g.enchantmentCheckBox.setEnabled(true);
|
g.instantCheckBox.setSelected(true);
|
||||||
g.instantCheckBox.setSelected(true);
|
g.instantCheckBox.setEnabled(true);
|
||||||
g.instantCheckBox.setEnabled(true);
|
g.landCheckBox.setSelected(true);
|
||||||
g.landCheckBox.setSelected(true);
|
g.landCheckBox.setEnabled(true);
|
||||||
g.landCheckBox.setEnabled(true);
|
g.planeswalkerCheckBox.setSelected(true);
|
||||||
g.planeswalkerCheckBox.setSelected(true);
|
g.planeswalkerCheckBox.setEnabled(true);
|
||||||
g.planeswalkerCheckBox.setEnabled(true);
|
g.sorceryCheckBox.setSelected(true);
|
||||||
g.sorceryCheckBox.setSelected(true);
|
g.sorceryCheckBox.setEnabled(true);
|
||||||
g.sorceryCheckBox.setEnabled(true);
|
GUI_Quest_Filter filt = new GUI_Quest_Filter(g, deckDisplay);
|
||||||
GUI_Quest_Filter filt = new GUI_Quest_Filter(g, deckDisplay);
|
g.filterUsed = true;
|
||||||
g.filterUsed=true;
|
g.setEnabled(false);
|
||||||
g.setEnabled(false);
|
filt.setVisible(true);
|
||||||
filt.setVisible(true);
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
clearfilter.addActionListener(new ActionListener() {
|
||||||
clearfilter.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent ev) {
|
||||||
public void actionPerformed(ActionEvent ev) {
|
|
||||||
|
Gui_Quest_DeckEditor g = (Gui_Quest_DeckEditor) deckDisplay;
|
||||||
Gui_Quest_DeckEditor g = (Gui_Quest_DeckEditor) deckDisplay;
|
if(g.stCardList == null) {
|
||||||
if(g.stCardList==null){
|
g.blackCheckBox.setSelected(true);
|
||||||
g.blackCheckBox.setSelected(true);
|
g.blackCheckBox.setEnabled(true);
|
||||||
g.blackCheckBox.setEnabled(true);
|
g.blueCheckBox.setSelected(true);
|
||||||
g.blueCheckBox.setSelected(true);
|
g.blueCheckBox.setEnabled(true);
|
||||||
g.blueCheckBox.setEnabled(true);
|
g.greenCheckBox.setSelected(true);
|
||||||
g.greenCheckBox.setSelected(true);
|
g.greenCheckBox.setEnabled(true);
|
||||||
g.greenCheckBox.setEnabled(true);
|
g.redCheckBox.setSelected(true);
|
||||||
g.redCheckBox.setSelected(true);
|
g.redCheckBox.setEnabled(true);
|
||||||
g.redCheckBox.setEnabled(true);
|
g.whiteCheckBox.setSelected(true);
|
||||||
g.whiteCheckBox.setSelected(true);
|
g.whiteCheckBox.setEnabled(true);
|
||||||
g.whiteCheckBox.setEnabled(true);
|
g.colorlessCheckBox.setSelected(true);
|
||||||
g.colorlessCheckBox.setSelected(true);
|
g.colorlessCheckBox.setEnabled(true);
|
||||||
g.colorlessCheckBox.setEnabled(true);
|
g.artifactCheckBox.setSelected(true);
|
||||||
g.artifactCheckBox.setSelected(true);
|
g.artifactCheckBox.setEnabled(true);
|
||||||
g.artifactCheckBox.setEnabled(true);
|
g.creatureCheckBox.setSelected(true);
|
||||||
g.creatureCheckBox.setSelected(true);
|
g.creatureCheckBox.setEnabled(true);
|
||||||
g.creatureCheckBox.setEnabled(true);
|
g.enchantmentCheckBox.setSelected(true);
|
||||||
g.enchantmentCheckBox.setSelected(true);
|
g.enchantmentCheckBox.setEnabled(true);
|
||||||
g.enchantmentCheckBox.setEnabled(true);
|
g.instantCheckBox.setSelected(true);
|
||||||
g.instantCheckBox.setSelected(true);
|
g.instantCheckBox.setEnabled(true);
|
||||||
g.instantCheckBox.setEnabled(true);
|
g.landCheckBox.setSelected(true);
|
||||||
g.landCheckBox.setSelected(true);
|
g.landCheckBox.setEnabled(true);
|
||||||
g.landCheckBox.setEnabled(true);
|
g.planeswalkerCheckBox.setSelected(true);
|
||||||
g.planeswalkerCheckBox.setSelected(true);
|
g.planeswalkerCheckBox.setEnabled(true);
|
||||||
g.planeswalkerCheckBox.setEnabled(true);
|
g.sorceryCheckBox.setSelected(true);
|
||||||
g.sorceryCheckBox.setSelected(true);
|
g.sorceryCheckBox.setEnabled(true);
|
||||||
g.sorceryCheckBox.setEnabled(true);
|
g.filterUsed = false;
|
||||||
g.filterUsed=false;
|
} else {
|
||||||
}else{
|
g.blackCheckBox.setSelected(true);
|
||||||
g.blackCheckBox.setSelected(true);
|
g.blackCheckBox.setEnabled(true);
|
||||||
g.blackCheckBox.setEnabled(true);
|
g.blueCheckBox.setSelected(true);
|
||||||
g.blueCheckBox.setSelected(true);
|
g.blueCheckBox.setEnabled(true);
|
||||||
g.blueCheckBox.setEnabled(true);
|
g.greenCheckBox.setSelected(true);
|
||||||
g.greenCheckBox.setSelected(true);
|
g.greenCheckBox.setEnabled(true);
|
||||||
g.greenCheckBox.setEnabled(true);
|
g.redCheckBox.setSelected(true);
|
||||||
g.redCheckBox.setSelected(true);
|
g.redCheckBox.setEnabled(true);
|
||||||
g.redCheckBox.setEnabled(true);
|
g.whiteCheckBox.setSelected(true);
|
||||||
g.whiteCheckBox.setSelected(true);
|
g.whiteCheckBox.setEnabled(true);
|
||||||
g.whiteCheckBox.setEnabled(true);
|
g.colorlessCheckBox.setSelected(true);
|
||||||
g.colorlessCheckBox.setSelected(true);
|
g.colorlessCheckBox.setEnabled(true);
|
||||||
g.colorlessCheckBox.setEnabled(true);
|
g.artifactCheckBox.setSelected(true);
|
||||||
g.artifactCheckBox.setSelected(true);
|
g.artifactCheckBox.setEnabled(true);
|
||||||
g.artifactCheckBox.setEnabled(true);
|
g.creatureCheckBox.setSelected(true);
|
||||||
g.creatureCheckBox.setSelected(true);
|
g.creatureCheckBox.setEnabled(true);
|
||||||
g.creatureCheckBox.setEnabled(true);
|
g.enchantmentCheckBox.setSelected(true);
|
||||||
g.enchantmentCheckBox.setSelected(true);
|
g.enchantmentCheckBox.setEnabled(true);
|
||||||
g.enchantmentCheckBox.setEnabled(true);
|
g.instantCheckBox.setSelected(true);
|
||||||
g.instantCheckBox.setSelected(true);
|
g.instantCheckBox.setEnabled(true);
|
||||||
g.instantCheckBox.setEnabled(true);
|
g.landCheckBox.setSelected(true);
|
||||||
g.landCheckBox.setSelected(true);
|
g.landCheckBox.setEnabled(true);
|
||||||
g.landCheckBox.setEnabled(true);
|
g.planeswalkerCheckBox.setSelected(true);
|
||||||
g.planeswalkerCheckBox.setSelected(true);
|
g.planeswalkerCheckBox.setEnabled(true);
|
||||||
g.planeswalkerCheckBox.setEnabled(true);
|
g.sorceryCheckBox.setSelected(true);
|
||||||
g.sorceryCheckBox.setSelected(true);
|
g.sorceryCheckBox.setEnabled(true);
|
||||||
g.sorceryCheckBox.setEnabled(true);
|
g.filterUsed = false;
|
||||||
g.filterUsed=false;
|
deckDisplay.updateDisplay(g.stCardList, deckDisplay.getBottom());
|
||||||
deckDisplay.updateDisplay(g.stCardList, deckDisplay.getBottom()) ;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -417,6 +415,12 @@ public class Gui_Quest_DeckEditor_Menu extends JMenuBar {
|
|||||||
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
|
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
|
||||||
check = in.readObject();
|
check = in.readObject();
|
||||||
|
|
||||||
|
//deck migration - this is a little hard to read, because i can't just plainly reference a class in the
|
||||||
|
//default package
|
||||||
|
Class<?> deckConverterClass = Class.forName("DeckConverter");
|
||||||
|
//invoke public static Object toForgeDeck(Object o) of DeckConverter
|
||||||
|
check = deckConverterClass.getDeclaredMethod("toForgeDeck", Object.class).invoke(null, check);
|
||||||
|
|
||||||
in.close();
|
in.close();
|
||||||
} catch(Exception ex) {
|
} catch(Exception ex) {
|
||||||
ErrorViewer.showError(ex);
|
ErrorViewer.showError(ex);
|
||||||
@@ -424,6 +428,7 @@ public class Gui_Quest_DeckEditor_Menu extends JMenuBar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Deck deck = (Deck) check;
|
Deck deck = (Deck) check;
|
||||||
|
|
||||||
deckDisplay.setTitle(deckEditorName + " - " + deck.getName());
|
deckDisplay.setTitle(deckEditorName + " - " + deck.getName());
|
||||||
|
|
||||||
CardList cardpool;
|
CardList cardpool;
|
||||||
|
|||||||
Reference in New Issue
Block a user