OSDN Git Service

swiftlint用のコメントを修正
[kcd/KCD.git] / KCD / Deck.swift
1 //
2 //  KCDeck.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/01/29.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 // swiftlint:disable variable_name
12 class Deck: KCManagedObject {
13     @NSManaged var flagship: NSNumber?
14     @NSManaged var id: Int
15     @NSManaged var member_id: NSNumber?
16     @NSManaged var mission_0: Int
17     @NSManaged var mission_1: Int
18     @NSManaged var mission_2: Int
19     @NSManaged var mission_3: Int
20     @NSManaged var name: String
21     @NSManaged var name_id: NSNumber?
22     @NSManaged var ship_0: Int
23     @NSManaged var ship_1: Int
24     @NSManaged var ship_2: Int
25     @NSManaged var ship_3: Int
26     @NSManaged var ship_4: Int
27     @NSManaged var ship_5: Int
28 }
29 // swiftlint:eable variable_name
30
31 extension Deck {
32     func setShip(id: Int, for position: Int) {
33         switch position {
34         case 0: return ship_0 = id
35         case 1: return ship_1 = id
36         case 2: return ship_2 = id
37         case 3: return ship_3 = id
38         case 4: return ship_4 = id
39         case 5: return ship_5 = id
40         default: fatalError("Deck.setShip: position out of range.")
41         }
42     }
43     func shipId(of position: Int) -> Int? {
44         switch position {
45         case 0: return ship_0
46         case 1: return ship_1
47         case 2: return ship_2
48         case 3: return ship_3
49         case 4: return ship_4
50         case 5: return ship_5
51         default: return nil
52         }
53     }
54     private func ship(ofId identifier: Int) -> Ship? {
55         guard let moc = self.managedObjectContext else { return nil }
56         let req = NSFetchRequest<Ship>(entityName: "Ship")
57         req.predicate = NSPredicate(format: "id = %ld", identifier)
58         guard let ships = try? moc.fetch(req),
59             let ship = ships.first
60             else { return nil }
61         return ship as Ship
62     }
63     
64     subscript(_ index: Int) -> Ship? {
65         guard let shipId = shipId(of: index) else { return nil }
66         return ship(ofId: shipId)
67     }
68 }