5 // Created by Hori,Masaki on 2018/06/24.
6 // Copyright © 2018年 Hori,Masaki. All rights reserved.
20 init(_ name: String) {
26 extension ColorName: Equatable {
28 static func == (lhs: ColorName, rhs: ColorName) -> Bool {
30 return lhs.name == rhs.name
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")
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")
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")
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")
70 subscript(named: ColorName) -> NSColor { get }
74 struct ColorSetManager {
76 static var current: ColorSet {
78 if NSWorkspace.shared.accessibilityDisplayShouldIncreaseContrast {
80 return HighContrastColorSet.shared
83 return DefaultColorSet.shared
87 private struct DefaultColorSet: ColorSet {
89 static let shared = DefaultColorSet()
91 subscript(named: ColorName) -> NSColor {
95 case .damageViewInnerSlightly: return #colorLiteral(red: 1.000, green: 0.956, blue: 0.012, alpha: 0.5)
97 case .damageViewInnerModest: return NSColor.orange.withAlphaComponent(0.5)
99 case .damageViewInnerBadly: return NSColor.red.withAlphaComponent(0.5)
101 case .damageViewBoarderSlightly: return NSColor.orange.withAlphaComponent(0.5)
103 case .damageViewBoarderModest: return NSColor.orange.withAlphaComponent(0.9)
105 case .damageViewBoarderBadly: return NSColor.red.withAlphaComponent(0.9)
108 case .airPlanInforViewNormal: return .clear
110 case .airPlanInforViewTired: return #colorLiteral(red: 1, green: 0.7233425379, blue: 0.1258574128, alpha: 0.8239436619)
112 case .airPlanInforViewBad: return #colorLiteral(red: 0.7320367694, green: 0.07731548697, blue: 0.06799335033, alpha: 1)
114 case .airPlanInforViewBoarderNormal: return .clear
116 case .airPlanInforViewBoarderTired: return #colorLiteral(red: 0.458858192, green: 0.3335277438, blue: 0.07979661971, alpha: 1)
118 case .airPlanInforViewBoarderBad: return #colorLiteral(red: 0.5462518334, green: 0.04599834234, blue: 0.04913448542, alpha: 1)
121 case .suppliesCellGreen: return NSColor(calibratedWhite: 0.39, alpha: 1.0)
123 case .suppliesCellYellow: return NSColor(calibratedWhite: 0.55, alpha: 1.0)
125 case .suppliesCellOrange: return NSColor(calibratedWhite: 0.7, alpha: 1.0)
127 case .suppliesCellRedColor: return NSColor(calibratedWhite: 0.79, alpha: 1.0)
129 case .suppliesCellBorder: return .gridColor
131 case .suppliesCellBackground: return .controlColor
134 case .slotItemLevelViewLevel: return #colorLiteral(red: 0.135, green: 0.522, blue: 0.619, alpha: 1)
136 case .slotItemLevelViewLowAirLevel: return #colorLiteral(red: 0.257, green: 0.523, blue: 0.643, alpha: 1)
138 case .slotItemLevelViewHighAirLevel: return #colorLiteral(red: 0.784, green: 0.549, blue: 0.000, alpha: 1)
140 case .slotItemLevelViewLowAirLevelShadow: return #colorLiteral(red: 0.095, green: 0.364, blue: 0.917, alpha: 1)
142 case .slotItemLevelViewHighAirLevelShadow: return .yellow
144 default: return .clear
151 private struct HighContrastColorSet: ColorSet {
154 static let shared = HighContrastColorSet()
156 subscript(named: ColorName) -> NSColor {
160 case .damageViewBoarderSlightly: return .red
162 case .damageViewBoarderModest: return .red
164 case .damageViewBoarderBadly: return .red
166 default: return DefaultColorSet.shared[named]
171 private struct DarkModeColorSet: ColorSet {
173 private static let shared = DarkModeColorSet()
175 subscript(named: ColorName) -> NSColor {
179 default: return DefaultColorSet.shared[named]