68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
-
-
+
+
-
+
|
+ (OFArray<OHGameController *> *)controllers
{
OFMutableArray *controllers = [OFMutableArray array];
void *pool = objc_autoreleasePoolPush();
for (GCController *controller in GCController.controllers)
[controllers addObject: [[[self alloc]
oh_initWithGCController: controller] autorelease]];
[controllers addObject: objc_autorelease(
[[self alloc] oh_initWithGCController: controller])];
objc_autoreleasePoolPop(pool);
return controllers;
}
- (instancetype)oh_init
{
OF_INVALID_INIT_METHOD
}
- (instancetype)oh_initWithGCController: (GCController *)controller
{
self = [super oh_init];
@try {
void *pool = objc_autoreleasePoolPush();
_controller = [controller retain];
_controller = objc_retain(controller);
_name = [_controller.vendorName.OFObject copy];
if ([_name isEqual: @"DualSense Wireless Controller"])
_profile = [[OHDualSenseGamepad alloc] oh_init];
else if ([_name isEqual: @"DUALSHOCK 4 Wireless Controller"])
_profile = [[OHDualShock4Gamepad alloc] oh_init];
else if ([_name isEqual: @"Joy-Con (L/R)"])
|
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
-
+
-
-
+
+
|
else
_profile = [[OHGCFExtendedGamepad alloc]
oh_initWithLiveInput:
_controller.input.unmappedInput];
objc_autoreleasePoolPop(pool);
} @catch (id e) {
[self release];
objc_release(self);
@throw e;
}
return self;
}
- (void)dealloc
{
[_controller release];
[_profile release];
objc_release(_controller);
objc_release(_profile);
[super dealloc];
}
- (void)updateState
{
void *pool = objc_autoreleasePoolPush();
|