Script for generating existing cards for a specific set.

This commit is contained in:
North 2011-07-11 21:26:55 +03:00
parent 965a047c28
commit 614a8098ef
4 changed files with 284 additions and 0 deletions

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets.[=$set=];
import java.util.UUID;
/**
*
* @author North
*/
public class [=$className=] extends mage.sets.[=$baseSet=].[=$baseClassName=] {
public [=$className=](UUID ownerId) {
super(ownerId);
this.cardNumber = [=$cardNumber=];
this.expansionSetCode = "[=$expansionSetCode=]";
}
public [=$className=](final [=$className=] card) {
super(card);
}
@Override
public [=$className=] copy() {
return new [=$className=](this);
}
}

View file

@ -0,0 +1,103 @@
#!/usr/bin/perl -w
use Text::Template;
use strict;
my $dataFile = "mtg-cards-data.txt";
my $setsFile = "mtg-sets-data.txt";
my $knownSetsFile = "known-sets.txt";
my %cards;
my %sets;
my %knownSets;
my @setCards;
print "Enter a set name: ";
my $setName = <STDIN>;
chomp $setName;
my $template = Text::Template->new(SOURCE => 'cardExtendedClass.tmpl', DELIMITERS => [ '[=', '=]' ]);
sub getClassName {
my $string = $_[0];
$string =~ s/\b(\w+)\b/ucfirst($1)/ge;
$string =~ s/[, ]//g;
$string;
}
sub getOldClassName {
my $string = $_[0];
$string =~ s/[, ]//g;
$string;
}
open (DATA, $dataFile) || die "can't open $dataFile";
while(my $line = <DATA>) {
my @cardData = split('\\|', $line);
$cards{$cardData[1]}{$cardData[2]} = \@cardData;
if ($cardData[2] eq $setName) {
push(@setCards, $cardData[1]);
}
}
close(DATA);
open (DATA, $setsFile) || die "can't open $setsFile";
while(my $line = <DATA>) {
my @setData = split('\\|', $line);
$sets{$setData[0]}= \@setData;
}
close(DATA);
open (DATA, $knownSetsFile) || die "can't open $knownSetsFile";
while(my $line = <DATA>) {
my @setData = split('\\|', $line);
$knownSets{$setData[0]}= $setData[2];
}
close(DATA);
my %vars;
$vars{'set'} = $knownSets{$setName};
$vars{'expansionSetCode'} = $sets{$setName}[1];
foreach my $cardName (@setCards) {
my $className = getClassName($cardName);
my $currentFileName = "../Mage.Sets/src/mage/sets/" . $knownSets{$setName} . "/" . $className . ".java";
if(! -e $currentFileName) {
$vars{'className'} = $className;
$vars{'cardNumber'} = $cards{$cardName}{$setName}[5];
my $found = 0;
foreach my $key (keys %{$cards{$cardName}}) {
if (exists $knownSets{$key} && $found eq 0) {
my $fileName = "../Mage.Sets/src/mage/sets/" . $knownSets{$key} . "/" . $className . ".java";
if(-e $fileName) {
open (DATA, $fileName);
while(my $line = <DATA>) {
if ($line =~ /extends CardImpl<(\w+?)>/) {
$vars{'baseClassName'} = $1;
$vars{'baseSet'} = $knownSets{$key};
$found = 1;
}
}
close(DATA);
}
}
}
if($found eq 1) {
#print $vars{'set'} . "|" . $vars{'baseSet'} . "|" . $vars{'className'} . "|" . $vars{'baseClassName'} . "|" . $vars{'expansionSetCode'} . "\n";
my $result = $template->fill_in(HASH => \%vars);
if (defined($result)) {
#print $result;
open CARD, "> $currentFileName";
print CARD $result;
close CARD;
}
}
}
}

24
Utils/known-sets.txt Normal file
View file

@ -0,0 +1,24 @@
Alara Reborn|ARB|alarareborn|
Apocalypse|APC|apocalypse|
Conflux|CON|conflux|
Darksteel|DST|darksteel|
Eventide|EVE|eventide|
Magic 2010|M10|magic2010|
Magic 2011|M11|magic2011|
Magic 2012|M12|magic2012|
Planechase|HOP|planechase|
Ravnica: City of Guilds|RAV|ravnika|
Rise of the Eldrazi|ROE|riseoftheeldrazi|
Shards of Alara|ALA|shardsofalara|
Tenth Edition|10E|tenth|
Worldwake|WWK|worldwake|
Zendikar|ZEN|zendikar|
Scars of Mirrodin|SOM|scarsofmirrodin|
Guildpact|GPT|guildpact|
Dissension|DIS|dissension|
Mirrodin|MRD|mirrodin|
Duel Decks: Elspeth vs. Tezzeret|DDF|elspethvstezzeret|
Mirrodin Besieged|MBS|mirrodinbesieged|
New Phyrexia|NPH|newphyrexia|
Tempest|TMP|tempest|
Champions of Kamigawa|CHK|championsofkamigawa|

105
Utils/mtg-sets-data.txt Normal file
View file

@ -0,0 +1,105 @@
Tenth Edition|10E|
Unlimited Edition|2ED|
Revised Edition|3ED|
Fourth Edition|4ED|
Fifth Dawn|5DN|
Fifth Edition|5ED|
Classic Sixth Edition|6ED|
Seventh Edition|7ED|
Eighth Edition|8ED|
Alliances|ALL|
Apocalypse|APC|
Alara Reborn|ARB|
Arabian Nights|ARN|
Anthologies|ATH|
Antiquities|ATQ|
Betrayers of Kamigawa|BOK|
Battle Royale Box Set|BRB|
Beatdown Box Set|BTD|
Champions of Kamigawa|CHK|
Chronicles|CHR|
Conflux|CON|
Coldsnap|CSP|
Darksteel|DST|
Dissension|DIS|
Deckmasters|DKM|
The Dark|DRK|
Duel Decks: Divine vs. Demonic|DVD|
Duel Decks: Elves vs. Goblins|EVG|
Duel Decks: Garruk vs. Liliana|GVL|
Duel Decks: Jace vs. Chandra|JVC|
Duel Decks: Phyrexia vs. the Coalition|PVC|
Eventide|EVE|
Exodus|EXO|
Fallen Empires|FEM|
Future Sight|FUT|
From the Vault: Dragons|FVD|
From the Vault: Exiled|FVE|
Guildpact|GPT|
Homelands|HML|
Planechase|HOP|
Ice Age|ICE|
Invasion|INV|
Judgment|JUD|
Limited Edition Alpha|LEA|
Limited Edition Beta|LEB|
Legends|LEG|
Legions|LGN|
Lorwyn|LRW|
Magic 2010|M10|
Magic 2011|M11|
Magic 2012|M12|
Masters Edition II|ME2|
Masters Edition III|ME3|
Masters Edition IV|ME4|
Masters Edition|MED|
Mirage|MIR|
Mercadian Masques|MMQ|
Morningtide|MOR|
Mirrodin|MRD|
Ninth Edition|9ED|
Nemesis|NEM|
Odyssey|ODY|
Onslaught|ONS|
Portal Second Age|PO2|
Prophecy|PCY|
Planar Chaos|PLC|
Planeshift|PLS|
Portal|POR|
Portal Three Kingdoms|PTK|
Premium Deck Series: Fire and Lightning|PD2|
Premium Deck Series: Slivers|PDS|
Ravnica: City of Guilds|RAV|
Rise of the Eldrazi|ROE|
Starter 2000|S00|
Starter 1999|S99|
Scourge|SCG|
Shadowmoor|SHM|
Shards of Alara|ALA|
Saviors of Kamigawa|SOK|
Stronghold|STH|
Tempest|TMP|
Torment|TOR|
Time Spiral "Timeshifted"|TSB|
Time Spiral|TSP|
Urza's Destiny|UDS|
Unglued|UGL|
Urza's Legacy|ULG|
Unhinged|UNH|
Urza's Saga|USG|
Vanguard Set 1|VG1|
Vanguard Set 2|VG2|
Vanguard Set 3|VG3|
Vanguard Set 4|VG4|
MTGO Vanguard|VGO|
Visions|VIS|
Weatherlight|WTH|
Worldwake|WWK|
Zendikar|ZEN|
Archenemy|ARC|
Scars of Mirrodin|SOM|
From the Vault: Relics|FVR|
Duel Decks: Elspeth vs. Tezzeret|DDF|
Mirrodin Besieged|MBS|
New Phyrexia|NPH|
Magic: The Gathering-Commander|CMD|