2 // DocksViewController.swift
5 // Created by Hori,Masaki on 2016/12/25.
6 // Copyright © 2016年 Hori,Masaki. All rights reserved.
11 protocol DockInformationUpdater: class {
16 final class DocksViewController: MainTabVIewItemViewController {
18 @objc let managedObjectContext = ServerDataStore.default.context
19 let questListViewController = QuestListViewController()
20 let battleInfoViewController = BattleInformationViewController()
22 private var updaters: [DockInformationUpdater] = []
24 @objc dynamic var nDock1Time: NSNumber?
25 @objc dynamic var nDock2Time: NSNumber?
26 @objc dynamic var nDock3Time: NSNumber?
27 @objc dynamic var nDock4Time: NSNumber?
29 @objc dynamic var nDock1ShipName: String?
30 @objc dynamic var nDock2ShipName: String?
31 @objc dynamic var nDock3ShipName: String?
32 @objc dynamic var nDock4ShipName: String?
34 @objc dynamic var kDock1Time: NSNumber?
35 @objc dynamic var kDock2Time: NSNumber?
36 @objc dynamic var kDock3Time: NSNumber?
37 @objc dynamic var kDock4Time: NSNumber?
39 @objc dynamic var deck2Time: NSNumber?
40 @objc dynamic var deck3Time: NSNumber?
41 @objc dynamic var deck4Time: NSNumber?
43 @objc dynamic var mission2Name: String?
44 @objc dynamic var mission3Name: String?
45 @objc dynamic var mission4Name: String?
47 @IBOutlet private weak var battleInformationViewPlaceholder: NSView!
48 @IBOutlet private weak var questListViewPlaceholder: NSView!
50 override var nibName: NSNib.Name {
52 return .nibName(instanceOf: self)
55 override func viewDidLoad() {
61 replace(view: battleInformationViewPlaceholder, with: battleInfoViewController)
62 replace(view: questListViewPlaceholder, with: questListViewController)
65 private func setupStatus() {
69 createMissionSatusFuture(number: $0)
70 .onSuccess { status in
72 self.updaters += [status]
73 status.delegate = self
77 Logger.shared.log("\(error)")
83 createNyukyoDockStatusFuture(number: $0)
84 .onSuccess { status in
86 self.updaters += [status]
87 status.delegate = self
91 Logger.shared.log("\(error)")
94 createKenzoDockStatusFuture(number: $0)
95 .onSuccess { status in
97 self.updaters += [status]
98 status.delegate = self
100 .onFailure { error in
102 Logger.shared.log("\(error)")
106 AppDelegate.shared.addCounterUpdate {
108 self.updaters.forEach { $0.update() }
113 extension DocksViewController: MissionStatusObserver {
115 func didUpdate(state: MissionStatus) {
117 switch state.number {
120 deck2Time = state.time.map { $0 as NSNumber }
121 mission2Name = state.name
124 deck3Time = state.time.map { $0 as NSNumber }
125 mission3Name = state.name
128 deck4Time = state.time.map { $0 as NSNumber }
129 mission4Name = state.name
137 extension DocksViewController: NyukyoDockStatusObserver {
139 func didUpdate(state: NyukyoDockStatus) {
141 switch state.number {
144 nDock1Time = state.time.map { $0 as NSNumber }
145 nDock1ShipName = state.name
148 nDock2Time = state.time.map { $0 as NSNumber }
149 nDock2ShipName = state.name
152 nDock3Time = state.time.map { $0 as NSNumber }
153 nDock3ShipName = state.name
156 nDock4Time = state.time.map { $0 as NSNumber }
157 nDock4ShipName = state.name
165 extension DocksViewController: KenzoDockStatusObserver {
167 func didUpdate(state: KenzoDockStatus) {
169 switch state.number {
172 kDock1Time = state.time.map { $0 as NSNumber }
175 kDock2Time = state.time.map { $0 as NSNumber }
178 kDock3Time = state.time.map { $0 as NSNumber }
181 kDock4Time = state.time.map { $0 as NSNumber }