mirror of
https://github.com/magefree/mage.git
synced 2025-12-29 23:12:10 -08:00
deck format change
This commit is contained in:
parent
3cb1c2bf15
commit
ba8532ea86
18 changed files with 127 additions and 51 deletions
|
|
@ -28,11 +28,20 @@
|
|||
|
||||
package mage.sets;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Scanner;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.ExpansionSet;
|
||||
import mage.cards.decks.DeckCardLists;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -89,4 +98,91 @@ public class Sets extends HashMap<String, ExpansionSet> {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static DeckCardLists loadDeck(String file) throws FileNotFoundException {
|
||||
DeckCardLists deckList = new DeckCardLists();
|
||||
|
||||
File f = new File(file);
|
||||
Scanner scanner = new Scanner(f);
|
||||
Pattern pattern = Pattern.compile("(SB:)?\\s*(\\d*)\\s*\\[([a-zA-Z0-9]{3}):(\\d*)\\].*");
|
||||
try {
|
||||
while (scanner.hasNextLine()) {
|
||||
String line = scanner.nextLine().trim();
|
||||
if (line.startsWith("#")) continue;
|
||||
Matcher m = pattern.matcher(line);
|
||||
if (m.matches()) {
|
||||
boolean sideboard = false;
|
||||
if (m.group(1) != null && m.group(1).equals("SB:"))
|
||||
sideboard = true;
|
||||
int count = Integer.parseInt(m.group(2));
|
||||
String setCode = m.group(3);
|
||||
int cardNum = Integer.parseInt(m.group(4));
|
||||
ExpansionSet set = Sets.findSet(setCode);
|
||||
String card = set.findCard(cardNum);
|
||||
for (int i = 0; i < count; i++) {
|
||||
if (!sideboard) {
|
||||
deckList.getCards().add(card);
|
||||
}
|
||||
else {
|
||||
deckList.getSideboard().add(card);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (line.startsWith("NAME:")) {
|
||||
deckList.setName(line.substring(5, line.length()));
|
||||
}
|
||||
else if (line.startsWith("AUTHOR:")) {
|
||||
deckList.setAuthor(line.substring(7, line.length()));
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
scanner.close();
|
||||
}
|
||||
|
||||
return deckList;
|
||||
}
|
||||
|
||||
public static void saveDeck(String file, DeckCardLists deck) throws FileNotFoundException {
|
||||
PrintWriter out = new PrintWriter(file);
|
||||
Map<String, Integer> cards = new HashMap<String, Integer>();
|
||||
Map<String, Integer> sideboard = new HashMap<String, Integer>();
|
||||
try {
|
||||
if (deck.getName() != null && deck.getName().length() > 0)
|
||||
out.println("NAME:" + deck.getName());
|
||||
if (deck.getAuthor() != null && deck.getAuthor().length() > 0)
|
||||
out.println("AUTHOR:" + deck.getAuthor());
|
||||
for (String cardClass: deck.getCards()) {
|
||||
if (cards.containsKey(cardClass)) {
|
||||
cards.put(cardClass, cards.get(cardClass) + 1);
|
||||
}
|
||||
else {
|
||||
cards.put(cardClass, 1);
|
||||
}
|
||||
}
|
||||
for (String cardClass: deck.getSideboard()) {
|
||||
if (sideboard.containsKey(cardClass)) {
|
||||
sideboard.put(cardClass, sideboard.get(cardClass) + 1);
|
||||
}
|
||||
else {
|
||||
sideboard.put(cardClass, 1);
|
||||
}
|
||||
}
|
||||
for (Map.Entry<String, Integer> entry: cards.entrySet()) {
|
||||
Card card = CardImpl.createCard(entry.getKey());
|
||||
if (card != null) {
|
||||
out.printf("%d [%s:%d] %s%n", entry.getValue(), card.getExpansionSetCode(), card.getCardNumber(), card.getName());
|
||||
}
|
||||
}
|
||||
for (Map.Entry<String, Integer> entry: sideboard.entrySet()) {
|
||||
Card card = CardImpl.createCard(entry.getKey());
|
||||
if (card != null) {
|
||||
out.printf("SB: %d [%s:%d] %s%n", entry.getValue(), card.getExpansionSetCode(), card.getCardNumber(), card.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
out.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue