GBA001/Delta/Database/Model/Human/SaveState.swift
Riley Testut 93119b4714 Reorganizes Xcode project structure
Merges “Common” folder into main Delta target folder
2016-12-20 18:24:43 -06:00

76 lines
2.0 KiB
Swift

//
// SaveState.swift
// Delta
//
// Created by Riley Testut on 1/31/16.
// Copyright © 2016 Riley Testut. All rights reserved.
//
import Foundation
import DeltaCore
@objc public enum SaveStateType: Int16
{
case auto
case general
case locked
}
@objc(SaveState)
public class SaveState: _SaveState, SaveStateProtocol
{
public var fileURL: URL {
let fileURL = DatabaseManager.saveStatesDirectoryURL(for: self.game!).appendingPathComponent(self.filename)
return fileURL
}
public var imageFileURL: URL {
let imageFilename = (self.filename as NSString).deletingPathExtension + ".png"
let imageFileURL = DatabaseManager.saveStatesDirectoryURL(for: self.game!).appendingPathComponent(imageFilename)
return imageFileURL
}
public var gameType: GameType {
return self.game!.type
}
@NSManaged private var primitiveFilename: String
@NSManaged private var primitiveIdentifier: String
@NSManaged private var primitiveCreationDate: Date
@NSManaged private var primitiveModifiedDate: Date
public override func awakeFromInsert()
{
super.awakeFromInsert()
let identifier = UUID().uuidString
let date = Date()
self.primitiveIdentifier = identifier
self.primitiveFilename = identifier
self.primitiveCreationDate = date
self.primitiveModifiedDate = date
}
public override func prepareForDeletion()
{
super.prepareForDeletion()
// In rare cases, game may actually be nil if game is corrupted, so we ensure it is non-nil first
guard self.game != nil else { return }
guard FileManager.default.fileExists(atPath: self.fileURL.path) else { return }
do
{
try FileManager.default.removeItem(at: self.fileURL)
try FileManager.default.removeItem(at: self.imageFileURL)
}
catch
{
print(error)
}
}
}