OSDN Git Service

staticプロパティをインスタンスプロパティに変更
[kcd/KCD.git] / KCD / SlotItemLevelView.swift
index 8b9352a..9560138 100644 (file)
@@ -53,12 +53,16 @@ final class SlotItemLevelView: NSTextField {
         didSet { needsDisplayInMainThread() }
     }
     
-    
     @objc var slotItemID: NSNumber? {
+        
         didSet {
+            
             slotItemController.content = nil
             
-            guard let itemId = slotItemID as? Int else { return }
+            guard let itemId = slotItemID as? Int else {
+                
+                return
+            }
             
             slotItemController.content = ServerDataStore.default.slotItem(by: itemId)
             needsDisplayInMainThread()
@@ -67,17 +71,29 @@ final class SlotItemLevelView: NSTextField {
     
     private var maskImage: CGImage? {
         
-        if let alv = slotItemAlv as? Int, alv != 0 { return airLevelMaskImage }
-        if let lv = slotItemLevel as? Int, lv != 0 { return levelMaskImage }
+        if let alv = slotItemAlv as? Int, alv != 0 {
+            
+            return airLevelMaskImage
+        }
+        if let lv = slotItemLevel as? Int, lv != 0 {
+            
+            return levelMaskImage
+        }
         
-        if isCharacterProtrude() { return characterProtrudeMaskImage }
+        if isCharacterProtrude() {
+            
+            return characterProtrudeMaskImage
+        }
         
         return nil
     }
     
     private var levelMaskImage: CGImage {
         
-        if let r = SlotItemLevelView.sLevelMaskImage { return r }
+        if let r = SlotItemLevelView.sLevelMaskImage {
+            
+            return r
+        }
         SlotItemLevelView.sLevelMaskImage = maskImage(middle1: 0.75, middle2: 0.85)
         
         return SlotItemLevelView.sLevelMaskImage!
@@ -85,174 +101,130 @@ final class SlotItemLevelView: NSTextField {
     
     private var airLevelMaskImage: CGImage {
         
-        if let r = SlotItemLevelView.sAirLevelMaskImage { return r }
+        if let r = SlotItemLevelView.sAirLevelMaskImage {
+            
+            return r
+        }
         SlotItemLevelView.sAirLevelMaskImage = maskImage(middle1: 0.65, middle2: 0.75)
         
         return SlotItemLevelView.sAirLevelMaskImage!
     }
     private var characterProtrudeMaskImage: CGImage {
         
-        if let r = SlotItemLevelView.sCharacterProtrudeMaskImageMaskImage { return r }
+        if let r = SlotItemLevelView.sCharacterProtrudeMaskImageMaskImage {
+            
+            return r
+        }
         SlotItemLevelView.sCharacterProtrudeMaskImageMaskImage = maskImage(middle1: 0.9, middle2: 1.0)
         
         return SlotItemLevelView.sCharacterProtrudeMaskImageMaskImage!
     }
     
-    private var levelOneBezierPath: NSBezierPath? {
+    private var levelOneBezierPath: Polygon {
         
         let width = bounds.width
         let height = bounds.height
-        let path = multiline(lines: [
-            (
-                NSPoint(x: width - offset, y: 0),
-                NSPoint(x: width - offset, y: height)
-            )
-            ])
-        path.lineWidth = 1.0
-        
-        return path
+        
+        return Polygon(lineWidth: 1.0)
+            .move(to: NSPoint(x: width - offset, y: 0))
+            .line(to: NSPoint(x: width - offset, y: height))
     }
     
-    private var levelTwoBezierPath: NSBezierPath? {
+    private var levelTwoBezierPath: Polygon {
         
         let width = bounds.width
         let height = bounds.height
-        let path = multiline(lines:
-            [
-                (
-                    NSPoint(x: width - offset, y: 0),
-                    NSPoint(x: width - offset, y: height)
-                ),
-                (
-                    NSPoint(x: width - offset - padding, y: 0),
-                    NSPoint(x: width - offset - padding, y: height)
-                )
-            ])
-        path.lineWidth = 1.0
-        
-        return path
+        
+        return Polygon(lineWidth: 1.0)
+            .move(to: NSPoint(x: width - offset, y: 0))
+            .line(to: NSPoint(x: width - offset, y: height))
+            .move(to: NSPoint(x: width - offset - padding, y: 0))
+            .line(to: NSPoint(x: width - offset - padding, y: height))
     }
     
-    private var levelThreeBezierPath: NSBezierPath? {
+    private var levelThreeBezierPath: Polygon {
         
         let width = bounds.width
         let height = bounds.height
-        let path = multiline(lines:
-            [
-                (
-                    NSPoint(x: width - offset, y: 0),
-                    NSPoint(x: width - offset, y: height)
-                ),
-                (
-                    NSPoint(x: width - offset - padding, y: 0),
-                    NSPoint(x: width - offset - padding, y: height)
-                ),
-                (
-                    NSPoint(x: width - offset - padding * 2, y: 0),
-                    NSPoint(x: width - offset - padding * 2, y: height)
-                )
-            ])
-        path.lineWidth = 1.0
-        
-        return path
+        
+        return Polygon(lineWidth: 1.0)
+            .move(to: NSPoint(x: width - offset, y: 0))
+            .line(to: NSPoint(x: width - offset, y: height))
+            .move(to: NSPoint(x: width - offset - padding, y: 0))
+            .line(to: NSPoint(x: width - offset - padding, y: height))
+            .move(to: NSPoint(x: width - offset - padding * 2, y: 0))
+            .line(to: NSPoint(x: width - offset - padding * 2, y: height))
     }
     
-    private var levelFourBezierPath: NSBezierPath? {
+    private var levelFourBezierPath: Polygon {
         
         let width = bounds.width
         let height = bounds.height
-        let path = multiline(lines:
-            [
-                (
-                    NSPoint(x: width - offset - slideOffset, y: 0),
-                    NSPoint(x: width - offset, y: height)
-                )
-            ])
-        path.lineWidth = 2.0
-        
-        return path
+        
+        return Polygon(lineWidth: 2.0)
+            .move(to: NSPoint(x: width - offset - slideOffset, y: 0))
+            .line(to: NSPoint(x: width - offset, y: height))
     }
     
-    private var levelFiveBezierPath: NSBezierPath? {
+    private var levelFiveBezierPath: Polygon {
         
         let width = bounds.width
         let height = bounds.height
-        let path = multiline(lines:
-            [
-                (
-                    NSPoint(x: width - offset - slideOffset, y: 0),
-                    NSPoint(x: width - offset, y: height)
-                ),
-                (
-                    NSPoint(x: width - offset - padding - slideOffset, y: 0),
-                    NSPoint(x: width - offset - padding, y: height)
-                )
-            ])
-        path.lineWidth = 2.0
-        
-        return path
+        
+        return Polygon(lineWidth: 2.0)
+            .move(to: NSPoint(x: width - offset - slideOffset, y: 0))
+            .line(to: NSPoint(x: width - offset, y: height))
+            .move(to: NSPoint(x: width - offset - padding - slideOffset, y: 0))
+            .line(to: NSPoint(x: width - offset - padding, y: height))
     }
     
-    private var levelSixBezierPath: NSBezierPath? {
+    private var levelSixBezierPath: Polygon {
         
         let width = bounds.width
         let height = bounds.height
-        let path = multiline(lines:
-            [
-                (
-                    NSPoint(x: width - offset - slideOffset, y: 0),
-                    NSPoint(x: width - offset, y: height)
-                ),
-                (
-                    NSPoint(x: width - offset - padding - slideOffset, y: 0),
-                    NSPoint(x: width - offset - padding, y: height)
-                ),
-                (
-                    NSPoint(x: width - offset - padding * 2 - slideOffset, y: 0),
-                    NSPoint(x: width - offset - padding * 2, y: height)
-                )
-            ])
-        path.lineWidth = 2.0
-        
-        return path
+        
+        return Polygon(lineWidth: 2.0)
+            .move(to: NSPoint(x: width - offset - slideOffset, y: 0))
+            .line(to: NSPoint(x: width - offset, y: height))
+            .move(to: NSPoint(x: width - offset - padding - slideOffset, y: 0))
+            .line(to: NSPoint(x: width - offset - padding, y: height))
+            .move(to: NSPoint(x: width - offset - padding * 2 - slideOffset, y: 0))
+            .line(to: NSPoint(x: width - offset - padding * 2, y: height))
     }
     
-    private var levelSevenBezierPath: NSBezierPath? {
+    private var levelSevenBezierPath: Polygon {
         
         let width = bounds.width
         let height = bounds.height
-        let path = polyline(points:
-            [
-                NSPoint(x: width - offset - slideOffset, y: 0),
-                NSPoint(x: width - offset, y: height * 0.5),
-                NSPoint(x: width - offset - anglePoint, y: height)
-            ])
-        polyline(points:
-            [
-                NSPoint(x: width - offset - padding - slideOffset, y: 0),
-                NSPoint(x: width - offset - padding, y: height * 0.5),
-                NSPoint(x: width - offset - padding - anglePoint, y: height)
-            ])
-            .map { path?.append($0) }
-        path?.lineWidth = 2.0
-        
-        return path
+        
+        return Polygon(lineWidth: 2.0)
+            .move(to: NSPoint(x: width - offset - slideOffset, y: 0))
+            .line(to: NSPoint(x: width - offset, y: height * 0.5))
+            .line(to: NSPoint(x: width - offset - anglePoint, y: height))
+            .move(to: NSPoint(x: width - offset - padding - slideOffset, y: 0))
+            .line(to: NSPoint(x: width - offset - padding, y: height * 0.5))
+            .line(to: NSPoint(x: width - offset - padding - anglePoint, y: height))
     }
     
     private var levelFont: NSFont {
         
-        return NSFont.monospacedDigitSystemFont(ofSize: NSFont.smallSystemFontSize, weight: .regular)
+        return .monospacedDigitSystemFont(ofSize: NSFont.smallSystemFontSize, weight: .regular)
     }
     
     private var levelColor: NSColor {
         
-        return #colorLiteral(red: 0.135, green: 0.522, blue: 0.619, alpha: 1)
+        return ColorSetManager.current[.slotItemLevelViewLevel]
+        
+        
     }
     
     // MARK: - Function
     override func draw(_ dirtyRect: NSRect) {
         
-        guard let context = NSGraphicsContext.current?.cgContext else { fatalError("Con not get current CGContext") }
+        guard let context = NSGraphicsContext.current?.cgContext else {
+            
+            fatalError("Con not get current CGContext")
+        }
         
         context.saveGState()
         maskImage.map { context.clip(to: bounds, mask: $0) }
@@ -265,52 +237,72 @@ final class SlotItemLevelView: NSTextField {
         drawAirLevel()
     }
     
-    private func bezierPathForALevel(level: Int) -> NSBezierPath? {
+    private func bezierPathForALevel(level: Int) -> Polygon? {
         
         switch level {
+            
         case 1: return levelOneBezierPath
+            
         case 2: return levelTwoBezierPath
+            
         case 3: return levelThreeBezierPath
+            
         case 4: return levelFourBezierPath
+            
         case 5: return levelFiveBezierPath
+            
         case 6: return levelSixBezierPath
+            
         case 7: return levelSevenBezierPath
+            
         default: return nil
+            
         }
     }
     
     private func colorForALevel(level: Int) -> NSColor? {
         
         switch level {
-        case 1, 2, 3: return #colorLiteral(red: 0.257, green: 0.523, blue: 0.643, alpha: 1)
-        case 4, 5, 6, 7: return #colorLiteral(red: 0.784, green: 0.549, blue: 0.000, alpha: 1)
+            
+        case 1, 2, 3: return ColorSetManager.current[.slotItemLevelViewLowAirLevel]
+            
+        case 4, 5, 6, 7: return ColorSetManager.current[.slotItemLevelViewHighAirLevel]
+            
         default: return nil
+            
         }
     }
     
     private func shadowForALevel(level: Int) -> NSShadow? {
         
         switch level {
+            
         case 1, 2, 3:
             let shadow = NSShadow()
-            shadow.shadowColor = #colorLiteral(red: 0.095, green: 0.364, blue: 0.917, alpha: 1)
+            shadow.shadowColor = ColorSetManager.current[.slotItemLevelViewLowAirLevelShadow]
             shadow.shadowBlurRadius = 4.0
+            
             return shadow
             
         case 4, 5, 6, 7:
             let shadow = NSShadow()
-            shadow.shadowColor = NSColor.yellow
+            shadow.shadowColor = ColorSetManager.current[.slotItemLevelViewHighAirLevelShadow]
             shadow.shadowBlurRadius = 3.0
+            
             return shadow
             
         default:
+            
             return nil
         }
     }
     
     private func drawAirLevel() {
         
-        guard let alv = slotItemAlv as? Int else { return }
+        guard let alv = slotItemAlv as? Int else {
+            
+            return
+        }
         
         colorForALevel(level: alv)?.set()
         shadowForALevel(level: alv)?.set()
@@ -319,7 +311,10 @@ final class SlotItemLevelView: NSTextField {
     
     private func drawLevel() {
         
-        guard let lv = slotItemLevel as? Int, lv != 0 else { return }
+        guard let lv = slotItemLevel as? Int, lv != 0 else {
+            
+            return
+        }
         
         let string = (lv == 10 ? "max" : "★+\(lv)")
         let attr: [NSAttributedStringKey: Any] = [.font: levelFont,