X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Joystick.m;h=7870ce0589ec6e6a44f0d54790726eb0bf664d0b;hp=a65304e304b84a434a06dd31fa64a830e9d34fdb;hb=dd1f684886c2809133356bb9b335a35293e8849e;hpb=e68c19b5923618b763543c74bf8dd6f85d4d323e diff --git a/Joystick.m b/Joystick.m index a65304e..7870ce0 100644 --- a/Joystick.m +++ b/Joystick.m @@ -7,6 +7,11 @@ #import "Joystick.h" +#import "JSAction.h" +#import "JSActionAnalog.h" +#import "JSActionButton.h" +#import "JSActionHat.h" + static NSArray *ActionsForElement(IOHIDDeviceRef device, id base) { CFArrayRef elements = IOHIDDeviceCopyMatchingElements(device, NULL, kIOHIDOptionsTypeNone); NSMutableArray *children = [NSMutableArray arrayWithCapacity:CFArrayGetCount(elements)]; @@ -32,13 +37,13 @@ static NSArray *ActionsForElement(IOHIDDeviceRef device, id base) { if (max - min == 1 || usagePage == kHIDPage_Button || type == kIOHIDElementTypeInput_Button) { action = [[JSActionButton alloc] initWithName:(__bridge NSString *)elName - idx:buttons++ + idx:++buttons max:max]; } else if (usage == kHIDUsage_GD_Hatswitch) { action = [[JSActionHat alloc] init]; } else if (usage >= kHIDUsage_GD_X && usage <= kHIDUsage_GD_Rz) { // TODO(jfw): Scaling equation doesn't seem right if min != 0. - action = [[JSActionAnalog alloc] initWithIndex:axes++ + action = [[JSActionAnalog alloc] initWithIndex:++axes offset:-1.f scale:2.f / (max - min)]; } else { @@ -74,16 +79,15 @@ static NSArray *ActionsForElement(IOHIDDeviceRef device, id base) { } - (NSString *)name { - return [NSString stringWithFormat:@"%@ #%d", productName, index + 1]; + return [NSString stringWithFormat:@"%@ #%d", productName, index]; } - (id)base { - // FIXME(jfw): This is a hack because actions get joysticks as their base. return nil; } -- (NSString *)stringify { - return [[NSString alloc] initWithFormat: @"%d~%d~%d", vendorId, productId, index]; +- (NSString *)uid { + return [NSString stringWithFormat: @"%d:%d:%d", vendorId, productId, index]; } - (JSAction *)findActionByCookie:(void *)cookie {