diff --git a/Cores/DeltaCore b/Cores/DeltaCore index 1fc24e3..670a550 160000 --- a/Cores/DeltaCore +++ b/Cores/DeltaCore @@ -1 +1 @@ -Subproject commit 1fc24e32383868e7eaf78d01b36ff155a2915daa +Subproject commit 670a55012fcba808416e85cc7fa66a0ba135ab1d diff --git a/Delta.xcodeproj/project.pbxproj b/Delta.xcodeproj/project.pbxproj index 284c004..2b6e55a 100644 --- a/Delta.xcodeproj/project.pbxproj +++ b/Delta.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ BF02BD001D361BD1000892F2 /* NSFetchedResultsController+Conveniences.m in Sources */ = {isa = PBXBuildFile; fileRef = BF02BCFF1D361BD1000892F2 /* NSFetchedResultsController+Conveniences.m */; }; BF0418141D01E93400E85BCF /* GBADeltaCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF0418131D01E93400E85BCF /* GBADeltaCore.framework */; }; BF0418151D01E93400E85BCF /* GBADeltaCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BF0418131D01E93400E85BCF /* GBADeltaCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - BF04A5A31CF8E61C00B4A267 /* UIViewController+PeekPop.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF04A5A21CF8E61C00B4A267 /* UIViewController+PeekPop.swift */; }; BF090CF41B490D8300DCAB45 /* UIDevice+Vibration.m in Sources */ = {isa = PBXBuildFile; fileRef = BF090CF31B490D8300DCAB45 /* UIDevice+Vibration.m */; }; BF0CDDAD1C8155D200640168 /* LoadImageOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0CDDAC1C8155D200640168 /* LoadImageOperation.swift */; }; BF107EC41BF413F000E0C32C /* GamesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF107EC31BF413F000E0C32C /* GamesViewController.swift */; }; @@ -95,7 +94,6 @@ BF02BCFE1D361BD1000892F2 /* NSFetchedResultsController+Conveniences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSFetchedResultsController+Conveniences.h"; sourceTree = ""; }; BF02BCFF1D361BD1000892F2 /* NSFetchedResultsController+Conveniences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSFetchedResultsController+Conveniences.m"; sourceTree = ""; }; BF0418131D01E93400E85BCF /* GBADeltaCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GBADeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BF04A5A21CF8E61C00B4A267 /* UIViewController+PeekPop.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+PeekPop.swift"; sourceTree = ""; }; BF090CF11B490D8300DCAB45 /* Delta-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Delta-Bridging-Header.h"; sourceTree = ""; }; BF090CF21B490D8300DCAB45 /* UIDevice+Vibration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIDevice+Vibration.h"; sourceTree = ""; }; BF090CF31B490D8300DCAB45 /* UIDevice+Vibration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+Vibration.m"; sourceTree = ""; }; @@ -190,7 +188,6 @@ BF090CF31B490D8300DCAB45 /* UIDevice+Vibration.m */, BF797A2C1C2D339F00F1A000 /* UILabel+FontSize.swift */, BF7AE8091C2E8C7600B1B5BC /* UIColor+Delta.swift */, - BF04A5A21CF8E61C00B4A267 /* UIViewController+PeekPop.swift */, BFCEA67D1D56FF640061A534 /* UIViewControllerContextTransitioning+Conveniences.swift */, ); path = Extensions; @@ -588,7 +585,6 @@ BF7AE81E1C2E984300B1B5BC /* GridCollectionViewCell.swift in Sources */, BF34FA111CF1899D006624C7 /* CheatTextView.swift in Sources */, BFFC46231D5984A000AF2CC6 /* LaunchViewController.swift in Sources */, - BF04A5A31CF8E61C00B4A267 /* UIViewController+PeekPop.swift in Sources */, BF4566E81BC090B6007BFA1A /* Model.xcdatamodeld in Sources */, BFDE393C1BC0CEDF003F72E8 /* Game.swift in Sources */, BF34FA071CF0F510006624C7 /* EditCheatViewController.swift in Sources */, diff --git a/Delta/Emulation/GameViewController.swift b/Delta/Emulation/GameViewController.swift index c146bb5..cf11b1a 100644 --- a/Delta/Emulation/GameViewController.swift +++ b/Delta/Emulation/GameViewController.swift @@ -173,13 +173,6 @@ extension GameViewController self.updateControllers() } - override func viewDidLayoutSubviews() - { - super.viewDidLayoutSubviews() - - self.controllerView.isHidden = self.isPreviewing - } - // MARK: - Segues /// KVO @@ -213,7 +206,7 @@ extension GameViewController } pauseViewController.sustainButtonsItem?.selected = (self.sustainedInputs[ObjectIdentifier(gameController)]?.count ?? 0) > 0 - pauseViewController.sustainButtonsItem?.action = { [unowned self] item in + pauseViewController.sustainButtonsItem?.action = { [unowned self, unowned pauseViewController] item in self.resetSustainedInputs(for: gameController) diff --git a/Delta/Extensions/UIViewController+PeekPop.swift b/Delta/Extensions/UIViewController+PeekPop.swift deleted file mode 100644 index 2e895de..0000000 --- a/Delta/Extensions/UIViewController+PeekPop.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// UIViewController+PeekPop.swift -// Delta -// -// Created by Riley Testut on 5/27/16. -// Copyright © 2016 Riley Testut. All rights reserved. -// - -import Foundation - -extension UIViewController -{ - var isPreviewing: Bool - { - guard let presentationController = self.presentationController else { return false } - return NSStringFromClass(presentationController.dynamicType).contains("PreviewPresentation") - } -} diff --git a/Delta/Game Selection/GamesCollectionViewController.swift b/Delta/Game Selection/GamesCollectionViewController.swift index dcf82f7..6cc8552 100644 --- a/Delta/Game Selection/GamesCollectionViewController.swift +++ b/Delta/Game Selection/GamesCollectionViewController.swift @@ -36,7 +36,9 @@ class GamesCollectionViewController: UICollectionViewController super.init(coder: aDecoder) self.dataSource.fetchedResultsController.delegate = self - self.dataSource.cellConfigurationHandler = self.configureCell + self.dataSource.cellConfigurationHandler = { [unowned self] (cell, game) in + self.configureCell(cell, game: game) + } } override func viewDidLoad() diff --git a/Delta/Pause Menu/Cheats/CheatsViewController.swift b/Delta/Pause Menu/Cheats/CheatsViewController.swift index b9f77e1..abd8268 100644 --- a/Delta/Pause Menu/Cheats/CheatsViewController.swift +++ b/Delta/Pause Menu/Cheats/CheatsViewController.swift @@ -247,12 +247,14 @@ extension CheatsViewController: UIViewControllerPreviewingDelegate let cheat = self.fetchedResultsController.object(at: indexPath) as! Cheat let editCheatViewController = self.makeEditCheatViewController(cheat: cheat) + editCheatViewController.isPreviewing = true return editCheatViewController } func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) { let editCheatViewController = viewControllerToCommit as! EditCheatViewController + editCheatViewController.isPreviewing = false editCheatViewController.presentWithPresentingViewController(self) } } diff --git a/Delta/Pause Menu/Cheats/EditCheatViewController.swift b/Delta/Pause Menu/Cheats/EditCheatViewController.swift index be85568..aee7e37 100644 --- a/Delta/Pause Menu/Cheats/EditCheatViewController.swift +++ b/Delta/Pause Menu/Cheats/EditCheatViewController.swift @@ -41,6 +41,8 @@ class EditCheatViewController: UITableViewController weak var delegate: EditCheatViewControllerDelegate? + var isPreviewing = false + private var supportedCheatFormats: [CheatFormat]! private var selectedCheatFormat: CheatFormat { @@ -69,6 +71,7 @@ class EditCheatViewController: UITableViewController // Delaying until next run loop prevents self from being dismissed immediately DispatchQueue.main.async { let editCheatViewController = viewController as! EditCheatViewController + editCheatViewController.isPreviewing = false editCheatViewController.presentWithPresentingViewController(presentingViewController) } } diff --git a/Delta/Pause Menu/Save States/SaveStatesViewController.swift b/Delta/Pause Menu/Save States/SaveStatesViewController.swift index 45a4c33..8025969 100644 --- a/Delta/Pause Menu/Save States/SaveStatesViewController.swift +++ b/Delta/Pause Menu/Save States/SaveStatesViewController.swift @@ -443,14 +443,14 @@ private extension SaveStatesViewController { if saveState.game.previewSaveState != saveState { - let previewAction = Action(title: NSLocalizedString("Set as Preview Save State", comment: ""), style: .default, action: { action in + let previewAction = Action(title: NSLocalizedString("Set as Preview Save State", comment: ""), style: .default, action: { [unowned self] action in self.updatePreviewSaveState(saveState) }) actions.append(previewAction) } else { - let previewAction = Action(title: NSLocalizedString("Remove as Preview Save State", comment: ""), style: .default, action: { action in + let previewAction = Action(title: NSLocalizedString("Remove as Preview Save State", comment: ""), style: .default, action: { [unowned self] action in self.updatePreviewSaveState(nil) }) actions.append(previewAction) @@ -460,7 +460,7 @@ private extension SaveStatesViewController let cancelAction = Action(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, action: nil) actions.append(cancelAction) - let renameAction = Action(title: NSLocalizedString("Rename", comment: ""), style: .default, action: { action in + let renameAction = Action(title: NSLocalizedString("Rename", comment: ""), style: .default, action: { [unowned self] action in self.renameSaveState(saveState) }) actions.append(renameAction) @@ -469,19 +469,19 @@ private extension SaveStatesViewController { case .auto: break case .general: - let lockAction = Action(title: NSLocalizedString("Lock", comment: ""), style: .default, action: { action in + let lockAction = Action(title: NSLocalizedString("Lock", comment: ""), style: .default, action: { [unowned self] action in self.lockSaveState(saveState) }) actions.append(lockAction) case .locked: - let unlockAction = Action(title: NSLocalizedString("Unlock", comment: ""), style: .default, action: { action in + let unlockAction = Action(title: NSLocalizedString("Unlock", comment: ""), style: .default, action: { [unowned self] action in self.unlockSaveState(saveState) }) actions.append(unlockAction) } - let deleteAction = Action(title: NSLocalizedString("Delete", comment: ""), style: .destructive, action: { action in + let deleteAction = Action(title: NSLocalizedString("Delete", comment: ""), style: .destructive, action: { [unowned self] action in self.deleteSaveState(saveState) }) actions.append(deleteAction) @@ -581,6 +581,9 @@ extension SaveStatesViewController: UIViewControllerPreviewingDelegate, UIPrevie emulatorCore.stop() } + self.previewGameViewController.loadViewIfNeeded() + self.previewGameViewController.controllerView.isHidden = true + self.previewGameViewController.game = self.game self.previewGameViewController.emulatorCore?.start() self.previewGameViewController.emulatorCore?.pause()