OSDN Git Service

return文の前に改行を入れるようにした
[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 identifier_name
12 final class Deck: KCManagedObject {
13     
14     @NSManaged var flagship: NSNumber?
15     @NSManaged var id: Int
16     @NSManaged var member_id: NSNumber?
17     @NSManaged var mission_0: Int
18     @NSManaged var mission_1: Int
19     @NSManaged var mission_2: Int
20     @NSManaged var mission_3: Int
21     @NSManaged var name: String
22     @NSManaged var name_id: NSNumber?
23     @NSManaged var ship_0: Int
24     @NSManaged var ship_1: Int
25     @NSManaged var ship_2: Int
26     @NSManaged var ship_3: Int
27     @NSManaged var ship_4: Int
28     @NSManaged var ship_5: Int
29     @NSManaged var ship_6: Int
30 }
31 // swiftlint:eable identifier_name
32
33 extension Deck {
34     
35     static var maxShipCount: Int = 7
36     
37     func setShip(id: Int, for position: Int) {
38         
39         switch position {
40             
41         case 0: ship_0 = id
42             
43         case 1: ship_1 = id
44             
45         case 2: ship_2 = id
46             
47         case 3: ship_3 = id
48             
49         case 4: ship_4 = id
50             
51         case 5: ship_5 = id
52             
53         case 6: ship_6 = id
54             
55         default: break // fatalError("Deck.setShip: position out of range.")
56             
57         }
58     }
59     
60     func shipId(of position: Int) -> Int? {
61         
62         switch position {
63             
64         case 0: return ship_0
65             
66         case 1: return ship_1
67             
68         case 2: return ship_2
69             
70         case 3: return ship_3
71             
72         case 4: return ship_4
73             
74         case 5: return ship_5
75             
76         case 6: return ship_6
77             
78         default: return nil
79             
80         }
81     }
82     
83     private func ship(ofId identifier: Int) -> Ship? {
84         
85         guard let moc = self.managedObjectContext else {
86             
87             return nil
88         }
89         
90         let req = NSFetchRequest<Ship>(entityName: Ship.entityName)
91         req.predicate = NSPredicate(#keyPath(Ship.id), equal: identifier)
92         
93         guard let ships = try? moc.fetch(req) else {
94             
95             return nil
96         }
97         
98         return ships.first
99     }
100     
101     subscript(_ index: Int) -> Ship? {
102         
103         guard let shipId = shipId(of: index) else {
104             
105             return nil
106         }
107         
108         return ship(ofId: shipId)
109     }
110     
111     subscript(_ range: CountableClosedRange<Int>) -> [Ship] {
112         
113         return range.compactMap { self[$0] }
114     }
115     
116     subscript(_ range: CountableRange<Int>) -> [Ship] {
117         
118         return range.compactMap { self[$0] }
119     }
120 }