Formal protocol for the interface shared between Joysticks and JSActions, use new...
[enjoyable.git] / TargetConfig.m
1 //
2 // TargetConfig.m
3 // Enjoy
4 //
5 // Created by Sam McCall on 6/05/09.
6 //
7
8 #import "TargetConfig.h"
9
10 #import "ApplicationController.h"
11 #import "Config.h"
12 #import "ConfigsController.h"
13
14 @implementation TargetConfig
15
16 + (NSString *)serializationCode {
17 return @"cfg";
18 }
19
20 - (NSDictionary *)serialize {
21 return _config
22 ? @{ @"type": @"cfg", @"name": _config.name }
23 : nil;
24 }
25
26 + (TargetConfig *)targetDeserialize:(NSDictionary *)serialization
27 withConfigs:(NSArray *)configs {
28 NSString *name = serialization[@"name"];
29 TargetConfig *target = [[TargetConfig alloc] init];
30 for (Config *config in configs) {
31 if ([config.name isEqualToString:name]) {
32 target.config = config;
33 return target;
34 }
35 }
36 return nil;
37 }
38
39 - (void)trigger {
40 ApplicationController *ctrl = NSApplication.sharedApplication.delegate;
41 [ctrl.configsController activateConfig:_config];
42 }
43
44 @end