Clean up JoystickController. Modernize more Objective-C syntax. Remove direct public...
[enjoyable.git] / TargetMouseBtn.m
index 5137f2b..172f740 100644 (file)
 @synthesize which;
 
 -(NSString*) stringify {
-       return [[NSString alloc] initWithFormat: @"mbtn~%d", which];
+       return [[NSString alloc] initWithFormat: @"mbtn~%u", which];
 }
 
 +(TargetMouseBtn*) unstringifyImpl: (NSArray*) comps {
        NSParameterAssert([comps count] == 2);
        TargetMouseBtn* target = [[TargetMouseBtn alloc] init];
-       [target setWhich: [[comps objectAtIndex:1] integerValue]];
+       [target setWhich: [comps[1] integerValue]];
        return target;
 }
 
--(void) trigger {
+-(void) trigger: (JoystickController *)jc {
+    NSRect screenRect = [[NSScreen mainScreen] frame];
+    NSInteger height = screenRect.size.height;
     NSPoint mouseLoc = [NSEvent mouseLocation];
     CGEventType eventType = (which == kCGMouseButtonLeft) ? kCGEventLeftMouseDown : kCGEventRightMouseDown;
     CGEventRef click = CGEventCreateMouseEvent(NULL,
                                                eventType,
-                                               CGPointMake(mouseLoc.x, mouseLoc.y),
+                                               CGPointMake(mouseLoc.x, height - mouseLoc.y),
                                                which);
     CGEventPost(kCGHIDEventTap, click);
     CFRelease(click);
 }
 
--(void) untrigger {
+-(void) untrigger: (JoystickController *)jc {
+    NSRect screenRect = [[NSScreen mainScreen] frame];
+    NSInteger height = screenRect.size.height;
     NSPoint mouseLoc = [NSEvent mouseLocation];
     CGEventType eventType = (which == kCGMouseButtonLeft) ? kCGEventLeftMouseUp : kCGEventRightMouseUp;
     CGEventRef click = CGEventCreateMouseEvent(NULL,
                                                eventType,
-                                               CGPointMake(mouseLoc.x, mouseLoc.y),
+                                               CGPointMake(mouseLoc.x, height - mouseLoc.y),
                                                which);
     CGEventPost(kCGHIDEventTap, click);
     CFRelease(click);