import Cocoa
-extension Notification.Name {
-
- static let DidPrepareFleet = Notification.Name("com.masakih.KCD.Notification.DidPrepareFleet")
-}
-
final class FleetManager: NSObject {
override init() {
setupFleets()
}
- private(set) var fleets: [Fleet] = []
+ @objc private(set) var fleets: [Fleet] = []
private var fleetController: NSArrayController!
- override func observeValue(forKeyPath keyPath: String?,
- of object: Any?,
- change: [NSKeyValueChangeKey: Any]?,
- context: UnsafeMutableRawPointer?) {
+ override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "arrangedObjects.ships" {
setNewFleetNumberToShip()
return
-
}
super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
fleets = (1...4).flatMap { Fleet(number: $0) }
- guard fleets.count == 4 else { return print("Can not create Fleet") }
+ guard fleets.count == 4 else {
+
+ return Logger.shared.log("Can not create Fleet")
+ }
if fleets[0].ships.isEmpty {
- let center = NotificationCenter.default
- var token: NSObjectProtocol!
- token = center.addObserver(forName: .PortAPIReceived, object: nil, queue: nil) {_ in
-
- center.removeObserver(token)
- self.setupFleetController()
- center.post(name: .DidPrepareFleet, object: self)
+ NotificationCenter.default
+ .addObserverOnce(forName: .PortAPIReceived, object: nil, queue: nil) { _ in
+
+ DispatchQueue.main.async(execute: self.setupFleetController)
+ DispatchQueue.main.async(execute: self.setNewFleetNumberToShip)
}
} else {
setupFleetController()
-
}
}