OSDN Git Service

データがない状態で起動した時に艦隊が反映されない問題を修正
authormasakih <masakih@users.sourceforge.jp>
Sun, 29 Oct 2017 06:11:29 +0000 (15:11 +0900)
committermasakih <masakih@users.sourceforge.jp>
Sun, 29 Oct 2017 06:11:29 +0000 (15:11 +0900)
KCD.xcodeproj/project.pbxproj
KCD/Fleet.swift
KCD/FleetManager.swift
KCD/FleetViewController.swift
KCD/ShipMasterDetailWindowController.swift

index 221b22c..351910e 100644 (file)
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+               F455DDC41FA4C81C00CDE64D /* Mics */ = {
+                       isa = PBXGroup;
+                       children = (
+                               F45771221E1BCC7C008A9215 /* PeriodicNotifier.swift */,
+                               F47215A11E1F38280083D3BC /* Queue.swift */,
+                               F491A4BB1E4B523C00D1E067 /* ApplicationDirecrories.swift */,
+                               F455DDC01FA4A6CD00CDE64D /* Logger.swift */,
+                               F455DDC21FA4A9E400CDE64D /* LoggerExtension.swift */,
+                               F40F976E1E67092600AE81BB /* ArrayExtensions.swift */,
+                               F404AF561F2CDD1C00A006B8 /* DefaultKey.swift */,
+                               F404AF611F2D8CAE00A006B8 /* DefaultKeys.swift */,
+                               F48883461F2E2E9A0069E0C3 /* DefaultKeyExtendedValues.swift */,
+                               F48883441F2E095F0069E0C3 /* DefaultSettings.swift */,
+                               F46FEA3E1F81285D00E2427C /* Localizable.swift */,
+                               F46FEA401F8128BB00E2427C /* LocalizedStrings.swift */,
+                               F40F97701E68536400AE81BB /* FileManagerExtension.swift */,
+                               F44AA26A1E82AD2E00EED8BE /* NSObjectExtension.swift */,
+                               F4AF56851F7F6EF8004F4F4E /* NSNibExtension.swift */,
+                               F4AF56841F7F6EF8004F4F4E /* NSUserInterfaceItemIdentifierExtension.swift */,
+                               F4CC5C081F88DBD50006B3FA /* NSPredicateExtension.swift */,
+                       );
+                       name = Mics;
+                       sourceTree = "<group>";
+               };
+               F455DDC51FA4C8F900CDE64D /* DeckBuilder */ = {
+                       isa = PBXGroup;
+                       children = (
+                               F4EE4AD71F18F43700AD92B4 /* DeckBuilderStructure.swift */,
+                               F4EE4AD91F18F66A00AD92B4 /* DeckBuilder.swift */,
+                       );
+                       name = DeckBuilder;
+                       sourceTree = "<group>";
+               };
                F45F3BDC1E0575170009434E /* TouchBar */ = {
                        isa = PBXGroup;
                        children = (
                        children = (
                                F4FC3E931E44A5D600E41228 /* AppDelegate.swift */,
                                F47B06DC1E97ECD4006711D9 /* WindowManager.swift */,
-                               F491A4BB1E4B523C00D1E067 /* ApplicationDirecrories.swift */,
-                               F455DDC01FA4A6CD00CDE64D /* Logger.swift */,
-                               F455DDC21FA4A9E400CDE64D /* LoggerExtension.swift */,
-                               F44AA26A1E82AD2E00EED8BE /* NSObjectExtension.swift */,
-                               F4AF56851F7F6EF8004F4F4E /* NSNibExtension.swift */,
-                               F4AF56841F7F6EF8004F4F4E /* NSUserInterfaceItemIdentifierExtension.swift */,
-                               F4CC5C081F88DBD50006B3FA /* NSPredicateExtension.swift */,
-                               F40F976E1E67092600AE81BB /* ArrayExtensions.swift */,
-                               F40F97701E68536400AE81BB /* FileManagerExtension.swift */,
                                F4AF56801F7BF0CF004F4F4E /* IntConvertable.swift */,
-                               F404AF561F2CDD1C00A006B8 /* DefaultKey.swift */,
-                               F48883461F2E2E9A0069E0C3 /* DefaultKeyExtendedValues.swift */,
-                               F404AF611F2D8CAE00A006B8 /* DefaultKeys.swift */,
-                               F48883441F2E095F0069E0C3 /* DefaultSettings.swift */,
-                               F46FEA3E1F81285D00E2427C /* Localizable.swift */,
-                               F46FEA401F8128BB00E2427C /* LocalizedStrings.swift */,
-                               F44775881EF6AAD900287572 /* SakutekiCalculator.swift */,
-                               F41A451A1F4917640066F83D /* SeikuCalclator.swift */,
-                               F4BBA21E1F243CA900E68743 /* DamageCalculator.swift */,
-                               F429FAAD1F619927006299ED /* TPValueCalculator.swift */,
                                F429FAAF1F62D769006299ED /* ShipType.swift */,
                                F42546911EF8002E00BE297E /* EquitType.swift */,
-                               F4EE4AD71F18F43700AD92B4 /* DeckBuilderStructure.swift */,
-                               F4EE4AD91F18F66A00AD92B4 /* DeckBuilder.swift */,
+                               F455DDC41FA4C81C00CDE64D /* Mics */,
                                F4BEEFE21B0CD39B004702B8 /* Transformar&Formatter */,
                                F4C118F318A67B05005D5B25 /* CustomHTTPProtocol */,
-                               F47215A11E1F38280083D3BC /* Queue.swift */,
                                F4FC3E8F1E437E1F00E41228 /* JSONReciever.swift */,
                                F4CF25A91E338ED000C02A66 /* JSONTracker.swift */,
                                F4CF25A71E325ABA00C02A66 /* APIResponse.swift */,
                                F4CF25BF1E36428400C02A66 /* MissionStatus.swift */,
                                F4CF25BD1E361F4600C02A66 /* NyukyoDockStatus.swift */,
+                               F44775881EF6AAD900287572 /* SakutekiCalculator.swift */,
+                               F41A451A1F4917640066F83D /* SeikuCalclator.swift */,
+                               F4BBA21E1F243CA900E68743 /* DamageCalculator.swift */,
+                               F429FAAD1F619927006299ED /* TPValueCalculator.swift */,
                                F4CF25BB1E34F67400C02A66 /* KenzoDockStatus.swift */,
                                F4CF25B91E34EB6600C02A66 /* BookmarkManager.swift */,
-                               F45771221E1BCC7C008A9215 /* PeriodicNotifier.swift */,
                                F4CF25B51E34BAD500C02A66 /* AnchorageRepairManager.swift */,
                                F4CF25B31E34A38F00C02A66 /* ResourceHistoryManager.swift */,
                                F4CF25AF1E3455EA00C02A66 /* Fleet.swift */,
                                F4CF25B11E34799400C02A66 /* FleetManager.swift */,
                                F45F3BE01E067A870009434E /* HistoryItemCleaner.swift */,
                                F4CF25AB1E33AB4400C02A66 /* TimeSignalNotifier.swift */,
-                               F45F3BDC1E0575170009434E /* TouchBar */,
+                               F4BEEEA818D88FF30006F70C /* CoreData */,
                                F47C3EBF1E62A4C800D97449 /* JSONMapper */,
                                F4D2CBBF18ACE7D7000EBC59 /* Command */,
                                F4BEEEA918D890660006F70C /* UI */,
-                               F4BEEEA818D88FF30006F70C /* CoreData */,
+                               F45F3BDC1E0575170009434E /* TouchBar */,
+                               F455DDC51FA4C8F900CDE64D /* DeckBuilder */,
                                F4BDEB4D187252F30069D0CE /* Supporting Files */,
                                F45F3BDD1E0679D80009434E /* KCD-Bridging-Header.h */,
                        );
index 390b72a..3b33413 100644 (file)
@@ -48,7 +48,6 @@ final class Fleet: NSObject {
             
             Logger.shared.log("Fetch error")
             return nil
-            
         }
         
         deck = deckController.content as? Deck
@@ -58,7 +57,6 @@ final class Fleet: NSObject {
     deinit {
         
         deckObserveKeys.forEach { deckController.removeObserver(self, forKeyPath: $0) }
-        
     }
     
     @objc override class func keyPathsForValuesAffectingValue(forKey key: String) -> Set<String> {
@@ -85,7 +83,7 @@ final class Fleet: NSObject {
         
         if context == &pDeckContext {
             
-            ships = (0..<6).flatMap { return self[$0] }
+            ships = (0..<6).flatMap { self[$0] }
             
             return
         }
index 64c8073..bd01c19 100644 (file)
@@ -8,11 +8,6 @@
 
 import Cocoa
 
-extension Notification.Name {
-    
-    static let DidPrepareFleet = Notification.Name("com.masakih.KCD.Notification.DidPrepareFleet")
-}
-
 final class FleetManager: NSObject {
     
     override init() {
@@ -31,7 +26,6 @@ final class FleetManager: NSObject {
             
             setNewFleetNumberToShip()
             return
-            
         }
         
         super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
@@ -59,14 +53,13 @@ final class FleetManager: NSObject {
             token = center.addObserver(forName: .PortAPIReceived, object: nil, queue: nil) {_ in
                 
                 center.removeObserver(token)
-                self.setupFleetController()
-                center.post(name: .DidPrepareFleet, object: self)
+                DispatchQueue.main.async(execute: self.setupFleetController)
+                DispatchQueue.main.async(execute: self.setNewFleetNumberToShip)
             }
             
         } else {
             
             setupFleetController()
-            
         }
     }
     
index 9bcabb7..e9ce267 100644 (file)
@@ -254,10 +254,13 @@ final class FleetViewController: NSViewController {
         }
         fleetNumber = 1
         
-        NotificationCenter.default
-            .addObserver(forName: .DidPrepareFleet, object: nil, queue: nil) { [weak self] _ in
+        // 初回起動時などデータがまだない時はportAPIを受信後設定する
+        weak var token: NSObjectProtocol?
+        token = NotificationCenter.default
+            .addObserver(forName: .PortAPIReceived, object: nil, queue: nil) { [weak self] _ in
                 
-                self?.notifyChangeValue(forKey: #keyPath(fleetNumber))
+                token.map(NotificationCenter.default.removeObserver)
+                self?.fleetNumber = 1
         }
         
         NotificationCenter
index 4ef5a16..a94e079 100644 (file)
@@ -79,12 +79,13 @@ extension ShipMasterDetailWindowController: NSTableViewDelegate {
             (shipsView, shipController),
             (fleetMemberView, fleetMemberController)
             ]
+            .lazy
             .filter { $0.0 == tableView }
+            .flatMap { $0.1 }
             .first
         
-        guard let selectedObjects = controller?.1.selectedObjects as? [Ship] else { return }
-        guard selectedObjects.count != 0 else { return }
+        guard let selectedObjects = controller?.selectedObjects as? [Ship] else { return }
         
-        selectedShip = selectedObjects[0]
+        selectedShip = selectedObjects.first
     }
 }