summaryrefslogtreecommitdiff
path: root/app/mac/view-controller.mm
diff options
context:
space:
mode:
Diffstat (limited to 'app/mac/view-controller.mm')
-rw-r--r--app/mac/view-controller.mm83
1 files changed, 2 insertions, 81 deletions
diff --git a/app/mac/view-controller.mm b/app/mac/view-controller.mm
index eb81b6b..8695634 100644
--- a/app/mac/view-controller.mm
+++ b/app/mac/view-controller.mm
@@ -1,54 +1,23 @@
#import "view-controller.hh"
-#import "controller-adapter-keyboard.hh"
-#import "controller-adapter-gamepad.hh"
#import "scene.hh"
@implementation ViewController
{
Scene* _scene;
NSSize _sceneSize;
- ControllerAdapterKeyboard* _keyboardController;
- NSMutableArray<ControllerAdapterGamepad*>* _gamepadControllers;
}
-- (instancetype)initWithFilePath:(NSString*)filePath
+- (instancetype)init
{
self = [super initWithNibName:nil bundle:nil];
if (self)
{
- _scene = [[Scene alloc] initWithFilePath:filePath];
+ _scene = [[Scene alloc] init];
_sceneSize = [_scene size];
-
- _keyboardController = [[ControllerAdapterKeyboard alloc] init];
- _gamepadControllers = [NSMutableArray array];
- for (GCController* controller in [GCController controllers])
- {
- auto gamepad = [controller extendedGamepad];
- if (gamepad)
- {
- auto adapter = [[ControllerAdapterGamepad alloc] initWithProfile:gamepad];
- [_gamepadControllers addObject:adapter];
- }
- }
- [self updateControllers];
-
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(handleControllerConnected:)
- name:GCControllerDidConnectNotification
- object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(handleControllerDisconnected:)
- name:GCControllerDidDisconnectNotification
- object:nil];
}
return self;
}
-- (void)dealloc
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-}
-
- (void)loadView
{
auto view = [[SKView alloc] init];
@@ -59,54 +28,6 @@
[self setView:view];
}
-- (void)updateControllers
-{
- // Prefer controllers, then fallback to keyboard input.
- if ([_gamepadControllers count] >= 1)
- {
- [_scene setPrimaryController:[_gamepadControllers objectAtIndex:0]];
- if ([_gamepadControllers count] >= 2)
- {
- [_scene setSecondaryController:[_gamepadControllers objectAtIndex:1]];
- }
- else
- {
- [_scene setSecondaryController:_keyboardController];
- }
- }
- else
- {
- [_scene setPrimaryController:_keyboardController];
- [_scene setSecondaryController:nil];
- }
-}
-
-- (void)handleControllerConnected:(NSNotification*)notification
-{
- auto controller = (GCController*)[notification object];
- auto gamepad = [controller extendedGamepad];
- if (gamepad)
- {
- auto adapter = [[ControllerAdapterGamepad alloc] initWithProfile:gamepad];
- [_gamepadControllers addObject:adapter];
- }
- [self updateControllers];
-}
-
-- (void)handleControllerDisconnected:(NSNotification*)notification
-{
- auto controller = (GCController*)[notification object];
- for (auto i = NSUInteger{ [_gamepadControllers count] }; i > 0; --i)
- {
- auto adapter = [_gamepadControllers objectAtIndex:(i - 1)];
- if ([[adapter profile] controller] == controller)
- {
- [_gamepadControllers removeObjectAtIndex:(i - 1)];
- }
- }
- [self updateControllers];
-}
-
- (NSSize)minimumDisplaySize
{
return _sceneSize;