OSDN Git Service

洋上補給の補強増設用のショートネームをつけた
[kcd/KCD.git] / KCD / StrengthenListItemCellView.swift
1 //
2 //  StrengthenListItemCellView.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/01/02.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 final class StrengthenListItemCellView: NSTableCellView {
12     
13     @objc override class func keyPathsForValuesAffectingValue(forKey key: String) -> Set<String> {
14         
15         switch key {
16             
17         case #keyPath(secondsShipList),
18              #keyPath(requiredEquipment01), #keyPath(requiredEquipment02), #keyPath(requiredEquipment03),
19              #keyPath(targetEquipment), #keyPath(remodelEquipment),
20              #keyPath(needsScrewString01), #keyPath(needsScrewString02), #keyPath(needsScrewString03):
21             
22             return [#keyPath(objectValue)]
23             
24         default: return []
25         }
26     }
27     
28     private var item: StrengthenListEnhancementItem? {
29         
30         return objectValue as? StrengthenListEnhancementItem
31     }
32     
33     @objc var secondsShipList: String? {
34         
35         return item?.secondsShipNames.joined(separator: ", ")
36     }
37     
38     @objc var requiredEquipment01: RequiredEquipment? {
39         
40         return item?.requiredEquipments.requiredEquipments.first
41     }
42     
43     @objc var requiredEquipment02: RequiredEquipment? {
44         
45         guard let req = item?.requiredEquipments.requiredEquipments, req.count > 1 else { return nil }
46         
47         return req[1]
48     }
49     
50     @objc var requiredEquipment03: RequiredEquipment? {
51         
52         guard let req = item?.requiredEquipments.requiredEquipments, req.count > 2 else { return nil }
53         
54         return req[2]
55     }
56     
57     @objc var targetEquipment: String? {
58         return item?.targetEquipment
59     }
60     
61     @objc var remodelEquipment: String? {
62         
63         return item?.remodelEquipment
64     }
65     
66     @objc var needsScrewString01: String? {
67         
68         return needsScrewString(screw: requiredEquipment01?.screw, ensureScrew: requiredEquipment01?.ensureScrew)
69     }
70     
71     @objc var needsScrewString02: String? {
72         
73         return needsScrewString(screw: requiredEquipment02?.screw, ensureScrew: requiredEquipment02?.ensureScrew)
74     }
75     
76     @objc var needsScrewString03: String? {
77         
78         return needsScrewString(screw: requiredEquipment03?.screw, ensureScrew: requiredEquipment03?.ensureScrew)
79     }
80     
81     private func needsScrewString(screw: Int?, ensureScrew: Int?) -> String? {
82         
83         guard let screw = screw else { return nil }
84         guard let ensureScrew = ensureScrew else { return nil }
85         guard ensureScrew != 0 else { return nil }
86         
87         let screwString = (screw == -1) ? "-" : "\(screw)"
88         let ensureScrewString = (ensureScrew == -1) ? "-" : "\(ensureScrew)"
89         
90         return "\(screwString)/\(ensureScrewString)"
91     }
92 }
93
94 extension StrengthenListItemCellView: StrengthenListCellType {
95     
96     static var cellIdentifier: NSUserInterfaceItemIdentifier {
97         
98         return NSUserInterfaceItemIdentifier("ItemCell")
99     }
100     
101     static func estimateCellHeightForItem(item: StrengthenListItem, tableView: NSTableView) -> CGFloat {
102         
103         return 103.0
104     }
105 }