F490978C1E1BA64E0085A45D /* GuardEscapedView.swift */,
F45FBB911E129BAE000E72B9 /* FleetViewController.swift */,
F4BEF0071B11A5D3004702B8 /* FleetViewController.xib */,
+ F4BEF0041B11A5CC004702B8 /* FleetMinimumViewController.xib */,
F4C3D1BD1F13A32D0084D0CA /* CalculateConditionPanelController.swift */,
F4C3D1BE1F13A32D0084D0CA /* CalculateConditionPanelController.xib */,
- F4BEF0041B11A5CC004702B8 /* FleetMinimumViewController.xib */,
F4C668711C54524900601AFB /* VerticalFleetViewController.xib */,
F4D05BD11E0F3C4E00688D66 /* CombileViewController.swift */,
F4C668741C54525300601AFB /* CombileViewController.xib */,
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="13529" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment identifier="macosx"/>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13529"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="BroserWindowController">
<connections>
- <outlet property="ancherageRepariTimerPlaceholder" destination="JfO-nc-ymj" id="HV1-5u-fML"/>
+ <outlet property="ancherageRepariTimerPlaceholder" destination="xRV-cq-rmr" id="cch-th-fsv"/>
<outlet property="combinedViewPlaceholder" destination="ErU-NG-s3I" id="6hE-wI-Ikk"/>
<outlet property="deckContoller" destination="eqP-ex-UzI" id="8n5-Er-BIF"/>
<outlet property="deckPlaceholder" destination="tIf-gd-MhY" id="aXM-5K-Uwd"/>
<outlet property="informations" destination="fK1-fC-Xdm" id="why-oJ-aEb"/>
<outlet property="placeholder" destination="raX-C4-fMW" id="T7y-R7-3qy"/>
- <outlet property="resourcePlaceholder" destination="0dQ-uF-j2x" id="XA4-rf-KUI"/>
+ <outlet property="resourcePlaceholder" destination="Ztc-Gd-Ipf" id="mUG-AG-FqW"/>
+ <outlet property="stokerContainer" destination="vbb-UC-aXs" id="eae-Ze-5ug"/>
<outlet property="window" destination="1" id="3"/>
</connections>
</customObject>
<rect key="frame" x="8" y="9" width="800" height="288"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
</customView>
- <box verticalHuggingPriority="750" boxType="separator" id="hNz-5S-KHR">
- <rect key="frame" x="820" y="109" width="329" height="5"/>
- <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
- </box>
<tabView initialItem="ETl-Gs-mBL" id="fK1-fC-Xdm">
<rect key="frame" x="813" y="176" width="343" height="600"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" heightSizable="YES"/>
<binding destination="-2" name="selectedIndex" keyPath="selectedMainTabIndex" id="bvs-iv-JKe"/>
</connections>
</tabView>
- <customView id="0dQ-uF-j2x">
- <rect key="frame" x="809" y="9" width="352" height="103"/>
- <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
- </customView>
- <customView id="JfO-nc-ymj">
- <rect key="frame" x="809" y="111" width="352" height="76"/>
+ <customView misplaced="YES" id="vbb-UC-aXs">
+ <rect key="frame" x="808" y="9" width="352" height="178"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <subviews>
+ <customView id="Ztc-Gd-Ipf">
+ <rect key="frame" x="0.0" y="0.0" width="352" height="103"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+ </customView>
+ <box verticalHuggingPriority="750" boxType="separator" id="vbh-Ad-xUk">
+ <rect key="frame" x="11" y="100" width="329" height="5"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ </box>
+ <customView id="xRV-cq-rmr">
+ <rect key="frame" x="0.0" y="102" width="352" height="76"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES"/>
+ </customView>
+ </subviews>
</customView>
</subviews>
</view>
@IBOutlet weak var placeholder: NSView!
@IBOutlet weak var combinedViewPlaceholder: NSView!
@IBOutlet weak var deckPlaceholder: NSView!
+ @IBOutlet weak var stokerContainer: NSView!
@IBOutlet weak var resourcePlaceholder: NSView!
@IBOutlet weak var ancherageRepariTimerPlaceholder: NSView!
@IBOutlet weak var informations: NSTabView!
private var fleetViewPosition: FleetViewPosition = .above
private var isCombinedMode = false
+ private var isExtShpMode = false
// MARK: - Function
override func windowDidLoad() {
fleetViewController.enableAnimation = false
fleetViewController.shipOrder = UserDefaults.standard[.fleetViewShipOrder]
fleetViewController.enableAnimation = true
+ fleetViewController.delegate = self
bind(NSBindingName(rawValue: #keyPath(flagShipID)), to: deckContoller, withKeyPath: "selection.ship_0", options: nil)
viewController.view.frame = view.frame
viewController.view.autoresizingMask = view.autoresizingMask
- self.window?.contentView?.replaceSubview(view, with: viewController.view)
+ view.superview?.replaceSubview(view, with: viewController.view)
}
private func showCombinedView() {
}
+extension BroserWindowController: FleetViewControllerDelegate {
+
+ func changeShowsExtShip(_ fleetViewController: FleetViewController, showsExtShip: Bool) {
+
+ guard self.fleetViewController == fleetViewController else { return }
+
+ if isExtShpMode && !showsExtShip {
+ // hide
+ print("hide ext ship")
+
+ let diffHeight = fleetViewController.shipViewSize.height
+
+ var iFrame = informations.frame
+ iFrame.origin.y -= diffHeight
+ iFrame.size.height += diffHeight
+ informations.animator().frame = iFrame
+
+ var sFrame = stokerContainer.frame
+ sFrame.origin.y -= diffHeight
+ stokerContainer.animator().frame = sFrame
+
+ isExtShpMode = false
+
+ } else if !isExtShpMode && showsExtShip {
+
+ //show
+ print("show ext shp")
+
+ let diffHeight = fleetViewController.shipViewSize.height
+
+ var iFrame = informations.frame
+ iFrame.origin.y += diffHeight
+ iFrame.size.height -= diffHeight
+ informations.animator().frame = iFrame
+
+ var sFrame = stokerContainer.frame
+ sFrame.origin.y += diffHeight
+ stokerContainer.animator().frame = sFrame
+
+ isExtShpMode = true
+ }
+ }
+}
+
@available(OSX 10.12.2, *)
private var mainTouchBars: [Int: NSTouchBar] = [:]
@available(OSX 10.12.2, *)
private var shipKeysContext: Int = 0
private var shipsContext: Int = 0
+protocol FleetViewControllerDelegate: class {
+
+ func changeShowsExtShip(_ fleetViewController: FleetViewController, showsExtShip: Bool)
+}
+
final class FleetViewController: NSViewController {
enum ShipOrder: Int {
private static let maxFleetNumber: Int = 4
private let details: [ShipDetailViewController]
- private let shipKeys = [#keyPath(Deck.ship_0), #keyPath(Deck.ship_1), #keyPath(Deck.ship_2), #keyPath(Deck.ship_3), #keyPath(Deck.ship_4), #keyPath(Deck.ship_5)]
+ private let shipKeys = [#keyPath(Deck.ship_0), #keyPath(Deck.ship_1), #keyPath(Deck.ship_2), #keyPath(Deck.ship_3),
+ #keyPath(Deck.ship_4), #keyPath(Deck.ship_5), #keyPath(Deck.ship_6)]
private let type: FleetViewType
private let fleetController = NSObjectController()
private let shipObserveKeys = [#keyPath(Ship.seiku), #keyPath(Ship.lv), #keyPath(Ship.equippedItem)]
set {
representedObject = newValue
title = newValue?.name
+ checkExtShip()
setupShips()
}
}
+ var extDetail: ShipDetailViewController?
+ weak var delegate: FleetViewControllerDelegate?
+
var enableAnimation: Bool = false
var shipOrder: FleetViewController.ShipOrder = .doubleLine {
.map { ShipTPValueCalculator($0) }
.map { $0.value }
.reduce(0, +)
-
}
func totalSeiku(of ship: Ship) -> Int {
if context == &shipKeysContext {
+ checkExtShip()
setupShips()
return
let array: [Ship?] = (0..<6).map { fleet?[$0] }
zip(details, array).forEach { $0.0.ship = $0.1 }
- ships = array.flatMap { $0 }
+
+ let extShip = fleet?[6]
+ extShip.map { extDetail?.ship = $0 }
+ ships = array.flatMap { $0 } + [extShip].flatMap { $0 }
[#keyPath(totalSakuteki), #keyPath(totalSeiku), #keyPath(totalCalclatedSeiku),
#keyPath(totalLevel), #keyPath(totalDrums), #keyPath(repairable),
}
}
+extension FleetViewController {
+
+ var shipViewSize: NSSize { return details[0].view.frame.size }
+
+ private func showExtShip() {
+
+ print("show ext shp")
+
+ guard type == .detailViewType else { return }
+ guard extDetail == nil else { return }
+ guard let _ = fleet?[6] else { return }
+
+ extDetail = ShipDetailViewController(type: .full)
+ guard let extDetail = extDetail else { return }
+
+ extDetail.title = "7"
+ extDetail.view.autoresizingMask = [.minXMargin]
+
+ let width = extDetail.view.frame.width - 1
+ var frame = view.frame
+ frame.size.width += width
+
+ extDetail.view.frame = details[5].view.frame
+ view.addSubview(extDetail.view, positioned: .below, relativeTo: details[5].view)
+ view.animator().frame = frame
+
+ delegate?.changeShowsExtShip(self, showsExtShip: true)
+ }
+
+ private func hideExtShip() {
+
+ print("hide ext ship")
+ guard type == .detailViewType else { return }
+
+ guard let extDetail = extDetail else { return }
+
+ var frame = view.frame
+ frame.size.width -= extDetail.view.frame.width - 1
+ view.animator().frame = frame
+
+ ships.removeLast()
+
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
+ extDetail.view.removeFromSuperview()
+ }
+
+ self.extDetail = nil
+
+ delegate?.changeShowsExtShip(self, showsExtShip: false)
+ }
+
+ private func checkExtShip() {
+
+ fleet.map { print($0) }
+
+ guard type == .detailViewType else { return }
+
+ if fleet?[6] != nil {
+
+ showExtShip()
+
+ } else {
+
+ hideExtShip()
+ }
+ }
+}
+
extension FleetViewController: NibLoadable {}