OSDN Git Service

[FIX] 泊地修理に関するバグを修正
authormasakih <masakih@users.sourceforge.jp>
Sun, 19 Mar 2017 12:11:32 +0000 (21:11 +0900)
committermasakih <masakih@users.sourceforge.jp>
Sun, 19 Mar 2017 12:11:32 +0000 (21:11 +0900)
時間のリセットが正しく行われない問題を修正
艦隊ビューの泊地修理時間の表示が正しく行われない問題を修正

close #37086

KCD/AnchorageRepairManager.swift
KCD/FleetViewController.swift

index d08c84f..8f24df1 100644 (file)
@@ -44,7 +44,7 @@ class AnchorageRepairManager: NSObject {
     }
     private func shipTypeId(fleetNumber: Int, position: Int) -> Int? {
         guard 1...4 ~= fleetNumber,
-            1...6 ~= position
+             0...5 ~= position
             else { return nil }
         let ship = fleetManager.fleets[fleetNumber - 1][position]
         return ship?.master_ship.stype.id
@@ -68,17 +68,28 @@ class AnchorageRepairManager: NSObject {
         
         // 変更のあった艦娘は工作艦か?
         //     旗艦から外れたか?
-        if info.type == .remove || info.type == .append,
+        // 入れ替えた結果、工作艦が旗艦になったか?
+        if info.type == .remove || info.type == .append || info.type == .replace,
+            info.position == 0,
             let shipType = shipTypeId(shipId: info.shipID),
             repairShipTypeIds.contains(shipType) {
-            return info.position == 0
+            return true
         }
         if info.type == .replace,
+            let replacePos = info.replacePosition,
+            replacePos == 0,
             let shipId = info.replaceShipID,
             let shipType = shipTypeId(shipId: shipId),
-            repairShipTypeIds.contains(shipType),
-            let replacePos = info.replacePosition {
-            return replacePos == 0
+            repairShipTypeIds.contains(shipType) {
+            return true
+        }
+        
+        // 旗艦が外された結果、工作艦が旗艦になったか?
+        if info.type == .remove,
+            info.position == 0,
+            let shipType = shipTypeId(fleetNumber: info.fleetNumber, position: 1),
+            repairShipTypeIds.contains(shipType) {
+            return true
         }
         
         return false
index dd72b57..2df45c4 100644 (file)
@@ -236,6 +236,7 @@ class FleetViewController: NSViewController {
             .appended { "totalCalclatedSeiku" }
             .appended { "totalLevel" }
             .appended { "totalDrums" }
+            .appended { "repairable" }
             .forEach {
                 willChangeValue(forKey: $0)
                 didChangeValue(forKey: $0)
@@ -274,9 +275,6 @@ extension FleetViewController {
             self.repairTime = self.calcRepairTime()
         }
     }
-    class func keyPathsForValuesAffectingRepairTime() -> Set<String> {
-        return ["fleet"]
-    }
     private func calcRepairTime() -> NSNumber? {
         let time = anchorageRepair.repairTime
         let complete = time.timeIntervalSince1970
@@ -285,10 +283,7 @@ extension FleetViewController {
         return NSNumber(value: diff + 20.0 * 60)
     }
     private var repairShipIds: [Int] { return [19] }
-    class func keyPathsForValuesAffectingRepairable() -> Set<String> {
-        return ["fleet", "ships"]
-    }
-    var repairable: Bool {
+    dynamic var repairable: Bool {
         guard let flagShip = fleet?[0]
             else { return false }
         return repairShipIds.contains(flagShip.master_ship.stype.id)