From c59f4642cd9ae15ee012c60a00745a0b70cc7943 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Mon, 7 Sep 2015 17:57:12 -0700 Subject: [PATCH] Handles input from all connected controllers correctly --- Cores/DeltaCore | 2 +- Cores/SNESDeltaCore | 2 +- Delta/EmulationViewController.swift | 41 ++++++++++++++++++++++++++--- 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/Cores/DeltaCore b/Cores/DeltaCore index bbb3592..0d618e0 160000 --- a/Cores/DeltaCore +++ b/Cores/DeltaCore @@ -1 +1 @@ -Subproject commit bbb35924b544251b20061340fa9aa9e0275caee4 +Subproject commit 0d618e031f284cad733b1122c60e148601b24ad6 diff --git a/Cores/SNESDeltaCore b/Cores/SNESDeltaCore index 746632e..d99e506 160000 --- a/Cores/SNESDeltaCore +++ b/Cores/SNESDeltaCore @@ -1 +1 @@ -Subproject commit 746632eee940d597777d2c32d5e031807fd788fb +Subproject commit d99e5066db54aae4f987a8c2726be27b0eac6ee8 diff --git a/Delta/EmulationViewController.swift b/Delta/EmulationViewController.swift index 0bf5a31..e533cd6 100644 --- a/Delta/EmulationViewController.swift +++ b/Delta/EmulationViewController.swift @@ -29,13 +29,16 @@ class EmulationViewController: UIViewController self.emulatorCore = EmulatorCore(game: game) super.init(nibName: "EmulationViewController", bundle: nil) + + NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("updateControllers"), name: ExternalControllerDidConnectNotification, object: nil) + NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("updateControllers"), name: ExternalControllerDidDisconnectNotification, object: nil) } required init(coder aDecoder: NSCoder) { fatalError("initWithCoder: not implemented.") } - //MARK: - Overrides - + //MARK: - Overrides /** Overrides **/ //MARK: - UIViewController @@ -49,6 +52,8 @@ class EmulationViewController: UIViewController self.controllerView.controllerSkin = controllerSkin self.controllerView.addReceiver(self) self.emulatorCore.setGameController(self.controllerView, atIndex: 0) + + self.updateControllers() } override func viewDidAppear(animated: Bool) @@ -62,8 +67,16 @@ class EmulationViewController: UIViewController { super.viewDidLayoutSubviews() - let scale = self.view.bounds.width / self.controllerView.intrinsicContentSize().width - self.controllerViewHeightConstraint.constant = self.controllerView.intrinsicContentSize().height * scale + if Settings.localControllerPlayerIndex != nil + { + let scale = self.view.bounds.width / self.controllerView.intrinsicContentSize().width + self.controllerViewHeightConstraint.constant = self.controllerView.intrinsicContentSize().height * scale + } + else + { + self.controllerViewHeightConstraint.constant = 0 + } + } override func prefersStatusBarHidden() -> Bool @@ -82,6 +95,28 @@ class EmulationViewController: UIViewController self.controllerView.finishAnimatingUpdateControllerSkin() } } + + //MARK: - Controllers - + /// Controllers + func updateControllers() + { + self.emulatorCore.removeAllGameControllers() + + if let index = Settings.localControllerPlayerIndex + { + self.emulatorCore.setGameController(self.controllerView, atIndex: index) + } + + for controller in ExternalControllerManager.sharedManager.connectedControllers + { + if let index = controller.playerIndex + { + self.emulatorCore.setGameController(controller, atIndex: index) + } + } + + self.view.setNeedsLayout() + } } //MARK: - -