bind("flagShipID", to: deckContoller, withKeyPath: "selection.ship_0", options: nil)
NotificationCenter.default
- .addObserver(forName: .CombinedDidCange, object: nil, queue: nil) { (notification) in
+ .addObserver(forName: .CombinedDidCange, object: nil, queue: nil) {
guard UserDefaults.standard.autoCombinedView,
- let type = notification.userInfo?[CombinedCommand.userInfoKey] as? CombineType
+ let type = $0.userInfo?[CombinedCommand.userInfoKey] as? CombineType
else { return }
if !Thread.isMainThread { Thread.sleep(forTimeInterval: 0.1) }
DispatchQueue.main.async {
let o = selectedMainTabIndex
selectedMainTabIndex = o
- changeMainTabHandler = { [unowned self] newValue in
+ changeMainTabHandler = { [weak self] in
+ guard let `self` = self else { return }
self.shipTypeButton.dismissPopover(nil)
self.shipTypeSegment.unbind(NSSelectedIndexBinding)
guard let button = self.shipTypeButton.view as? NSButton else { return }
- let vc = self.tabViewItemViewControllers[newValue]
+ let vc = self.tabViewItemViewControllers[$0]
button.isHidden = !vc.hasShipTypeSelector
self.shipTypeSegment.bind(NSSelectedIndexBinding,
to: vc,
private func packFleet(store: ServerDataStore) {
store.decksSortedById()
- .forEach { (deck) in
+ .forEach { deck in
var needsPack = false
(0..<6).forEach {
let shipId = deck.shipId(of: $0)
- if (shipId == nil || shipId! == -1) && !needsPack {
+ // TODO: うまいことする 強制アンラップを消す
+ if (shipId == nil || shipId! == -1), !needsPack {
needsPack = true
return
}
fileprivate var ships: [Ship] = [] {
willSet {
- ships.forEach { (ship) in
+ ships.forEach { ship in
shipObserveKeys.forEach {
ship.removeObserver(self, forKeyPath: $0)
}
}
}
didSet {
- ships.forEach { (ship) in
+ ships.forEach { ship in
shipObserveKeys.forEach {
ship.addObserver(self, forKeyPath: $0, context: &shipsContext)
}
func registerElement(_ element: JSON, to object: ObjectType) {
beginRegister(object)
- element.forEach { (key: String, value: JSON) in
+ element.forEach { (key, value) in
if configuration.ignoreKeys.contains(key) { return }
if handleExtraValue(value, forKey: key, to: object) { return }
switch value.type {
private func register(_ material: Material, data: [Int]) {
data.enumerated().forEach {
- guard $0.offset < keys.count
- else { return }
+ guard $0.offset < keys.count else { return }
material.setValue($0.element as NSNumber, forKey: keys[$0.offset])
}
}
// 新しいものを追加
let new: [ScreenshotInformation] = newFiles.flatMap { url in
- let index = current.index { (info) -> Bool in url == info.url }
+ let index = current.index { url == $0.url }
return index == nil ? ScreenshotInformation(url: url) : nil
}
if rIds.count != actions.count { print("missmatch count") }
let store = ServerDataStore.oneTimeEditor()
- zip(rIds, actions).forEach { (rId: Int, action: Int) in
+ zip(rIds, actions).forEach { (rId, action) in
store.airBase(area: areaId, base: rId)?.action_kind = action
}
}
func handleExtraValue(_ value: JSON, forKey key: String, to ship: Ship) -> Bool {
// 取得後破棄した装備のデータを削除するため保有IDを保存
if key == "api_id" {
- guard let id = value.int
- else { return false }
+ guard let id = value.int else { return false }
registerIds.append(id)
return false
}
if key == "api_ship_id" {
- guard let masterId = value.int
- else { return false }
+ guard let masterId = value.int else { return false }
setMaster(masterId, to: ship)
return true
}
if key == "api_exp" {
- guard let exp = value[0].int
- else { return false }
+ guard let exp = value[0].int else { return false }
ship.exp = exp
return true
}
return false
}
if key == "api_slot_ex" {
- guard let ex = value.int
- else { return false }
+ guard let ex = value.int else { return false }
setExtraSlot(ex, to: ship)
return false
}
let store = store
else { return }
let newItems: [SlotItem] =
- converSlotItems.flatMap { (item: Int) in
+ converSlotItems.flatMap { item in
if item == 0 || item == -1 { return nil }
guard let found = self.slotItems.binarySearch(comparator: { $0.id ==? item }),
let slotItem = store.object(with: found.objectID) as? SlotItem
else {
let maxV = converSlotItems.last
- if maxV != nil && maxV! < item {
+ if maxV != nil, maxV! < item {
#if DEBUG
print("item is maybe unregistered, so it is new ship's equipment.")
#endif
tableViews
.forEach {
NotificationCenter.default
- .addObserver(forName: .NSScrollViewDidEndLiveScroll, object: $0, queue: nil) { notification in
- guard let target = notification.object as? NSScrollView else { return }
+ .addObserver(forName: .NSScrollViewDidEndLiveScroll, object: $0, queue: nil) {
+ guard let target = $0.object as? NSScrollView else { return }
let visibleRect = target.documentVisibleRect
tableViews
.filter { $0 != target }
func handleExtraValue(_ value: JSON, forKey key: String, to object: SlotItem) -> Bool {
// 取得後破棄した装備のデータを削除するため保有IDを保存
if key == "api_id" {
- guard let id = value.int
- else { return false }
+ guard let id = value.int else { return false }
registerIds.append(id)
return false
}
if key == "api_slotitem_id" {
- guard let id = value.int
- else { return false }
+ guard let id = value.int else { return false }
setMaster(id, to: object)
return true
}
}
private func setMaster(_ masterId: Int, to slotItem: SlotItem?) {
- guard let slotItem = slotItem
- else { return }
+ guard let slotItem = slotItem else { return }
if slotItem.slotitem_id == masterId { return }
guard let mSlotItem = masterSlotItems.binarySearch(comparator: { $0.id ==? masterId })