Remove website, now in yukkurigames.com repository.
[enjoyable.git] / Classes / NJInputAnalog.m
index 7b4b15a..18a848b 100644 (file)
@@ -9,29 +9,37 @@
 
 #import "NJInputAnalog.h"
 
-static float normalize(long p, long min, long max) {
+static float normalize(CFIndex p, CFIndex min, CFIndex max) {
     return 2 * (p - min) / (float)(max - min) - 1;
 }
 
 @implementation NJInputAnalog {
-    float magnitude;
-    long rawMin;
-    long rawMax;
+    CFIndex _rawMin;
+    CFIndex _rawMax;
 }
 
-- (id)initWithIndex:(int)index rawMin:(long)rawMin_ rawMax:(long)rawMax_ {
-    if ((self = [super init])) {
-        self.name = [[NSString alloc] initWithFormat: @"Axis %d", index];
-        self.children = @[[[NJInput alloc] initWithName:@"Low" base:self],
-                          [[NJInput alloc] initWithName:@"High" base:self]];
-        rawMax = rawMax_;
-        rawMin = rawMin_;
+- (id)initWithElement:(IOHIDElementRef)element
+                index:(int)index
+               parent:(NJInputPathElement *)parent
+{
+    if ((self = [super initWithName:NJINPUT_NAME(NSLocalizedString(@"axis %d", @"axis name"), index)
+                                eid:NJINPUT_EID("Axis", index)
+                            element:element
+                             parent:parent])) {
+        self.children = @[[[NJInput alloc] initWithName:NSLocalizedString(@"axis low", @"axis low trigger")
+                                                    eid:@"Low"
+                                                   parent:self],
+                          [[NJInput alloc] initWithName:NSLocalizedString(@"axis high", @"axis high trigger")
+                                                    eid:@"High"
+                                                   parent:self]];
+        _rawMax = IOHIDElementGetPhysicalMax(element);
+        _rawMin = IOHIDElementGetPhysicalMin(element);
     }
     return self;
 }
 
 - (id)findSubInputForValue:(IOHIDValueRef)value {
-    float mag = normalize(IOHIDValueGetIntegerValue(value), rawMin, rawMax);
+    float mag = normalize(IOHIDValueGetIntegerValue(value), _rawMin, _rawMax);
     if (mag < -DEAD_ZONE)
         return self.children[0];
     else if (mag > DEAD_ZONE)
@@ -41,15 +49,11 @@ static float normalize(long p, long min, long max) {
 }
 
 - (void)notifyEvent:(IOHIDValueRef)value {
-    magnitude = normalize(IOHIDValueGetIntegerValue(value), rawMin, rawMax);
+    float magnitude = self.magnitude = normalize(IOHIDValueGetIntegerValue(value), _rawMin, _rawMax);
     [self.children[0] setMagnitude:fabsf(MIN(magnitude, 0))];
     [self.children[1] setMagnitude:fabsf(MAX(magnitude, 0))];
     [self.children[0] setActive:magnitude < -DEAD_ZONE];
     [self.children[1] setActive:magnitude > DEAD_ZONE];
 }
 
-- (float)magnitude {
-    return magnitude;
-}
-
 @end