X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Classes%2FNJMappingsController.m;h=44a9c43e1eb2819e20f050350d9b8de4434907ad;hp=8f0492cc7d88d3ac00c5aac8e7132f1e37e35849;hb=6a7c78afa7b8a34901f59a79afe41d18855734bc;hpb=4a8e67a7294e8e527e2be9d8f5f39aae60691697 diff --git a/Classes/NJMappingsController.m b/Classes/NJMappingsController.m index 8f0492c..44a9c43 100644 --- a/Classes/NJMappingsController.m +++ b/Classes/NJMappingsController.m @@ -11,8 +11,6 @@ #import "NJOutput.h" #import "NJEvents.h" -#define PB_ROW @"com.yukkurigames.Enjoyable.MappingRow" - @implementation NJMappingsController { NSMutableArray *_mappings; NJMapping *_manualMapping; @@ -87,20 +85,24 @@ _manualMapping = oldMapping; } +- (void)activateMappingForcibly:(NJMapping *)mapping { + NSLog(@"Switching to mapping %@.", mapping.name); + _currentMapping = mapping; + NSUInteger idx = [self indexOfMapping:_currentMapping]; + [NSNotificationCenter.defaultCenter + postNotificationName:NJEventMappingChanged + object:self + userInfo:@{ NJMappingKey : _currentMapping, + NJMappingIndexKey: @(idx) }]; +} + - (void)activateMapping:(NJMapping *)mapping { if (!mapping) mapping = _manualMapping; if (mapping == _currentMapping) return; - NSLog(@"Switching to mapping %@.", mapping.name); _manualMapping = mapping; - _currentMapping = mapping; - NSUInteger idx = [_mappings indexOfObjectIdenticalTo:_currentMapping]; - [NSNotificationCenter.defaultCenter - postNotificationName:NJEventMappingChanged - object:self - userInfo:@{ NJMappingKey : _currentMapping, - NJMappingIndexKey: @(idx) }]; + [self activateMappingForcibly:mapping]; } - (void)save { @@ -121,11 +123,9 @@ NSArray *storedMappings = [NSUserDefaults.standardUserDefaults arrayForKey:@"mappings"]; NSMutableArray* newMappings = [[NSMutableArray alloc] initWithCapacity:storedMappings.count]; - for (unsigned i = 0; i < storedMappings.count; ++i) { - NJMapping *mapping = [[NJMapping alloc] initWithSerialization:storedMappings[i]]; - [newMappings addObject:mapping]; - } - + for (NSDictionary *serialization in storedMappings) + [newMappings addObject: + [[NJMapping alloc] initWithSerialization:serialization]]; if (newMappings.count) { _mappings = newMappings; @@ -143,25 +143,15 @@ - (void)mergeMapping:(NJMapping *)mapping intoMapping:(NJMapping *)existing { [existing mergeEntriesFrom:mapping]; [self mappingsChanged]; - if (existing == _currentMapping) { - // FIXME: Hack to trigger updates in the rest of the UI. - _currentMapping = nil; - NJMapping *manual = _manualMapping; - [self activateMapping:existing]; - _manualMapping = manual; - } + if (existing == _currentMapping) + [self activateMappingForcibly:mapping]; } - (void)renameMapping:(NJMapping *)mapping to:(NSString *)name { mapping.name = name; - if (mapping == _currentMapping) { - // FIXME: Hack to trigger updates in the rest of the UI. - _currentMapping = nil; - NJMapping *manual = _manualMapping; - [self activateMapping:mapping]; - _manualMapping = manual; - } [self mappingsChanged]; + if (mapping == _currentMapping) + [self activateMappingForcibly:mapping]; } - (void)addMapping:(NJMapping *)mapping {