2 // HMKCShipObject.swift
5 // Created by Hori,Masaki on 2014/12/31.
6 // Copyright (c) 2014年 Hori,Masaki. All rights reserved.
12 var sShortSTypeNames: [String]?
13 var sLevelUpExps: [NSNumber]?
15 extension HMKCShipObject
17 override class func keyPathsForValuesAffectingValueForKey(key: String) -> NSSet {
20 return NSSet(array: ["nowhp", "maxph"])
21 case "conditionColor":
22 return NSSet(array: ["cond"])
24 return NSSet(array: ["ship_id"])
26 return NSSet(array: ["ship_id"])
32 var shortSTypeNames: [String] {
33 if sShortSTypeNames != nil { return sShortSTypeNames! }
34 if let url = NSBundle.mainBundle().URLForResource("STypeShortName", withExtension: "plist") {
35 if let array = NSArray(contentsOfURL: url) as? [String] {
36 sShortSTypeNames = array
38 println("Can not load STypeShortName.plist.")
41 return sShortSTypeNames!
43 var levelUpExps: [NSNumber] {
44 if sLevelUpExps != nil { return sLevelUpExps! }
45 if let url = NSBundle.mainBundle().URLForResource("LevelUpExp", withExtension: "plist") {
46 if let array = NSArray(contentsOfURL: url) as? [Int] {
49 println("Can not load LevelUpExp.plist.")
57 willAccessValueForKey("master_ship")
58 let name = master_ship?.name
59 didAccessValueForKey("master_ship")
62 var shortTypeName: String? {
63 willAccessValueForKey("master_ship")
64 let idValue = master_ship?.stype.valueForKey("id") as? NSNumber
65 didAccessValueForKey("master_ship")
66 if idValue == nil { return nil }
67 let id = idValue!.integerValue
68 if shortSTypeNames.count < id { return nil }
69 return shortSTypeNames[id - 1]
72 willAccessValueForKey("lv")
74 didAccessValueForKey("lv")
75 willAccessValueForKey("exp")
77 didAccessValueForKey("exp")
79 let currentLevel = lv.integerValue
80 if currentLevel >= levelUpExps.count { return nil }
81 if currentLevel == 99 { return nil }
83 var nextExp = levelUpExps[currentLevel].integerValue
84 if currentLevel > 99 {
87 return nextExp - exp.integerValue
90 var statusColor: NSColor {
91 willAccessValueForKey("maxhp")
92 let maxhp = self.maxhp.doubleValue
93 didAccessValueForKey("maxhp")
94 willAccessValueForKey("nowhp")
95 let nowhp = self.nowhp.doubleValue
96 didAccessValueForKey("nowhp")
98 let status = nowhp / maxhp
100 return NSColor.redColor()
103 return NSColor.orangeColor()
106 return NSColor.yellowColor()
108 return NSColor.controlTextColor()
110 var conditionColor: NSColor {
111 return NSColor.controlTextColor()
113 var planColor: NSColor {
114 if !HMUserDefaults.hmStandardDefauls().showsPlanColor {
115 return NSColor.controlTextColor()
117 willAccessValueForKey("sally_area")
118 let planType = sally_area?.integerValue
119 didAccessValueForKey("sally_area")
120 if planType == nil { return NSColor.controlTextColor() }
123 return HMUserDefaults.hmStandardDefauls().plan01Color
125 return HMUserDefaults.hmStandardDefauls().plan02Color
127 return HMUserDefaults.hmStandardDefauls().plan03Color
129 return NSColor.controlTextColor()
132 var maxFuel: NSNumber? {
133 willAccessValueForKey("master_ship")
134 let number = master_ship?.fuel_max
135 didAccessValueForKey("master_ship")
138 var maxBull: NSNumber? {
139 willAccessValueForKey("master_ship")
140 let number = master_ship?.bull_max
141 didAccessValueForKey("master_ship")
144 var upgradeLevel: NSNumber? {
145 willAccessValueForKey("master_ship")
146 let number = master_ship?.afterlv
147 didAccessValueForKey("master_ship")
150 var upgradeExp: NSNumber? {
151 let upgradeLevel = self.upgradeLevel?.integerValue
152 if upgradeLevel == nil || upgradeLevel! <= 0 { return nil }
154 var upgradeExp = levelUpExps[upgradeLevel! - 1].integerValue
155 upgradeExp = upgradeExp - exp.integerValue
156 if upgradeExp < 0 { upgradeExp = 0 }
160 var isMaxKaryoku: NSNumber {
161 willAccessValueForKey("master_ship")
162 let defaultValue = master_ship?.houg_0?.integerValue
163 didAccessValueForKey("master_ship")
164 willAccessValueForKey("karyoku_1")
165 let maxValue = karyoku_1?.integerValue
166 didAccessValueForKey("karyoku_1")
167 willAccessValueForKey("kyouka_0")
168 let growth = kyouka_0?.integerValue
169 didAccessValueForKey("kyouka_0")
170 if defaultValue == nil || maxValue == nil || growth == nil { return 0 }
172 return defaultValue! + growth! >= maxValue!
174 var isMaxRaisou: NSNumber {
175 willAccessValueForKey("master_ship")
176 let defaultValue = master_ship?.raig_0?.integerValue
177 didAccessValueForKey("master_ship")
178 willAccessValueForKey("raisou_1")
179 let maxValue = raisou_1?.integerValue
180 didAccessValueForKey("raisou_1")
181 willAccessValueForKey("kyouka_1")
182 let growth = kyouka_1?.integerValue
183 didAccessValueForKey("kyouka_1")
184 if defaultValue == nil || maxValue == nil || growth == nil { return 0 }
186 return defaultValue! + growth! >= maxValue!
188 var isMaxTaiku: NSNumber {
189 willAccessValueForKey("master_ship")
190 let defaultValue = master_ship?.tyku_0?.integerValue
191 didAccessValueForKey("master_ship")
192 willAccessValueForKey("taiku_1")
193 let maxValue = taiku_1?.integerValue
194 didAccessValueForKey("taiku_1")
195 willAccessValueForKey("kyouka_2")
196 let growth = kyouka_2?.integerValue
197 didAccessValueForKey("kyouka_2")
198 if defaultValue == nil || maxValue == nil || growth == nil { return 0 }
200 return defaultValue! + growth! >= maxValue!
202 var isMaxSoukou: NSNumber {
203 willAccessValueForKey("master_ship")
204 let defaultValue = master_ship?.souk_0?.integerValue
205 didAccessValueForKey("master_ship")
206 willAccessValueForKey("soukou_1")
207 let maxValue = soukou_1?.integerValue
208 didAccessValueForKey("soukou_1")
209 willAccessValueForKey("kyouka_3")
210 let growth = kyouka_3?.integerValue
211 didAccessValueForKey("kyouka_3")
212 if defaultValue == nil || maxValue == nil || growth == nil { return 0 }
214 return defaultValue! + growth! >= maxValue!
216 var isMaxLucky: NSNumber {
217 willAccessValueForKey("master_ship")
218 let defaultValue = master_ship?.luck_0?.integerValue
219 didAccessValueForKey("master_ship")
220 willAccessValueForKey("lucky_1")
221 let maxValue = lucky_1?.integerValue
222 didAccessValueForKey("lucky_1")
223 willAccessValueForKey("kyouka_4")
224 let growth = kyouka_4?.integerValue
225 didAccessValueForKey("kyouka_4")
226 if defaultValue == nil || maxValue == nil || growth == nil { return 0 }
228 return defaultValue! + growth! >= maxValue!