5 // Created by Hori,Masaki on 2017/01/01.
6 // Copyright © 2017年 Hori,Masaki. All rights reserved.
11 enum DamageType: Int {
19 final class DamageView: NSView {
21 @objc dynamic var damageType: Int = 0 {
24 guard let v = DamageType(rawValue: newValue) else { return Logger.shared.log("Can not set damageType") }
26 if innerDamageType != v { needsDisplay = true }
32 var controlSize: NSControl.ControlSize = .regular
33 private var innerDamageType: DamageType = .none
34 private var color: NSColor? {
36 switch innerDamageType {
41 return #colorLiteral(red: 1.000, green: 0.956, blue: 0.012, alpha: 0.5)
44 return NSColor.orange.withAlphaComponent(0.5)
47 return NSColor.red.withAlphaComponent(0.5)
51 private var borderColor: NSColor? {
53 switch innerDamageType {
58 return NSColor.orange.withAlphaComponent(0.5)
61 return NSColor.orange.withAlphaComponent(0.9)
64 return NSColor.red.withAlphaComponent(0.9)
68 private var path: NSBezierPath? {
79 private var pathForRegular: NSBezierPath? {
81 let height = bounds.height
83 switch innerDamageType {
88 return polygon(points:
90 NSPoint(x: 35.0, y: height - 2.0),
91 NSPoint(x: 0.0, y: height - 2.0),
92 NSPoint(x: 0.0, y: height - 35.0)
96 return polygon(points:
98 NSPoint(x: 50.0, y: height - 2.0),
99 NSPoint(x: 25.0, y: height - 2.0),
100 NSPoint(x: 0.0, y: height - 25.0),
101 NSPoint(x: 0.0, y: height - 50.0)
105 let p = polygon(points:
107 NSPoint(x: 60.0, y: height - 2.0),
108 NSPoint(x: 53.0, y: height - 2.0),
109 NSPoint(x: 0.0, y: height - 53.0),
110 NSPoint(x: 0.0, y: height - 60.0)
114 NSPoint(x: 47.0, y: height - 2.0),
115 NSPoint(x: 23.0, y: height - 2.0),
116 NSPoint(x: 0.0, y: height - 23.0),
117 NSPoint(x: 0.0, y: height - 47.0)
119 .map { p?.append($0) }
124 private var pathForSmall: NSBezierPath? {
126 let height = bounds.height
128 switch innerDamageType {
133 return polygon(points:
135 NSPoint(x: 35.0, y: height - 2.0),
136 NSPoint(x: 0.0, y: height - 2.0),
137 NSPoint(x: 0.0, y: height - 35.0)
141 return polygon(points:
143 NSPoint(x: 50.0, y: height - 2.0),
144 NSPoint(x: 25.0, y: height - 2.0),
145 NSPoint(x: 0.0, y: height - 25.0),
146 NSPoint(x: 0.0, y: height - 50.0)
150 let p = polygon(points:
152 NSPoint(x: 55.0, y: height - 2.0),
153 NSPoint(x: 48.0, y: height - 2.0),
154 NSPoint(x: 0.0, y: height - 48.0),
155 NSPoint(x: 0.0, y: height - 55.0)
159 NSPoint(x: 42.0, y: height - 2.0),
160 NSPoint(x: 20.0, y: height - 2.0),
161 NSPoint(x: 0.0, y: height - 20.0),
162 NSPoint(x: 0.0, y: height - 42.0)
164 .map { p?.append($0) }
169 override func draw(_ dirtyRect: NSRect) {
171 super.draw(dirtyRect)
174 borderColor?.setStroke()