Skip to content

Commit

Permalink
use selected game controller instead of the current
Browse files Browse the repository at this point in the history
  • Loading branch information
sh95014 committed Dec 19, 2023
1 parent 364a102 commit a0b008a
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 8 deletions.
4 changes: 2 additions & 2 deletions source/frontends/mariani/MarianiJoystick.mm
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@

bool Gamepad::getButton(int i) const
{
GCController *gc = [GCController current];
GCController *gc = [GCController defaultController];
GCExtendedGamepad *gamepad = [gc extendedGamepad];
GCControllerButtonInput *button = inputForButton(gamepad, i);
return (button != nil) ? button.isPressed : 0;
}

double Gamepad::getAxis(int i) const
{
GCController *gc = [GCController current];
GCController *gc = [GCController defaultController];
GCExtendedGamepad *gamepad = [gc extendedGamepad];

if (gamepad != nil) {
Expand Down
3 changes: 3 additions & 0 deletions source/frontends/mariani/UserDefaults.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ extern NSString *NumericKeypadControllerIdentifier;

@property (readonly) NSString *fullName;

+ (GCController *)defaultController;
+ (GCController *)controllerNamed:(NSString *)fullName;

@end

NS_ASSUME_NONNULL_END
29 changes: 23 additions & 6 deletions source/frontends/mariani/UserDefaults.m
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,15 @@ - (void)setScreenshotsFolder:(NSURL *)screenshotsFolder {

- (NSString *)gameController {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *name = [defaults stringForKey:GAME_CONTROLLER_KEY];
NSString *fullName = [defaults stringForKey:GAME_CONTROLLER_KEY];

if ([name isEqualToString:NumericKeypadControllerIdentifier]) {
return name;
} else if (name.length > 0) {
if ([fullName isEqualToString:NumericKeypadControllerIdentifier]) {
return fullName;
} else if (fullName.length > 0) {
// make sure the selected controller is still conected
for (GCController *controller in [GCController controllers]) {
if ([controller.fullName isEqualToString:name]) {
return name;
if ([controller.fullName isEqualToString:fullName]) {
return fullName;
}
}
}
Expand Down Expand Up @@ -157,4 +157,21 @@ - (NSString *)fullName {
return [NSString stringWithFormat:@"%@ %@", self.vendorName, self.productCategory];
}

+ (GCController *)controllerNamed:(NSString *)fullName {
if (fullName != nil) {
for (GCController *controller in [GCController controllers]) {
if ([controller.fullName isEqualToString:fullName]) {
return controller;
}
}
}
return nil;
}

+ (GCController *)defaultController {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *fullName = [defaults stringForKey:GAME_CONTROLLER_KEY];
return [self controllerNamed:fullName];
}

@end

0 comments on commit a0b008a

Please sign in to comment.