OSDN Git Service

ColorSetを追加
[kcd/KCD.git] / KCD / ColorSet.swift
1 //
2 //  ColorSet.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2018/06/24.
6 //  Copyright © 2018年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 struct ColorName {
12     
13     let name: String
14     
15     init(name: String) {
16         
17         self.name = name
18     }
19     
20     init(_ name: String) {
21         
22         self.name = name
23     }
24 }
25
26 extension ColorName: Equatable {
27     
28     static func == (lhs: ColorName, rhs: ColorName) -> Bool {
29         
30         return lhs.name == rhs.name
31     }
32 }
33
34 extension ColorName {
35     
36     // for DamageView
37     static let damageViewInnerSlightly = ColorName("DamageView.inner.slightly")
38     static let damageViewInnerModest = ColorName("DamageView.inner.modest")
39     static let damageViewInnerBadly = ColorName("DamageView.inner.badly")
40     static let damageViewBoarderSlightly = ColorName("DamageView.border.slightly")
41     static let damageViewBoarderModest = ColorName("DamageView.border.modest")
42     static let damageViewBoarderBadly = ColorName("DamageView.border.badly")
43     
44     // for AirPlanInfoView
45     static let airPlanInforViewNormal = ColorName("AirPlanInfoView.normal")
46     static let airPlanInforViewTired = ColorName("AirPlanInfoView.tired")
47     static let airPlanInforViewBad = ColorName("AirPlanInfoView.bad")
48     static let airPlanInforViewBoarderNormal = ColorName("AirPlanInfoView.boarder.normal")
49     static let airPlanInforViewBoarderTired = ColorName("AirPlanInfoView.border.tired")
50     static let airPlanInforViewBoarderBad = ColorName("AirPlanInfoView.boarder.bad")
51     
52     // for SuppliesCell
53     static let suppliesCellGreen = ColorName("SuppliesCell.greenColor")
54     static let suppliesCellYellow = ColorName("SuppliesCell.yellowColor")
55     static let suppliesCellOrange = ColorName("SuppliesCell.orangeColor")
56     static let suppliesCellRedColor = ColorName("SuppliesCell.redColor")
57     static let suppliesCellBorder = ColorName("SuppliesCell.borderColor")
58     static let suppliesCellBackground = ColorName("SuppliesCell.backgroundColor")
59     
60     // for SlotItemLevelView
61     static let slotItemLevelViewLevel = ColorName("SlotItemLevelView.levelColor")
62     static let slotItemLevelViewLowAirLevel = ColorName("SlotItemLevelView.airLevel.low")
63     static let slotItemLevelViewHighAirLevel = ColorName("SlotItemLevelView.airLevel.high")
64     static let slotItemLevelViewLowAirLevelShadow = ColorName("SlotItemLevelView.airLevel.low.shadow")
65     static let slotItemLevelViewHighAirLevelShadow = ColorName("SlotItemLevelView.airLevel.high.shadow")
66 }
67
68 class ColorSet {
69     
70     static var current: ColorSet {
71         
72         if NSWorkspace.shared.accessibilityDisplayShouldIncreaseContrast {
73             
74             return HighContrastColorSet.shared
75         }
76         
77         return ColorSet.shared
78     }
79     
80     class var shared: ColorSet { return _shared }
81     
82     private static let _shared = ColorSet()
83     
84     subscript(named: ColorName) -> NSColor {
85         
86         switch named {
87             
88         case .damageViewInnerSlightly: return #colorLiteral(red: 1.000, green: 0.956, blue: 0.012, alpha: 0.5)
89             
90         case .damageViewInnerModest: return NSColor.orange.withAlphaComponent(0.5)
91             
92         case .damageViewInnerBadly: return NSColor.red.withAlphaComponent(0.5)
93             
94         case .damageViewBoarderSlightly: return NSColor.orange.withAlphaComponent(0.5)
95             
96         case .damageViewBoarderModest: return NSColor.orange.withAlphaComponent(0.9)
97             
98         case .damageViewBoarderBadly: return NSColor.red.withAlphaComponent(0.9)
99             
100             
101         case .airPlanInforViewNormal: return .clear
102             
103         case .airPlanInforViewTired: return #colorLiteral(red: 1, green: 0.7233425379, blue: 0.1258574128, alpha: 0.8239436619)
104             
105         case .airPlanInforViewBad: return #colorLiteral(red: 0.7320367694, green: 0.07731548697, blue: 0.06799335033, alpha: 1)
106             
107         case .airPlanInforViewBoarderNormal: return .clear
108             
109         case .airPlanInforViewBoarderTired: return #colorLiteral(red: 0.458858192, green: 0.3335277438, blue: 0.07979661971, alpha: 1)
110             
111         case .airPlanInforViewBoarderBad: return #colorLiteral(red: 0.5462518334, green: 0.04599834234, blue: 0.04913448542, alpha: 1)
112             
113             
114         case .suppliesCellGreen: return NSColor(calibratedWhite: 0.39, alpha: 1.0)
115             
116         case .suppliesCellYellow: return NSColor(calibratedWhite: 0.55, alpha: 1.0)
117             
118         case .suppliesCellOrange: return NSColor(calibratedWhite: 0.7, alpha: 1.0)
119             
120         case .suppliesCellRedColor: return NSColor(calibratedWhite: 0.79, alpha: 1.0)
121             
122         case .suppliesCellBorder: return .gridColor
123             
124         case .suppliesCellBackground: return .controlColor
125             
126             
127         case .slotItemLevelViewLevel: return #colorLiteral(red: 0.135, green: 0.522, blue: 0.619, alpha: 1)
128             
129         case .slotItemLevelViewLowAirLevel: return #colorLiteral(red: 0.257, green: 0.523, blue: 0.643, alpha: 1)
130             
131         case .slotItemLevelViewHighAirLevel: return #colorLiteral(red: 0.784, green: 0.549, blue: 0.000, alpha: 1)
132             
133         case .slotItemLevelViewLowAirLevelShadow: return #colorLiteral(red: 0.095, green: 0.364, blue: 0.917, alpha: 1)
134             
135         case .slotItemLevelViewHighAirLevelShadow: return .yellow
136             
137         default: return .clear
138             
139         }
140     }
141 }
142
143
144 class HighContrastColorSet: ColorSet {
145     
146     override class var shared: ColorSet { return _shared }
147     
148     private static let _shared = HighContrastColorSet()
149     
150     override subscript(named: ColorName) -> NSColor {
151         
152         switch named {
153             
154         case .damageViewBoarderSlightly: return NSColor.red
155             
156         case .damageViewBoarderModest: return NSColor.red
157             
158         case .damageViewBoarderBadly: return NSColor.red
159             
160         default: return super[named]
161         }
162     }
163 }
164
165 class DarkModeColorSet: ColorSet {
166     
167     override class var shared: ColorSet { return _shared }
168     
169     private static let _shared = DarkModeColorSet()
170     
171     override subscript(named: ColorName) -> NSColor {
172         
173         switch named {
174             
175         default: return super[named]
176         }
177     }
178 }