Replace hacky target stringification with structured serialization.
[enjoyable.git] / TargetMouseBtn.m
index 7429874..28fe536 100644 (file)
 
 @synthesize which;
 
--(NSString*) stringify {
-       return [[NSString alloc] initWithFormat: @"mbtn~%u", which];
++ (NSString *)serializationCode {
+    return @"mbtn";
 }
 
-+(TargetMouseBtn*) unstringifyImpl: (NSArray*) comps {
-       NSParameterAssert([comps count] == 2);
-       TargetMouseBtn* target = [[TargetMouseBtn alloc] init];
-       [target setWhich: [[comps objectAtIndex:1] integerValue]];
+- (NSDictionary *)serialize {
+    return @{ @"type": @"mbtn", @"which": @(self.which) };
+}
+
++ (Target *)targetDeserialize:(NSDictionary *)serialization
+                  withConfigs:(NSArray *)configs {
+       TargetMouseBtn *target = [[TargetMouseBtn alloc] init];
+    target.which = [serialization[@"which"] intValue];
        return target;
 }
 
--(void) trigger: (JoystickController *)jc {
+-(void) trigger {
     NSRect screenRect = [[NSScreen mainScreen] frame];
     NSInteger height = screenRect.size.height;
     NSPoint mouseLoc = [NSEvent mouseLocation];
@@ -36,7 +40,7 @@
     CFRelease(click);
 }
 
--(void) untrigger: (JoystickController *)jc {
+-(void) untrigger {
     NSRect screenRect = [[NSScreen mainScreen] frame];
     NSInteger height = screenRect.size.height;
     NSPoint mouseLoc = [NSEvent mouseLocation];