// // CardInfo.m // Browser1 // // Created by Yann Disser on 18.4.2008. // Copyright 2008 __MyCompanyName__. All rights reserved. // #import "CardInfo.h" #import "IKBBrowserItem.h" static NSMutableArray* sortCriteria; @implementation CardInfo -(CardInfo*)init { NSLog(@"simple init called"); return self; } -(CardInfo*)initWithTokens:(NSArray*)tokens path:(NSString*)p { [super init]; NSArray* keys = [NSArray arrayWithObjects: @"number", @"name", @"type", @"p/t", @"cost", @"color", @"rarity", @"edition", @"artist", @"rules", nil]; NSMutableArray* obj = [NSMutableArray arrayWithArray:[tokens subarrayWithRange:NSMakeRange(0,9)]]; int i; NSString* rules = @""; for(i = 9; i < [tokens count]; ++i) rules = [[rules stringByAppendingString:@"\n"] stringByAppendingString:[tokens objectAtIndex:i]]; [obj addObject:rules]; fields = [NSDictionary dictionaryWithObjects:obj forKeys:keys]; NSString* file = [[p stringByAppendingString:[obj objectAtIndex:0]] stringByAppendingString:@".jpg"]; NSImage* img = [[NSImage alloc] initByReferencingFile:file]; image = [[IKBBrowserItem alloc] initWithImage:img imageID:file]; //NSLog(@"survive shit"); //[fields objectForKey:@"name"]; return self; } -(IKBBrowserItem*) getImage { return image; } -(NSString*) getField:(NSString*)field { return [fields objectForKey:field]; } -(id) getTypedField:(NSString*)field { NSString* f = [self getField:field]; if([field isEqual:@"number"]) return [NSNumber numberWithInt:[f intValue]]; if([field isEqual:@"cost"]) return [NSNumber numberWithInt:([f intValue] + [f length])]; if([field isEqual:@"rarity"]) { f = [f stringByReplacingOccurrencesOfString:@"R" withString:@"A"]; f = [f stringByReplacingOccurrencesOfString:@"U" withString:@"B"]; f = [f stringByReplacingOccurrencesOfString:@"C" withString:@"C"]; f = [f stringByReplacingOccurrencesOfString:@"L" withString:@"D"]; } if([field isEqual:@"color"]) { f = [f stringByReplacingOccurrencesOfString:@"White" withString:@"A"]; f = [f stringByReplacingOccurrencesOfString:@"Blue" withString:@"B"]; f = [f stringByReplacingOccurrencesOfString:@"Black" withString:@"C"]; f = [f stringByReplacingOccurrencesOfString:@"Red" withString:@"D"]; f = [f stringByReplacingOccurrencesOfString:@"Green" withString:@"E"]; f = [f stringByReplacingOccurrencesOfString:@"Multicolor" withString:@"F"]; f = [f stringByReplacingOccurrencesOfString:@"Artifact" withString:@"G"]; f = [f stringByReplacingOccurrencesOfString:@"Land" withString:@"H"]; } return f; //@"p/t" } -(NSComparisonResult)compare:(CardInfo*)other { //crash //[self getField:@"name"]; [fields objectForKey:@"name"]; NSLog(@"kickin"); if(sortCriteria == nil) sortCriteria = [[NSMutableArray alloc] initWithObjects: @"number", @"name", @"cost", @"type", @"rarity", nil]; int i; for(i = 0; i < [sortCriteria count]; ++i) { NSString* crit = [sortCriteria objectAtIndex:i]; NSComparisonResult res = [[self getTypedField:crit] compare:[other getTypedField:crit]]; if(res != NSOrderedSame) return res; } return NSOrderedSame; } +(void) changeSortCriterion:(NSString*)crit { if(sortCriteria == nil) sortCriteria = [[NSMutableArray alloc] initWithObjects: @"number", @"name", @"cost", @"type", @"rarity", nil]; [sortCriteria removeObjectIdenticalTo:crit]; if([sortCriteria count] == 4) [sortCriteria insertObject:crit atIndex:0]; } @end