There are multiple ways we could search through the card image titles to compare. There needs to be multiple kinds.
There should be a generic interface for handling this searching.
interface ICardMatcher {
Match[] GetMatches(CardLibrary library, string filename);
}
A CardLibrary basically is a json structure with an array of sets, with an array of cards, with an array of properties.
A Match includes a specific card from the CardLibrary, as well as a percentage of confidence(undefined if the method doesn't include such a thing).
In the application, all the ICardMatcher's will be arranged in order of usefulness. For example, it makes much more sense to have a GuidCardMatcher come before a FuzzyTextSearchCardMatcher.
If a GetMatches returns 1 item, with 100% confidence, it will stop and return that result. If there are previous results from other matchers, it will also include those, ordered by confidence.
There are multiple ways we could search through the card image titles to compare. There needs to be multiple kinds.
There should be a generic interface for handling this searching.
A
CardLibrarybasically is a json structure with an array of sets, with an array of cards, with an array of properties.A
Matchincludes a specific card from theCardLibrary, as well as a percentage of confidence(undefinedif the method doesn't include such a thing).In the application, all the ICardMatcher's will be arranged in order of usefulness. For example, it makes much more sense to have a GuidCardMatcher come before a FuzzyTextSearchCardMatcher.
If a GetMatches returns 1 item, with 100% confidence, it will stop and return that result. If there are previous results from other matchers, it will also include those, ordered by confidence.