X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Classes%2FNJMappingsController.m;fp=Classes%2FNJMappingsController.m;h=9c7b641e848ab9e7eec9b7d611a4d89670272afe;hp=4859970fc63ff07b81788bf655978ec33d63f019;hb=24bdb92798b9abe86c7954042a47523791736b7c;hpb=a3d6f991d110dcccb70e137f43cbafc60f7ecee7 diff --git a/Classes/NJMappingsController.m b/Classes/NJMappingsController.m index 4859970..9c7b641 100644 --- a/Classes/NJMappingsController.m +++ b/Classes/NJMappingsController.m @@ -42,6 +42,7 @@ } - (void)mappingsSet { + [self postLoadProcess]; [NSNotificationCenter.defaultCenter postNotificationName:NJEventMappingListChanged object:self @@ -111,26 +112,22 @@ [NSUserDefaults.standardUserDefaults setObject:ary forKey:@"mappings"]; } +- (void)postLoadProcess { + for (NJMapping *mapping in self) + [mapping postLoadProcess:self]; +} + - (void)load { NSUInteger selected = [NSUserDefaults.standardUserDefaults integerForKey:@"selected"]; NSArray *storedMappings = [NSUserDefaults.standardUserDefaults arrayForKey:@"mappings"]; NSMutableArray* newMappings = [[NSMutableArray alloc] initWithCapacity:storedMappings.count]; - // Requires two passes to deal with inter-mapping references. First make - // an empty mapping for each serialized mapping. Then, deserialize the - // data pointing to the empty mappings. Then merge that data back into - // its equivalent empty one, which is the one we finally use. - for (NSDictionary *storedMapping in storedMappings) { - NJMapping *mapping = [[NJMapping alloc] initWithName:storedMapping[@"name"]]; - [newMappings addObject:mapping]; - } - for (unsigned i = 0; i < storedMappings.count; ++i) { - NJMapping *realMapping = [[NJMapping alloc] initWithSerialization:storedMappings[i] - mappings:newMappings]; - [newMappings[i] mergeEntriesFrom:realMapping]; + NJMapping *mapping = [[NJMapping alloc] initWithSerialization:storedMappings[i]]; + [newMappings addObject:mapping]; } + if (newMappings.count) { _mappings = newMappings; if (selected >= newMappings.count) @@ -256,7 +253,6 @@ atIndex:(NSInteger)index error:(NSError **)error { NJMapping *mapping = [NJMapping mappingWithContentsOfURL:url - mappings:_mappings error:error]; [self addOrMergeMapping:mapping atIndex:index]; return !!mapping;