OSDN Git Service

コメントを追加
[kcd/KCD.git] / KCD / DocksViewController.swift
1 //
2 //  DocksViewController.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2016/12/25.
6 //  Copyright © 2016年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 final class DocksViewController: MainTabVIewItemViewController {
12     
13     deinit {
14         
15         [NSBindingName(#keyPath(deck2Time)), NSBindingName(#keyPath(mission2Name)),
16          NSBindingName(#keyPath(deck3Time)), NSBindingName(#keyPath(mission3Name)),
17          NSBindingName(#keyPath(deck4Time)), NSBindingName(#keyPath(mission4Name))]
18             .forEach(unbind)
19         [NSBindingName(#keyPath(nDock1Time)), NSBindingName(#keyPath(nDock1ShipName)),
20          NSBindingName(#keyPath(nDock2Time)), NSBindingName(#keyPath(nDock2ShipName)),
21          NSBindingName(#keyPath(nDock3Time)), NSBindingName(#keyPath(nDock3ShipName)),
22          NSBindingName(#keyPath(nDock4Time)), NSBindingName(#keyPath(nDock4ShipName))]
23             .forEach(unbind)
24         [NSBindingName(#keyPath(kDock1Time)), NSBindingName(#keyPath(kDock2Time)),
25          NSBindingName(#keyPath(kDock3Time)), NSBindingName(#keyPath(kDock4Time))]
26             .forEach(unbind)
27     }
28     
29     @objc let managedObjectContext = ServerDataStore.default.context
30     let questListViewController = QuestListViewController()
31     let battleInfoViewController = BattleInformationViewController()
32     
33     let missionStates = (2...4).flatMap { MissionStatus(number: $0) }
34     let ndockStatus = (1...4).flatMap { NyukyoDockStatus(number: $0) }
35     let kdockStatus = (1...4).flatMap { KenzoDockStatus(number: $0) }
36     
37     @objc var nDock1Time: NSNumber?
38     @objc var nDock2Time: NSNumber?
39     @objc var nDock3Time: NSNumber?
40     @objc var nDock4Time: NSNumber?
41     
42     @objc var nDock1ShipName: String?
43     @objc var nDock2ShipName: String?
44     @objc var nDock3ShipName: String?
45     @objc var nDock4ShipName: String?
46     
47     @objc var kDock1Time: NSNumber?
48     @objc var kDock2Time: NSNumber?
49     @objc var kDock3Time: NSNumber?
50     @objc var kDock4Time: NSNumber?
51     
52     @objc var deck2Time: NSNumber?
53     @objc var deck3Time: NSNumber?
54     @objc var deck4Time: NSNumber?
55     
56     @objc var mission2Name: String?
57     @objc var mission3Name: String?
58     @objc var mission4Name: String?
59     
60     @IBOutlet weak var battleInformationViewPlaceholder: NSView!
61     @IBOutlet weak var questListViewPlaceholder: NSView!
62     
63     override var nibName: NSNib.Name {
64         
65         return .nibName(instanceOf: self)
66     }
67     
68     override func viewDidLoad() {
69         
70         super.viewDidLoad()
71         
72         setupStatus()
73         
74         AppDelegate.shared.addCounterUpdate {
75             
76             self.missionStates.forEach { $0.update() }
77             self.kdockStatus.forEach { $0.update() }
78             self.ndockStatus.forEach { $0.update() }
79         }
80         
81         battleInfoViewController.view.frame = battleInformationViewPlaceholder.frame
82         battleInfoViewController.view.autoresizingMask = battleInformationViewPlaceholder.autoresizingMask
83         battleInformationViewPlaceholder.superview?.replaceSubview(battleInformationViewPlaceholder, with: battleInfoViewController.view)
84         
85         questListViewController.view.frame = questListViewPlaceholder.frame
86         questListViewController.view.autoresizingMask = questListViewPlaceholder.autoresizingMask
87         questListViewPlaceholder.superview?.replaceSubview(questListViewPlaceholder, with: questListViewController.view)
88     }
89     
90     private func setupStatus() {
91         
92         let missionKeys = [
93             (#keyPath(deck2Time), #keyPath(mission2Name)),
94             (#keyPath(deck3Time), #keyPath(mission3Name)),
95             (#keyPath(deck4Time), #keyPath(mission4Name))
96         ]
97         zip(missionStates, missionKeys).forEach {
98             
99             bind(NSBindingName(rawValue: $0.1.0), to: $0.0, withKeyPath: #keyPath(MissionStatus.time), options: nil)
100             bind(NSBindingName(rawValue: $0.1.1), to: $0.0, withKeyPath: #keyPath(MissionStatus.name), options: nil)
101         }
102         
103         let ndockKeys = [
104             (#keyPath(nDock1Time), #keyPath(nDock1ShipName)),
105             (#keyPath(nDock2Time), #keyPath(nDock2ShipName)),
106             (#keyPath(nDock3Time), #keyPath(nDock3ShipName)),
107             (#keyPath(nDock4Time), #keyPath(nDock4ShipName))
108         ]
109         zip(ndockStatus, ndockKeys).forEach {
110             
111             bind(NSBindingName(rawValue: $0.1.0), to: $0.0, withKeyPath: #keyPath(NyukyoDockStatus.time), options: nil)
112             bind(NSBindingName(rawValue: $0.1.1), to: $0.0, withKeyPath: #keyPath(NyukyoDockStatus.name), options: nil)
113         }
114         
115         let kdockKeys = [#keyPath(kDock1Time), #keyPath(kDock2Time), #keyPath(kDock3Time), #keyPath(kDock4Time)]
116         zip(kdockStatus, kdockKeys).forEach {
117             
118             bind(NSBindingName(rawValue: $0.1), to: $0.0, withKeyPath: #keyPath(KenzoDockStatus.time), options: nil)
119         }
120     }
121     
122 }