GBA002/Delta/Database/Model/Migrations/Policies/SaveStateMigrationPolicy.swift
Riley Testut 01320b4dec Adds SaveState.coreIdentifier to filter out save states from other cores
Prevents DeSmuME save states from appearing while using melonDS core and vice versa.
2020-04-23 17:24:04 -07:00

46 lines
1.2 KiB
Swift

//
// SaveStateMigrationPolicy.swift
// Delta
//
// Created by Riley Testut on 9/28/17.
// Copyright © 2017 Riley Testut. All rights reserved.
//
import UIKit
import DeltaCore
import struct DSDeltaCore.DS
@objc(SaveStateToSaveStateMigrationPolicy)
class SaveStateToSaveStateMigrationPolicy: NSEntityMigrationPolicy
{
@objc(migrateSaveStateType:)
func migrateSaveStateType(_ rawValue: NSNumber) -> NSNumber
{
switch rawValue.intValue
{
case 0: return NSNumber(value: SaveStateType.auto.rawValue)
case 1: return NSNumber(value: SaveStateType.general.rawValue)
case 2: return NSNumber(value: SaveStateType.locked.rawValue)
default: return rawValue
}
}
}
// Delta5 to Delta6
extension SaveStateToSaveStateMigrationPolicy
{
@objc(defaultCoreIdentifierForGameType:)
func defaultCoreIdentifier(for gameType: GameType) -> String?
{
guard let system = System(gameType: gameType) else { return nil }
switch system
{
case .ds: return DS.core.identifier // Assume any existing save state is from DeSmuME.
default: return system.deltaCore.identifier
}
}
}