summaryrefslogtreecommitdiff
path: root/app/mac/controller-adapter-gamepad.mm
diff options
context:
space:
mode:
Diffstat (limited to 'app/mac/controller-adapter-gamepad.mm')
-rw-r--r--app/mac/controller-adapter-gamepad.mm32
1 files changed, 28 insertions, 4 deletions
diff --git a/app/mac/controller-adapter-gamepad.mm b/app/mac/controller-adapter-gamepad.mm
index 132fa85..f1d8db8 100644
--- a/app/mac/controller-adapter-gamepad.mm
+++ b/app/mac/controller-adapter-gamepad.mm
@@ -1,5 +1,29 @@
-//
-// Created by Hannes Schulze on 29.01.25.
-//
-
#include "controller-adapter-gamepad.hh"
+
+@implementation ControllerAdapterGamepad
+
+- (instancetype)initWithProfile:(GCExtendedGamepad*)profile
+{
+ self = [super init];
+ if (self)
+ {
+ _profile = profile;
+ }
+ return self;
+}
+
+- (nes::button_mask)readPressedButtons
+{
+ auto res = nes::button_mask{};
+ if ([[[_profile dpad] up] isPressed]) { res.add(nes::buttons::up); }
+ if ([[[_profile dpad] down] isPressed]) { res.add(nes::buttons::down); }
+ if ([[[_profile dpad] left] isPressed]) { res.add(nes::buttons::left); }
+ if ([[[_profile dpad] right] isPressed]) { res.add(nes::buttons::right); }
+ if ([[_profile buttonA] isPressed]) { res.add(nes::buttons::a); }
+ if ([[_profile buttonB] isPressed]) { res.add(nes::buttons::b); }
+ if ([[_profile leftTrigger] isPressed]) { res.add(nes::buttons::select); }
+ if ([[_profile rightTrigger] isPressed]) { res.add(nes::buttons::start); }
+ return res;
+}
+
+@end \ No newline at end of file