OSDN Git Service

guard の書き方を統一した
[kcd/KCD.git] / KCD / CombileViewController.swift
1 //
2 //  CombileViewController.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 CombileViewController: NSViewController {
12     
13     let fleet1 = FleetViewController(viewType: .miniVierticalType)!
14     let fleet2 = FleetViewController(viewType: .miniVierticalType)!
15     
16     @IBOutlet weak var placeholder1: NSView!
17     @IBOutlet weak var placeholder2: NSView!
18     
19     @objc dynamic var fleet1TPValue: Int = 0 {
20         willSet {
21             willChangeValue(forKey: #keyPath(TPValue))
22             willChangeValue(forKey: #keyPath(BRankTPValue))
23         }
24         didSet {
25             didChangeValue(forKey: #keyPath(TPValue))
26             didChangeValue(forKey: #keyPath(BRankTPValue))
27         }
28     }
29     @objc dynamic var fleet2TPValue: Int = 0 {
30         willSet {
31             willChangeValue(forKey: #keyPath(TPValue))
32             willChangeValue(forKey: #keyPath(BRankTPValue))
33         }
34         didSet {
35             didChangeValue(forKey: #keyPath(TPValue))
36             didChangeValue(forKey: #keyPath(BRankTPValue))
37         }
38     }
39     @objc dynamic var TPValue: Int { return fleet1TPValue + fleet2TPValue }
40     @objc dynamic var BRankTPValue: Int { return Int(floor(Double(TPValue) * 0.7)) }
41     
42     @objc dynamic var fleet1Seiku: Int = 0 {
43         willSet {
44             willChangeValue(forKey: #keyPath(seiku))
45         }
46         didSet {
47             didChangeValue(forKey: #keyPath(seiku))
48         }
49     }
50     @objc dynamic var fleet2Seiku: Int = 0 {
51         willSet {
52             willChangeValue(forKey: #keyPath(seiku))
53         }
54         didSet {
55             didChangeValue(forKey: #keyPath(seiku))
56         }
57     }
58     @objc dynamic var seiku: Int { return fleet1Seiku + fleet2Seiku }
59     
60     @objc dynamic var fleet1CalculatedSeiku: Int = 0 {
61         willSet {
62             willChangeValue(forKey: #keyPath(seiku))
63         }
64         didSet {
65             didChangeValue(forKey: #keyPath(seiku))
66         }
67     }
68     @objc dynamic var fleet2CalculatedSeiku: Int = 0 {
69         willSet {
70             willChangeValue(forKey: #keyPath(calculatedSeiku))
71         }
72         didSet {
73             didChangeValue(forKey: #keyPath(calculatedSeiku))
74         }
75     }
76     @objc dynamic var calculatedSeiku: Int { return fleet1CalculatedSeiku + fleet2CalculatedSeiku }
77     
78     override var nibName: NSNib.Name {
79         
80         return .nibName(instanceOf: self)
81     }
82     
83     override func viewDidLoad() {
84         
85         super.viewDidLoad()
86         
87         let placeholders: [NSView] = [placeholder1, placeholder2]
88         let fleets = [fleet1, fleet2]
89         zip(placeholders, fleets).enumerated().forEach {
90             
91             $0.element.1.view.frame = $0.element.0.frame
92             $0.element.1.view.autoresizingMask = $0.element.0.autoresizingMask
93             $0.element.0.superview?.replaceSubview($0.element.0, with: $0.element.1.view)
94             $0.element.1.fleetNumber = $0.offset + 1
95         }
96         
97         bind(NSBindingName(#keyPath(fleet1TPValue)), to: fleet1, withKeyPath: "totalTPValue")
98         bind(NSBindingName(#keyPath(fleet2TPValue)), to: fleet2, withKeyPath: "totalTPValue")
99         
100         bind(NSBindingName(#keyPath(fleet1Seiku)), to: fleet1, withKeyPath: "totalSeiku")
101         bind(NSBindingName(#keyPath(fleet2Seiku)), to: fleet2, withKeyPath: "totalSeiku")
102         
103         bind(NSBindingName(#keyPath(fleet1CalculatedSeiku)), to: fleet1, withKeyPath: "totalCalclatedSeiku")
104         bind(NSBindingName(#keyPath(fleet2CalculatedSeiku)), to: fleet2, withKeyPath: "totalCalclatedSeiku")
105     }
106     
107     deinit {
108         
109         unbind(NSBindingName(#keyPath(fleet1TPValue)))
110         unbind(NSBindingName(#keyPath(fleet2TPValue)))
111         
112         unbind(NSBindingName(#keyPath(fleet1Seiku)))
113         unbind(NSBindingName(#keyPath(fleet2Seiku)))
114         
115         unbind(NSBindingName(#keyPath(fleet1CalculatedSeiku)))
116         unbind(NSBindingName(#keyPath(fleet2CalculatedSeiku)))
117     }
118 }