Updates DeltaCore API usage to match massive DeltaCore refactoring

This commit is contained in:
Riley Testut 2016-07-13 02:29:27 -05:00
parent 8b97d1badc
commit 1d7ce4b6e6
19 changed files with 104 additions and 147 deletions

View File

@ -119,12 +119,12 @@ class DatabaseManager
if let pathExtension = URL.pathExtension
{
let gameCollection = GameCollection.gameSystemCollectionForPathExtension(pathExtension, inManagedObjectContext: managedObjectContext)
game.typeIdentifier = gameCollection.identifier
game.type = GameType(rawValue: gameCollection.identifier)
game.gameCollections.insert(gameCollection)
}
else
{
game.typeIdentifier = kUTTypeDeltaGame as String
game.type = GameType.delta
}
do

View File

@ -27,38 +27,12 @@ extension Cheat
}
}
extension CheatType
{
var rawValue: Int16
{
switch self
{
case .actionReplay: return 0
case .gameGenie: return 1
case .gameShark: return 2
case .codeBreaker: return 3
}
}
init?(rawValue: Int16)
{
switch rawValue
{
case 0: self = .actionReplay
case 1: self = .gameGenie
case 2: self = .gameShark
case 3: self = .codeBreaker
default: return nil
}
}
}
@objc(Cheat)
class Cheat: NSManagedObject, CheatProtocol
{
//TODO: Change type to String! when Swift 3 allows it
@NSManaged var name: String?
@NSManaged var code: String
@NSManaged var type: CheatType
@NSManaged var modifiedDate: Date
@NSManaged var enabled: Bool
@ -68,23 +42,6 @@ class Cheat: NSManagedObject, CheatProtocol
// Must be optional relationship to satisfy weird Core Data requirement
// https://forums.developer.apple.com/thread/20535
@NSManaged var game: Game!
var type: CheatType
{
get
{
self.willAccessValue(forKey: Attributes.type.rawValue)
let type = CheatType(rawValue: self.primitiveType.int16Value)!
self.didAccessValue(forKey: Attributes.type.rawValue)
return type
}
set
{
self.willChangeValue(forKey: Attributes.type.rawValue)
self.primitiveType = NSNumber(value: newValue.rawValue)
self.didChangeValue(forKey: Attributes.type.rawValue)
}
}
}
extension Cheat

View File

@ -31,13 +31,13 @@ extension Game
}
@objc(Game)
class Game: NSManagedObject
class Game: NSManagedObject, GameProtocol
{
@NSManaged var artworkURL: URL?
@NSManaged var filename: String
@NSManaged var identifier: String
@NSManaged var name: String
@NSManaged var typeIdentifier: String
@NSManaged var type: GameType
@NSManaged var gameCollections: Set<GameCollection>
@NSManaged var previewSaveState: SaveState?
@ -48,22 +48,19 @@ class Game: NSManagedObject
}
var preferredFileExtension: String {
switch self.typeIdentifier
switch self.type
{
case kUTTypeSNESGame as String as String: return "smc"
case kUTTypeGBAGame as String as String: return "gba"
case kUTTypeDeltaGame as String as String: fallthrough
case GameType.snes: return "smc"
case GameType.gba: return "gba"
default: return "delta"
}
}
}
extension Game: GameType {}
extension Game
{
class func supportedTypeIdentifiers() -> Set<String>
{
return [kUTTypeSNESGame as String, kUTTypeGBAGame as String]
return [GameType.snes.rawValue, GameType.gba.rawValue]
}
}

View File

@ -36,9 +36,9 @@ class GameCollection: NSManagedObject
switch self.identifier
{
case kUTTypeSNESGame as String as String: return NSLocalizedString("Super Nintendo Entertainment System", comment: "")
case kUTTypeGBAGame as String as String: return NSLocalizedString("Game Boy Advance", comment: "")
case kUTTypeDeltaGame as String as String: return NSLocalizedString("Unsupported Games", comment: "")
case GameType.snes.rawValue: return NSLocalizedString("Super Nintendo Entertainment System", comment: "")
case GameType.gba.rawValue: return NSLocalizedString("Game Boy Advance", comment: "")
case GameType.delta.rawValue: return NSLocalizedString("Unsupported Games", comment: "")
default: return NSLocalizedString("Unknown", comment: "")
}
}
@ -47,9 +47,9 @@ class GameCollection: NSManagedObject
switch self.identifier
{
case kUTTypeSNESGame as String as String: return NSLocalizedString("SNES", comment: "")
case kUTTypeGBAGame as String as String: return NSLocalizedString("GBA", comment: "")
case kUTTypeDeltaGame as String as String: return NSLocalizedString("Unsupported", comment: "")
case GameType.snes.rawValue as String as String: return NSLocalizedString("SNES", comment: "")
case GameType.gba.rawValue as String as String: return NSLocalizedString("GBA", comment: "")
case GameType.delta.rawValue as String as String: return NSLocalizedString("Unsupported", comment: "")
default: return NSLocalizedString("Unknown", comment: "")
}
}
@ -64,15 +64,15 @@ class GameCollection: NSManagedObject
case "smc": fallthrough
case "sfc": fallthrough
case "fig":
identifier = kUTTypeSNESGame as String
identifier = GameType.snes.rawValue
index = 1990
case "gba":
identifier = kUTTypeGBAGame as String
identifier = GameType.gba.rawValue
index = 2001
default:
identifier = kUTTypeDeltaGame as String
identifier = GameType.delta.rawValue
index = Int16(INT16_MAX)
}

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model userDefinedModelVersionIdentifier="1.0" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="10174" systemVersion="15E65" minimumToolsVersion="Xcode 7.0">
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="11185.3" systemVersion="15F34" minimumToolsVersion="Xcode 7.0" sourceLanguage="Objective-C" userDefinedModelVersionIdentifier="1.0">
<entity name="Cheat" representedClassName="Cheat" syncable="YES">
<attribute name="code" attributeType="String" syncable="YES"/>
<attribute name="creationDate" attributeType="Date" syncable="YES"/>
<attribute name="enabled" attributeType="Boolean" defaultValueString="YES" syncable="YES"/>
<attribute name="creationDate" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
<attribute name="enabled" attributeType="Boolean" defaultValueString="YES" usesScalarValueType="NO" syncable="YES"/>
<attribute name="identifier" attributeType="String" syncable="YES"/>
<attribute name="modifiedDate" attributeType="Date" syncable="YES"/>
<attribute name="modifiedDate" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
<attribute name="name" attributeType="String" syncable="YES"/>
<attribute name="type" attributeType="Integer 16" defaultValueString="0" syncable="YES"/>
<attribute name="type" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
<relationship name="game" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Game" inverseName="cheats" inverseEntity="Game" syncable="YES"/>
<uniquenessConstraints>
<uniquenessConstraint>
@ -28,7 +28,7 @@
</attribute>
<attribute name="identifier" attributeType="String" syncable="YES"/>
<attribute name="name" attributeType="String" syncable="YES"/>
<attribute name="typeIdentifier" attributeType="String" syncable="YES"/>
<attribute name="type" attributeType="String" syncable="YES"/>
<relationship name="cheats" toMany="YES" deletionRule="Cascade" destinationEntity="Cheat" inverseName="game" inverseEntity="Cheat" syncable="YES"/>
<relationship name="gameCollections" toMany="YES" deletionRule="Nullify" destinationEntity="GameCollection" inverseName="games" inverseEntity="GameCollection" syncable="YES"/>
<relationship name="previewSaveState" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="SaveState" inverseName="previewGame" inverseEntity="SaveState" syncable="YES"/>
@ -41,7 +41,7 @@
</entity>
<entity name="GameCollection" representedClassName="GameCollection" syncable="YES">
<attribute name="identifier" attributeType="String" syncable="YES"/>
<attribute name="index" attributeType="Integer 16" defaultValueString="0" syncable="YES"/>
<attribute name="index" attributeType="Integer 16" defaultValueString="0" usesScalarValueType="NO" syncable="YES"/>
<relationship name="games" toMany="YES" deletionRule="Nullify" destinationEntity="Game" inverseName="gameCollections" inverseEntity="Game" syncable="YES"/>
<uniquenessConstraints>
<uniquenessConstraint>
@ -50,16 +50,16 @@
</uniquenessConstraints>
</entity>
<entity name="SaveState" representedClassName="SaveState" syncable="YES">
<attribute name="creationDate" attributeType="Date" syncable="YES"/>
<attribute name="creationDate" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
<attribute name="filename" attributeType="String" syncable="YES">
<userInfo>
<entry key="attributeValueClassName" value="NSURL"/>
</userInfo>
</attribute>
<attribute name="identifier" attributeType="String" syncable="YES"/>
<attribute name="modifiedDate" attributeType="Date" syncable="YES"/>
<attribute name="modifiedDate" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
<attribute name="name" optional="YES" attributeType="String" syncable="YES"/>
<attribute name="type" attributeType="Integer 16" defaultValueString="1" syncable="YES"/>
<attribute name="type" attributeType="Integer 16" defaultValueString="1" usesScalarValueType="NO" syncable="YES"/>
<relationship name="game" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Game" inverseName="saveStates" inverseEntity="Game" syncable="YES"/>
<relationship name="previewGame" optional="YES" maxCount="1" deletionRule="Nullify" destinationEntity="Game" inverseName="previewSaveState" inverseEntity="Game" syncable="YES"/>
<uniquenessConstraints>
@ -70,7 +70,7 @@
</entity>
<elements>
<element name="Cheat" positionX="-198" positionY="-63" width="128" height="165"/>
<element name="Game" positionX="-378" positionY="-54" width="128" height="178"/>
<element name="Game" positionX="-378" positionY="-54" width="128" height="180"/>
<element name="GameCollection" positionX="-585" positionY="-27" width="128" height="90"/>
<element name="SaveState" positionX="-198" positionY="113" width="128" height="165"/>
</elements>

View File

@ -37,7 +37,7 @@ extension SaveState
@objc(SaveState)
class SaveState: NSManagedObject, SaveStateType
class SaveState: NSManagedObject, SaveStateProtocol
{
@NSManaged var name: String?
@NSManaged var modifiedDate: Date
@ -63,6 +63,10 @@ class SaveState: NSManagedObject, SaveStateType
let imageFileURL = try! DatabaseManager.saveStatesDirectoryURLForGame(self.game).appendingPathComponent(imageFilename)
return imageFileURL
}
var gameType: GameType {
return self.game.type
}
}
extension SaveState

View File

@ -61,7 +61,7 @@ class GamePickerController: NSObject
let managedObjectContext = DatabaseManager.sharedManager.backgroundManagedObjectContext()
managedObjectContext.perform() {
let gameURLs = contents.filter({ GameCollection.gameSystemCollectionForPathExtension($0.pathExtension, inManagedObjectContext: managedObjectContext).identifier != kUTTypeDeltaGame as String })
let gameURLs = contents.filter({ GameCollection.gameSystemCollectionForPathExtension($0.pathExtension, inManagedObjectContext: managedObjectContext).identifier != GameType.delta.rawValue })
self.importGamesAtURLs(gameURLs)
}

@ -1 +1 @@
Subproject commit 1037b675d20acdd847fe960b426785058f4e83aa
Subproject commit 455a93e44d323c735f3434c31533aa6dc279fdf1

@ -1 +1 @@
Subproject commit d006f2bbe8132eced92d0c54b483e7af5a0bc2a8
Subproject commit 8c461ea12cc28e8781b4299a07452344a86fe072

@ -1 +1 @@
Subproject commit 90e901dea3a177cbd0e602567676c6e2d5296b4c
Subproject commit c414c1d7e4745b4972f3b243aeddd2b07b5e5c39

View File

@ -30,7 +30,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate
semaphore.wait(timeout: DispatchTime.distantFuture)
// Controllers
ExternalControllerManager.sharedManager.startMonitoringExternalControllers()
ExternalControllerManager.shared.startMonitoringExternalControllers()
return true
}

View File

@ -70,13 +70,13 @@ class EmulationViewController: UIViewController
//MARK: - Private Properties
private var pauseViewController: PauseViewController?
private var pausingGameController: GameControllerProtocol?
private var pausingGameController: GameController?
private var context = CIContext(options: [kCIContextWorkingColorSpace: NSNull()])
private var updateSemaphores = Set<DispatchSemaphore>()
private var sustainedInputs = [ObjectIdentifier: [InputType]]()
private var sustainedInputs = [ObjectIdentifier: [Input]]()
private var reactivateSustainInputsQueue: OperationQueue
private var choosingSustainedButtons = false
@ -97,8 +97,8 @@ class EmulationViewController: UIViewController
super.init(coder: aDecoder)
NotificationCenter.default.addObserver(self, selector: #selector(EmulationViewController.updateControllers), name: NSNotification.Name(rawValue: ExternalControllerDidConnectNotification), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(EmulationViewController.updateControllers), name: NSNotification.Name(rawValue: ExternalControllerDidDisconnectNotification), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(EmulationViewController.updateControllers), name: .externalControllerDidConnect, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(EmulationViewController.updateControllers), name: .externalControllerDidDisconnect, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(EmulationViewController.willResignActive(_:)), name: NSNotification.Name.UIApplicationWillResignActive, object: UIApplication.shared())
NotificationCenter.default.addObserver(self, selector: #selector(EmulationViewController.didBecomeActive(_:)), name: NSNotification.Name.UIApplicationDidBecomeActive, object: UIApplication.shared())
@ -107,7 +107,7 @@ class EmulationViewController: UIViewController
deinit
{
// To ensure the emulation stops when cancelling a peek/preview gesture
self.emulatorCore.stopEmulation()
self.emulatorCore.stop()
}
//MARK: - Overrides
@ -124,14 +124,13 @@ class EmulationViewController: UIViewController
self.controllerViewHeightConstraint.constant = 0
self.gameView.backgroundColor = UIColor.clear()
self.emulatorCore.addGameView(self.gameView)
self.emulatorCore.add(self.gameView)
self.backgroundView.textLabel.text = NSLocalizedString("Select Buttons to Sustain", comment: "")
self.backgroundView.detailTextLabel.text = NSLocalizedString("Press the Menu button when finished.", comment: "")
let controllerSkin = ControllerSkin.defaultControllerSkinForGameUTI(self.game.typeIdentifier)
let controllerSkin = ControllerSkin.standardControllerSkin(for: self.game.type)
self.controllerView.containerView = self.view
self.controllerView.controllerSkin = controllerSkin
self.updateControllers()
@ -148,7 +147,7 @@ class EmulationViewController: UIViewController
switch self.emulatorCore.state
{
case .stopped:
self.emulatorCore.startEmulation()
self.emulatorCore.start()
self.updateCheats()
case .running: break
@ -214,7 +213,7 @@ class EmulationViewController: UIViewController
if segue.identifier == "pauseSegue"
{
guard let gameController = sender as? GameControllerProtocol else { fatalError("sender for pauseSegue must be the game controller that pressed the Menu button") }
guard let gameController = sender as? GameController else { fatalError("sender for pauseSegue must be the game controller that pressed the Menu button") }
self.pausingGameController = gameController
@ -250,9 +249,9 @@ class EmulationViewController: UIViewController
sustainButtonsItem.selected = self.sustainedInputs[ObjectIdentifier(gameController)]?.count > 0
var fastForwardItem = PauseItem(image: UIImage(named: "FastForward")!, text: NSLocalizedString("Fast Forward", comment: ""), action: { [unowned self] item in
self.emulatorCore.rate = item.selected ? self.emulatorCore.supportedRates.upperBound : self.emulatorCore.supportedRates.lowerBound
self.emulatorCore.rate = item.selected ? self.emulatorCore.configuration.supportedRates.upperBound : self.emulatorCore.configuration.supportedRates.lowerBound
})
fastForwardItem.selected = self.emulatorCore.rate == self.emulatorCore.supportedRates.lowerBound ? false : true
fastForwardItem.selected = self.emulatorCore.rate == self.emulatorCore.configuration.supportedRates.lowerBound ? false : true
pauseViewController.items = [saveStateItem, loadStateItem, cheatCodesItem, fastForwardItem, sustainButtonsItem]
@ -309,14 +308,14 @@ private extension EmulationViewController
func pauseEmulation() -> Bool
{
return self.emulatorCore.pauseEmulation()
return self.emulatorCore.pause()
}
func resumeEmulation() -> Bool
{
guard !self.choosingSustainedButtons && self.pauseViewController == nil else { return false }
return self.emulatorCore.resumeEmulation()
return self.emulatorCore.resume()
}
func emulatorCoreDidUpdate(_ emulatorCore: EmulatorCore)
@ -341,17 +340,17 @@ private extension EmulationViewController
self.controllerView.playerIndex = index
}
var controllers = [GameControllerProtocol]()
var controllers = [GameController]()
controllers.append(self.controllerView)
// We need to map each item as a GameControllerProtocol due to a Swift bug
controllers.append(contentsOf: ExternalControllerManager.sharedManager.connectedControllers.map { $0 as GameControllerProtocol })
controllers.append(contentsOf: ExternalControllerManager.shared.connectedControllers.map { $0 as GameController })
for controller in controllers
{
if let index = controller.playerIndex
{
self.emulatorCore.setGameController(controller, atIndex: index)
self.emulatorCore.setGameController(controller, at: index)
controller.addReceiver(self)
}
else
@ -385,7 +384,7 @@ private extension EmulationViewController
}
}
func resetSustainedInputs(forGameController gameController: GameControllerProtocol)
func resetSustainedInputs(forGameController gameController: GameController)
{
if let previousInputs = self.sustainedInputs[ObjectIdentifier(gameController)]
{
@ -405,7 +404,7 @@ private extension EmulationViewController
self.sustainedInputs[ObjectIdentifier(gameController)] = []
}
func addSustainedInput(_ input: InputType, gameController: GameControllerProtocol)
func addSustainedInput(_ input: Input, gameController: GameController)
{
var inputs = self.sustainedInputs[ObjectIdentifier(gameController)] ?? []
@ -424,7 +423,7 @@ private extension EmulationViewController
receivers.forEach { gameController.addReceiver($0) }
}
func reactivateSustainedInput(_ input: InputType, gameController: GameControllerProtocol)
func reactivateSustainedInput(_ input: Input, gameController: GameController)
{
// These MUST be performed serially, or else Bad Things Happen if multiple inputs are reactivated at once
self.reactivateSustainInputsQueue.addOperation {
@ -492,7 +491,7 @@ extension EmulationViewController: SaveStatesViewControllerDelegate
var updatingExistingSaveState = true
self.emulatorCore.saveSaveState { temporarySaveState in
self.emulatorCore.save { (temporarySaveState) in
do
{
if FileManager.default.fileExists(atPath: filepath)
@ -528,15 +527,15 @@ extension EmulationViewController: SaveStatesViewControllerDelegate
}
}
func saveStatesViewController(_ saveStatesViewController: SaveStatesViewController, loadSaveState saveState: SaveStateType)
func saveStatesViewController(_ saveStatesViewController: SaveStatesViewController, loadSaveState saveState: SaveStateProtocol)
{
do
{
try self.emulatorCore.loadSaveState(saveState)
try self.emulatorCore.load(saveState)
}
catch EmulatorCore.SaveStateError.doesNotExist
{
print("Save State \(saveState.name) does not exist.")
print("Save State does not exist.")
}
catch let error as NSError
{
@ -560,12 +559,12 @@ extension EmulationViewController: CheatsViewControllerDelegate
func cheatsViewController(_ cheatsViewController: CheatsViewController, didActivateCheat cheat: Cheat) throws
{
try self.emulatorCore.activateCheat(cheat)
try self.emulatorCore.activate(cheat)
}
func cheatsViewController(_ cheatsViewController: CheatsViewController, didDeactivateCheat cheat: Cheat)
{
self.emulatorCore.deactivateCheat(cheat)
self.emulatorCore.deactivate(cheat)
}
private func updateCheats()
@ -590,7 +589,7 @@ extension EmulationViewController: CheatsViewControllerDelegate
{
do
{
try self.emulatorCore.activateCheat(cheat)
try self.emulatorCore.activate(cheat)
}
catch EmulatorCore.CheatError.invalid
{
@ -604,7 +603,7 @@ extension EmulationViewController: CheatsViewControllerDelegate
}
else
{
self.emulatorCore.deactivateCheat(cheat)
self.emulatorCore.deactivate(cheat)
}
}
@ -634,10 +633,10 @@ private extension EmulationViewController
//MARK: - <GameControllerReceiver> -
/// <GameControllerReceiver>
extension EmulationViewController: GameControllerReceiverProtocol
extension EmulationViewController: GameControllerReceiver
{
func gameController(_ gameController: GameControllerProtocol, didActivateInput input: InputType)
{
func gameController(_ gameController: GameController, didActivate input: Input)
{
if gameController is ControllerView && UIDevice.current().isVibrationSupported
{
UIDevice.current().vibrate()
@ -673,7 +672,7 @@ extension EmulationViewController: GameControllerReceiverProtocol
}
}
func gameController(_ gameController: GameControllerProtocol, didDeactivateInput input: InputType)
func gameController(_ gameController: GameController, didDeactivate input: Input)
{
guard let input = input as? ControllerInput else { return }

View File

@ -132,12 +132,12 @@ class GamesViewController: UIViewController
if let saveState = game.previewSaveState
{
destinationViewController.emulatorCore.startEmulation()
destinationViewController.emulatorCore.pauseEmulation()
destinationViewController.emulatorCore.start()
destinationViewController.emulatorCore.pause()
do
{
try destinationViewController.emulatorCore.loadSaveState(saveState)
try destinationViewController.emulatorCore.load(saveState)
}
catch EmulatorCore.SaveStateError.doesNotExist
{

View File

@ -148,7 +148,7 @@ private extension CheatsViewController
{
let editCheatViewController = self.storyboard!.instantiateViewController(withIdentifier: "editCheatViewController") as! EditCheatViewController
editCheatViewController.delegate = self
editCheatViewController.supportedCheatFormats = self.delegate.cheatsViewControllerActiveEmulatorCore(self).supportedCheatFormats
editCheatViewController.supportedCheatFormats = self.delegate.cheatsViewControllerActiveEmulatorCore(self).configuration.supportedCheatFormats
editCheatViewController.cheat = cheat
editCheatViewController.game = self.delegate.cheatsViewControllerActiveEmulatorCore(self).game as! Game

View File

@ -87,7 +87,7 @@ extension EditCheatViewController
name = self.mutableCheat.name
type = self.mutableCheat.type
code = self.mutableCheat.code.sanitized(characterSet: self.selectedCheatFormat.allowedCodeCharacters)
code = self.mutableCheat.code.sanitized(with: self.selectedCheatFormat.allowedCodeCharacters)
}
@ -266,7 +266,7 @@ private extension EditCheatViewController
self.mutableCheat.name = self.nameTextField.text ?? ""
self.mutableCheat.type = self.selectedCheatFormat.type
self.mutableCheat.code = self.codeTextView.text.formatted(cheatFormat: self.selectedCheatFormat)
self.mutableCheat.code = self.codeTextView.text.formatted(with: self.selectedCheatFormat)
do
{
@ -386,7 +386,7 @@ extension EditCheatViewController: UITextViewDelegate
return false
}
let sanitizedText = text.sanitized(characterSet: self.selectedCheatFormat.allowedCodeCharacters)
let sanitizedText = text.sanitized(with: self.selectedCheatFormat.allowedCodeCharacters)
guard sanitizedText != text else { return true }

View File

@ -16,7 +16,7 @@ protocol SaveStatesViewControllerDelegate: class
{
func saveStatesViewControllerActiveEmulatorCore(_ saveStatesViewController: SaveStatesViewController) -> EmulatorCore
func saveStatesViewController(_ saveStatesViewController: SaveStatesViewController, updateSaveState saveState: SaveState)
func saveStatesViewController(_ saveStatesViewController: SaveStatesViewController, loadSaveState saveState: SaveStateType)
func saveStatesViewController(_ saveStatesViewController: SaveStatesViewController, loadSaveState saveState: SaveStateProtocol)
}
extension SaveStatesViewController
@ -56,7 +56,7 @@ class SaveStatesViewController: UICollectionViewController
private let imageOperationQueue = RSTOperationQueue()
private let imageCache = Cache<NSURL, UIImage>()
private var currentGameState: SaveStateType?
private var currentGameState: SaveStateProtocol?
private var selectedSaveState: SaveState?
private let dateFormatter: DateFormatter
@ -275,8 +275,8 @@ private extension SaveStatesViewController
if emulatorCore.state == .stopped
{
emulatorCore.startEmulation()
emulatorCore.pauseEmulation()
emulatorCore.start()
emulatorCore.pause()
}
self.delegate?.saveStatesViewController(self, loadSaveState: saveState)
@ -425,16 +425,16 @@ private extension SaveStatesViewController
emulatorCore.videoManager.enabled = false
// Load the save state we stored a reference to
emulatorCore.startEmulation()
emulatorCore.pauseEmulation()
emulatorCore.start()
emulatorCore.pause()
do
{
try emulatorCore.loadSaveState(saveState)
try emulatorCore.load(saveState)
}
catch EmulatorCore.SaveStateError.doesNotExist
{
print("Save State \(saveState.name) does not exist.")
print("Save State does not exist.")
}
catch let error as NSError
{
@ -533,7 +533,7 @@ extension SaveStatesViewController: UIViewControllerPreviewingDelegate
// Store reference to current game state before we stop emulation so we can resume it if user decides to not load a save state
if self.currentGameState == nil
{
emulatorCore.saveSaveState() { saveState in
emulatorCore.save() { saveState in
let fileURL = FileManager.uniqueTemporaryURL()
@ -546,18 +546,18 @@ extension SaveStatesViewController: UIViewControllerPreviewingDelegate
print(error)
}
self.currentGameState = DeltaCore.SaveState(name: nil, fileURL: fileURL)
self.currentGameState = DeltaCore.SaveState(fileURL: fileURL, gameType: emulatorCore.game.type)
}
}
emulatorCore.stopEmulation()
emulatorCore.stop()
emulationViewController.emulatorCore.startEmulation()
emulationViewController.emulatorCore.pauseEmulation()
emulationViewController.emulatorCore.start()
emulationViewController.emulatorCore.pause()
do
{
try emulationViewController.emulatorCore.loadSaveState(saveState)
try emulationViewController.emulatorCore.load(saveState)
}
catch EmulatorCore.SaveStateError.doesNotExist
{
@ -576,17 +576,17 @@ extension SaveStatesViewController: UIViewControllerPreviewingDelegate
{
let emulationViewController = viewControllerToCommit as! EmulationViewController
emulationViewController.emulatorCore.pauseEmulation()
emulationViewController.emulatorCore.saveSaveState() { saveState in
emulationViewController.emulatorCore.pause()
emulationViewController.emulatorCore.save() { saveState in
emulationViewController.emulatorCore.stopEmulation()
emulationViewController.emulatorCore.stop()
let emulatorCore = self.delegate.saveStatesViewControllerActiveEmulatorCore(self)
emulatorCore.audioManager.stop()
emulatorCore.startEmulation()
emulatorCore.pauseEmulation()
emulatorCore.start()
emulatorCore.pause()
self.delegate.saveStatesViewController(self, loadSaveState: saveState)

View File

@ -39,7 +39,7 @@ class ControllersSettingsViewController: UITableViewController
}
}
private var connectedControllers = ExternalControllerManager.sharedManager.connectedControllers.sorted(isOrderedBefore: { $0.playerIndex ?? NSIntegerMax < $1.playerIndex ?? NSIntegerMax })
private var connectedControllers = ExternalControllerManager.shared.connectedControllers.sorted(isOrderedBefore: { $0.playerIndex ?? NSIntegerMax < $1.playerIndex ?? NSIntegerMax })
private lazy var localDeviceController: LocalDeviceController = {
let device = LocalDeviceController()
@ -52,8 +52,8 @@ class ControllersSettingsViewController: UITableViewController
{
super.init(coder: aDecoder)
NotificationCenter.default.addObserver(self, selector: #selector(ControllersSettingsViewController.externalControllerDidConnect(_:)), name: NSNotification.Name(rawValue: ExternalControllerDidConnectNotification), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(ControllersSettingsViewController.externalControllerDidDisconnect(_:)), name: NSNotification.Name(rawValue: ExternalControllerDidDisconnectNotification), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(ControllersSettingsViewController.externalControllerDidConnect(_:)), name: .externalControllerDidConnect, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(ControllersSettingsViewController.externalControllerDidDisconnect(_:)), name: .externalControllerDidDisconnect, object: nil)
}
override func viewDidLoad()

View File

@ -25,8 +25,8 @@ class SettingsViewController: UITableViewController
{
super.init(coder: aDecoder)
NotificationCenter.default.addObserver(self, selector: #selector(SettingsViewController.externalControllerDidConnect(_:)), name: NSNotification.Name(rawValue: ExternalControllerDidConnectNotification), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(SettingsViewController.externalControllerDidDisconnect(_:)), name: NSNotification.Name(rawValue: ExternalControllerDidDisconnectNotification), object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(SettingsViewController.externalControllerDidConnect(_:)), name: .externalControllerDidConnect, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(SettingsViewController.externalControllerDidDisconnect(_:)), name: .externalControllerDidDisconnect, object: nil)
}
override func viewDidLoad()
@ -96,9 +96,9 @@ extension SettingsViewController
{
cell.detailTextLabel?.text = UIDevice.current().name
}
else if let index = ExternalControllerManager.sharedManager.connectedControllers.index(where: { $0.playerIndex == (indexPath as NSIndexPath).row })
else if let index = ExternalControllerManager.shared.connectedControllers.index(where: { $0.playerIndex == (indexPath as NSIndexPath).row })
{
let controller = ExternalControllerManager.sharedManager.connectedControllers[index]
let controller = ExternalControllerManager.shared.connectedControllers[index]
cell.detailTextLabel?.text = controller.name
}
else

2
External/Roxas vendored

@ -1 +1 @@
Subproject commit 17cc7b771ca819cdad14c05ee9cd0529d5df1c91
Subproject commit 402032d5d73916f8079aa91a0e325a6878a2124d