Alrighty... It's turned out to be even more complicated than a colour or two out of sequence in one or two sets, so I've done some digging, and come up with a solution
Basically, the following slightly-more-glaring anomolies exist:
Limited Edition Beta - Badlands is positioned between the green cards and the red cards, and does not appear amongst the other lands
To get around this, and still have the process be automateable, I concocted a small expression language. The ordering of a set is described using a string consisting of square-bracketed clauses, with each clause representing a range of cards. Each clause consists of sub-clauses separated by boolean operators, and contains a type, an operator and a value. here is the most basic form, which applies to most sets:
[C=B][C=U][C=G][C=R][C=W][T%A][T%L]
The first character is the type, and can have a value of:
C = Color
T = Type (Artifact or Land are the only implemented types, since those are the relevant ones for this problem)
N = Name
I = Multiverse ID
The second character is an operator, with the valid values being:
= - Equals
% - Contains
> - Greater than
< - Less than
The third varies according to what the type is:
Type is "C" (Color):
B = Black
U = Blue
G = Green
R = Red
W = White
X = Multicoloured
Type is "T" (Type):
A = Artifact
L = Land
Type is "N" (Name):
Value can be any aribtrary String
Type is "I" (Multiverse ID):
Value is any arbitrary number
More than one Type clause can be included in a range, separated by the following boolean operators:
& - And
| - Or
! - Not
The following example demonstrates that a range should include all cards where Colour is Red, but name is not Crimson Kobolds:
[C=R!N=Crimson Kobolds]
I'll leave implementation up to the reader (mine is very specific to my data structure, although if people are interested I can provide the RegExps I wrote to break it all up). But in case it's useful, here's all the expressions for the un-numbered sets (I'll use set codes rather than names, so I don't have to do a big lookup :P):
For LEA, 2ED, ARN, 5ED, FEM, POR, PO2:
[C=B][C=U][C=G][C=R][C=W][T%A][T%L]
Colour = Black
Colour = Blue
Colour = Green
Colour = Red
Colour = White
Type contains Artefact
Type contains Land
For DRK, MIR, WTH, STH, CHR:
[C=B][C=U][C=G][C=R][C=W][T%A][T%L][C%X]
Colour = Black
Colour = Blue
Colour = Green
Colour = Red
Colour = White
Type contains Artefact
Type contains Land
Colour is Multicoloured (actually more like "Colour contains ','" in my implementation, hence the %)
Any possibility of getting the card numbers used by magiccards.info into the data set? I've noticed that certain card types the numbers don't quite match - Cunning Bandit, for example, is 99 in your data, whereas magiccards.info uses 99a. And of course, the early sets lack a number entirely
Edit - Strike that first bit - that's a fault in my code, not your data.
New feature! The deck builder can now print out proxies for your decks Proxies are based on real card images, but are watermarked, and have a different (and rather vivid) border so they can't be used as counterfeits.
You have the options of either printing all cards in the deck, omitting basic lands (because most of us don't need proxies of basic lands), and of only printing proxies of cards you either don't have or that are being used in other decks.
Minor, under-the-hood change: I've ported all the dialogs on the site over to a new window manager library.
The main difference this makes is being able to open more than one dialog at the same time - it was getting on my nerves that I was occasionally losing my checklist or tag changes when I accidentally clicked a card in the background and replaced the window I was in with the card details window
Couple of bits of feedback, just from the few minutes I've played with it
I love your look and feel - very clean, minimal clutter Auto-complete on the cards in the "Add cards" form is very nice, but it'd be cool to have a way to browse cards as well - you sort of need to already be familiar with the cards in a set to use it at the moment, to get started, which could be a stumbling block for new players. Also, some filters for colour, rarity, type, etc, would help speed up your search widget by reducing the amount of work your query engine has to do
The charts page looks great!
A few tooltips here and there would help - I'm guessing the second number in the quantity indicator is the number you have in your collection (showing that I have 4/0 Zendikar Incarnates in my deck, for example), but that's only from an educated guess. Also, it took me a second to figure out that I had to click the "Add Cards" link to add cards - I thought I was already in that view.
You may want to check with Wizards legal about using their card images and mana symbols before activating payment - use of card images and mana symbols is already a pretty grey area, and they generally only allow it for educational use (which a deck builder could arguably be considered as - at least that's my hope :P). When you start charging, though, all that goes out the window.
First, I was having trouble tracking the cards I'd assembled for an EDH deck, so I added a checklist. You can track the number of copies of a card you've gathered, or just hit the checkbox to indicate that you've got the all, and save the checkist between sessions. I'm still thinking of new things to add to it (eg, tying it into deck activation somehow, adding sorting, etc), but it's a start!
Second, I added an "Advanced" window to the card editor. This will eventually contain a few different things but for now the most significant feature is the ability to define custom tags and add them to your cards. These are shown on the card frames. You can add as man or as few tags to a card as you like Then, to make them a bit more useful for analytics, I added a table to the deck stats panel, and a chart to the stats window:
Hope you all find them useful My next task is updating my indexer to use MTGJSON's new API, so that I can upload FTV:Angels
Thanks for the feedback I haven't had to do much random stuff before, so I hadn't come across that algorithm... It does make things quite a bit simpler
Basically, the following slightly-more-glaring anomolies exist:
I'll leave implementation up to the reader (mine is very specific to my data structure, although if people are interested I can provide the RegExps I wrote to break it all up). But in case it's useful, here's all the expressions for the un-numbered sets (I'll use set codes rather than names, so I don't have to do a big lookup :P):
Sembiance, do you mind having this here, or do you think I should split it off to another thread?
Cool, thanks for your help
Followup question to this - is there a particular internal colour ordering for Gold cards?
Any possibility of getting the card numbers used by magiccards.info into the data set?
I've noticed that certain card types the numbers don't quite match - Cunning Bandit, for example, is 99 in your data, whereas magiccards.info uses 99a.And of course, the early sets lack a number entirelyEdit - Strike that first bit - that's a fault in my code, not your data.
You have the options of either printing all cards in the deck, omitting basic lands (because most of us don't need proxies of basic lands), and of only printing proxies of cards you either don't have or that are being used in other decks.
The main difference this makes is being able to open more than one dialog at the same time - it was getting on my nerves that I was occasionally losing my checklist or tag changes when I accidentally clicked a card in the background and replaced the window I was in with the card details window
I love your look and feel - very clean, minimal clutter Auto-complete on the cards in the "Add cards" form is very nice, but it'd be cool to have a way to browse cards as well - you sort of need to already be familiar with the cards in a set to use it at the moment, to get started, which could be a stumbling block for new players. Also, some filters for colour, rarity, type, etc, would help speed up your search widget by reducing the amount of work your query engine has to do
The charts page looks great!
A few tooltips here and there would help - I'm guessing the second number in the quantity indicator is the number you have in your collection (showing that I have 4/0 Zendikar Incarnates in my deck, for example), but that's only from an educated guess. Also, it took me a second to figure out that I had to click the "Add Cards" link to add cards - I thought I was already in that view.
You may want to check with Wizards legal about using their card images and mana symbols before activating payment - use of card images and mana symbols is already a pretty grey area, and they generally only allow it for educational use (which a deck builder could arguably be considered as - at least that's my hope :P). When you start charging, though, all that goes out the window.
All that aside, it's looking good
I see in the Changelog that you re-added the Variations field... Should that be appearing on all sets? It doesn't seem to be present in FTV: Angels.
Changes have made Legalities a bit easier to parse - thanks
FTV: Angels has been added to the site Remember, friends don't use Iona as their Commander
First, I was having trouble tracking the cards I'd assembled for an EDH deck, so I added a checklist. You can track the number of copies of a card you've gathered, or just hit the checkbox to indicate that you've got the all, and save the checkist between sessions. I'm still thinking of new things to add to it (eg, tying it into deck activation somehow, adding sorting, etc), but it's a start!
Second, I added an "Advanced" window to the card editor. This will eventually contain a few different things but for now the most significant feature is the ability to define custom tags and add them to your cards. These are shown on the card frames. You can add as man or as few tags to a card as you like Then, to make them a bit more useful for analytics, I added a table to the deck stats panel, and a chart to the stats window:
Hope you all find them useful My next task is updating my indexer to use MTGJSON's new API, so that I can upload FTV:Angels