X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Classes%2FNJOutputMapping.m;h=efb7c003425763057388695a82901f6bc8b30a9a;hp=28a84aba0d1b53897c3b3371edb4fb4bf0b8f539;hb=24bdb92798b9abe86c7954042a47523791736b7c;hpb=b14d8429658dd6f3f7b4904301031addb502b22c diff --git a/Classes/NJOutputMapping.m b/Classes/NJOutputMapping.m index 28a84ab..efb7c00 100644 --- a/Classes/NJOutputMapping.m +++ b/Classes/NJOutputMapping.m @@ -18,27 +18,39 @@ } - (NSDictionary *)serialize { - return _mapping - ? @{ @"type": self.class.serializationCode, @"name": _mapping.name } + NSString *name = _mapping ? _mapping.name : self.mappingName; + return name + ? @{ @"type": self.class.serializationCode, @"name": name } : nil; } -+ (NJOutputMapping *)outputDeserialize:(NSDictionary *)serialization - withMappings:(id )mappings { ++ (NJOutputMapping *)outputDeserialize:(NSDictionary *)serialization { NSString *name = serialization[@"name"]; NJOutputMapping *output = [[NJOutputMapping alloc] init]; - for (NJMapping *mapping in mappings) { - if ([mapping.name isEqualToString:name]) { - output.mapping = mapping; - return output; - } - } - return nil; + output.mappingName = name; + return name ? output : nil; } - (void)trigger { EnjoyableApplicationDelegate *ctrl = (EnjoyableApplicationDelegate *)NSApplication.sharedApplication.delegate; - [ctrl.mappingsController activateMapping:_mapping]; + if (_mapping) { + [ctrl.mappingsController activateMapping:_mapping]; + self.mappingName = _mapping.name; + } else { + // TODO: Show an error message? Unobtrusively since something + // is probably running. + } +} + +- (void)postLoadProcess:(id )allMappings { + if (!self.mapping) { + for (NJMapping *mapping in allMappings) { + if ([mapping.name isEqualToString:self.mappingName]) { + self.mapping = mapping; + break; + } + } + } } @end