Supports local multiplayer (up to 4 players)
Heavily based on Ian Clawson’s PRs, including #128
This commit is contained in:
parent
5a019e5950
commit
10af836105
@ -1 +1 @@
|
||||
Subproject commit 12f1432f2aa48ed24f324d31b405fe4e5c73d6f6
|
||||
Subproject commit 6c84366b3a76045782905293c9616e33f5da1a35
|
||||
@ -1 +1 @@
|
||||
Subproject commit c40ae8b069433159627903b43b4b4154d9a03ea2
|
||||
Subproject commit c9ac6b5f4f50e9ae4b5fa7f8b420f240003df127
|
||||
@ -1 +1 @@
|
||||
Subproject commit 27b969810857d8b62436fec612291177d909e087
|
||||
Subproject commit 8ea36dff87bc1f787765de45fa8ccbcc1256a0e3
|
||||
@ -1 +1 @@
|
||||
Subproject commit a57751156ba7df394903893ff8c37f08024d5500
|
||||
Subproject commit 81f8ffba56823637706689fb5c6bc634ee4d9b32
|
||||
@ -1 +1 @@
|
||||
Subproject commit e3a957f4e841694f90cd6f64f421130dfa6e9727
|
||||
Subproject commit 18c595887a12ef23e0d54c63f83c91c99e7f4827
|
||||
@ -1 +1 @@
|
||||
Subproject commit 694b73f87ce9fb83d37eaeea862bcf79e0cfc080
|
||||
Subproject commit b0eeb87c41cf5d78182879a10a51f7c147a60ef7
|
||||
@ -1 +1 @@
|
||||
Subproject commit d66953070113b961adb55b44ee6d20f00947b6fd
|
||||
Subproject commit c8816c51f82210a9c4cc62b1a7c53fa21bc705ee
|
||||
@ -1 +1 @@
|
||||
Subproject commit 5ffdc3bc615a280ec1b78d2c82772ff78aa04368
|
||||
Subproject commit bc3e0178caa29b4c1e8872133dd00aa55cc9da2a
|
||||
@ -1 +1 @@
|
||||
Subproject commit d296fe001652c282c43dacc8f5504f7fdff15265
|
||||
Subproject commit d5717291325578f64d519822aeb2be81217c67f3
|
||||
@ -15,6 +15,7 @@ extension ControllersSettingsViewController
|
||||
{
|
||||
private enum Section: Int
|
||||
{
|
||||
case none
|
||||
case localDevice
|
||||
case externalControllers
|
||||
case customizeControls
|
||||
@ -149,6 +150,18 @@ private extension ControllersSettingsViewController
|
||||
|
||||
switch Section(rawValue: indexPath.section)!
|
||||
{
|
||||
case .none:
|
||||
cell.textLabel?.text = NSLocalizedString("None", comment: "")
|
||||
|
||||
if self.gameController == nil
|
||||
{
|
||||
cell.accessoryType = .checkmark
|
||||
}
|
||||
else
|
||||
{
|
||||
cell.accessoryType = .none
|
||||
}
|
||||
|
||||
case .localDevice, .externalControllers:
|
||||
let controller: GameController
|
||||
|
||||
@ -172,7 +185,7 @@ private extension ControllersSettingsViewController
|
||||
cell.accessoryType = .checkmark
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
cell.accessoryType = .none
|
||||
}
|
||||
|
||||
@ -257,18 +270,20 @@ extension ControllersSettingsViewController
|
||||
{
|
||||
override func numberOfSections(in tableView: UITableView) -> Int
|
||||
{
|
||||
if self.gameController == self.localDeviceController
|
||||
if self.gameController == self.localDeviceController || self.gameController == nil
|
||||
{
|
||||
return 2
|
||||
return 3
|
||||
}
|
||||
|
||||
return 3
|
||||
return 4
|
||||
}
|
||||
|
||||
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
|
||||
{
|
||||
switch Section(rawValue: section)!
|
||||
{
|
||||
case .none where self.playerIndex == 0: return 0
|
||||
case .none: return 1
|
||||
case .localDevice: return 1
|
||||
case .externalControllers: return self.connectedControllers.isEmpty ? 1 : self.connectedControllers.count
|
||||
case .customizeControls: return 1
|
||||
@ -294,11 +309,30 @@ extension ControllersSettingsViewController
|
||||
{
|
||||
switch Section(rawValue: section)!
|
||||
{
|
||||
case .none: return nil
|
||||
case .localDevice: return NSLocalizedString("This Device", comment: "")
|
||||
case .externalControllers: return NSLocalizedString("Game Controllers", comment: "")
|
||||
case .customizeControls: return nil
|
||||
}
|
||||
}
|
||||
|
||||
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
|
||||
{
|
||||
switch Section(rawValue: section)!
|
||||
{
|
||||
case .none where self.playerIndex == 0: return 1
|
||||
default: return UITableView.automaticDimension
|
||||
}
|
||||
}
|
||||
|
||||
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat
|
||||
{
|
||||
switch Section(rawValue: section)!
|
||||
{
|
||||
case .none where self.playerIndex == 0: return 1
|
||||
default: return UITableView.automaticDimension
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension ControllersSettingsViewController
|
||||
@ -309,6 +343,7 @@ extension ControllersSettingsViewController
|
||||
|
||||
switch Section(rawValue: indexPath.section)!
|
||||
{
|
||||
case .none: self.gameController = nil
|
||||
case .localDevice: self.gameController = self.localDeviceController
|
||||
case .externalControllers where self.connectedControllers.isEmpty: return
|
||||
case .externalControllers: self.gameController = self.connectedControllers[indexPath.row]
|
||||
@ -338,7 +373,7 @@ extension ControllersSettingsViewController
|
||||
}
|
||||
else
|
||||
{
|
||||
previousIndexPath = nil
|
||||
previousIndexPath = IndexPath(row: 0, section: Section.none.rawValue)
|
||||
}
|
||||
|
||||
self.tableView.beginUpdates()
|
||||
|
||||
@ -330,7 +330,7 @@ extension SettingsViewController
|
||||
let section = Section(rawValue: sectionIndex)!
|
||||
switch section
|
||||
{
|
||||
case .controllers: return 1 // Temporarily hide other controller indexes until controller logic is finalized
|
||||
case .controllers: return 4
|
||||
case .controllerSkins: return System.registeredSystems.count
|
||||
case .syncing: return SyncManager.shared.coordinator?.account == nil ? 1 : super.tableView(tableView, numberOfRowsInSection: sectionIndex)
|
||||
default:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user