Replace hacky target stringification with structured serialization.
[enjoyable.git] / JoystickController.m
index 8b350a4..864a917 100644 (file)
@@ -7,6 +7,14 @@
 
 #import "JoystickController.h"
 
+#import "ApplicationController.h"
+#import "Config.h"
+#import "ConfigsController.h"
+#import "Joystick.h"
+#import "JSAction.h"
+#import "Target.h"
+#import "TargetController.h"
+
 @implementation JoystickController {
     IOHIDManagerRef hidManager;
     BOOL programmaticallySelecting;
@@ -62,7 +70,7 @@ static void input_callback(void *ctx, IOReturn inResult, void *inSender, IOHIDVa
         [mainAction notifyEvent:value];
         NSArray *children = mainAction.children ? mainAction.children : mainAction ? @[mainAction] : @[];
         for (JSAction *subaction in children) {
-            Target *target = [controller.currentConfig getTargetForAction:subaction];
+            Target *target = controller.currentConfig[subaction];
             target.magnitude = mainAction.magnitude;
             target.running = subaction.active;
             if (target.running && target.isContinuous)
@@ -82,7 +90,7 @@ static void input_callback(void *ctx, IOReturn inResult, void *inSender, IOHIDVa
 }
 
 static int findAvailableIndex(NSArray *list, Joystick *js) {
-    for (int index = 0; ; index++) {
+    for (int index = 1; ; index++) {
         BOOL available = YES;
         for (Joystick *used in list) {
             if ([used.productName isEqualToString:js.productName] && used.index == index) {