jsdw_ios/QuickLocation/Section/Mine/MoodStatus/MoodStatusCatalog.swift

93 lines
4.5 KiB
Swift

//
// MoodStatusCatalog.swift
// QuickLocation
//
import UIKit
struct MoodStatusItem {
let moodIndex: Int
let jsonName: String
let pngName: String
var jsonPath: String? {
MoodStatusCatalog.resourcePath(
name: jsonName,
ext: "json",
directories: ["emoji/mood", "lotties/emoji/mood"]
)
}
var pngPath: String? {
MoodStatusCatalog.resourcePath(
name: pngName,
ext: "png",
directories: ["emoji/mood/png", "lotties/emoji/mood/png"]
)
}
var pngImage: UIImage? {
guard let pngPath else { return nil }
return UIImage(contentsOfFile: pngPath)
}
}
enum MoodStatusCatalog {
static let items: [MoodStatusItem] = numberedItems + namedItems
static func item(moodIndex: Int) -> MoodStatusItem? {
items.first { $0.moodIndex == moodIndex }
}
static func resourcePath(name: String, ext: String, directories: [String]) -> String? {
for directory in directories {
if let path = Bundle.main.path(forResource: name, ofType: ext, inDirectory: directory) {
return path
}
}
return Bundle.main.path(forResource: name, ofType: ext)
}
private static let numberedItems: [MoodStatusItem] = [
MoodStatusItem(moodIndex: 1, jsonName: "1", pngName: "1-075"),
MoodStatusItem(moodIndex: 2, jsonName: "2", pngName: "2-158"),
MoodStatusItem(moodIndex: 3, jsonName: "3", pngName: "3-020"),
MoodStatusItem(moodIndex: 4, jsonName: "4", pngName: "4-098"),
MoodStatusItem(moodIndex: 5, jsonName: "5", pngName: "5-045"),
MoodStatusItem(moodIndex: 6, jsonName: "6", pngName: "6-094"),
MoodStatusItem(moodIndex: 7, jsonName: "7", pngName: "7-083"),
MoodStatusItem(moodIndex: 8, jsonName: "8", pngName: "8-112"),
MoodStatusItem(moodIndex: 9, jsonName: "9", pngName: "9-138"),
MoodStatusItem(moodIndex: 10, jsonName: "10", pngName: "10-153"),
MoodStatusItem(moodIndex: 11, jsonName: "11", pngName: "11-003"),
MoodStatusItem(moodIndex: 12, jsonName: "12", pngName: "12-154")
]
private static let namedItems: [MoodStatusItem] = [
MoodStatusItem(moodIndex: 13, jsonName: "bathing-emoji", pngName: "bathing-emoji-160"),
MoodStatusItem(moodIndex: 14, jsonName: "calling-emoji", pngName: "calling-emoji-153"),
MoodStatusItem(moodIndex: 15, jsonName: "drinking-emoji", pngName: "drinking-emoji-159"),
MoodStatusItem(moodIndex: 16, jsonName: "eating-emoji", pngName: "eating-emoji-156"),
MoodStatusItem(moodIndex: 17, jsonName: "emoji-using-laptop", pngName: "emoji-using-laptop-065"),
MoodStatusItem(moodIndex: 18, jsonName: "exploding-head-emoji", pngName: "exploding-head-emoji-147"),
MoodStatusItem(moodIndex: 19, jsonName: "face-with-bandage", pngName: "face-with-bandage-098"),
MoodStatusItem(moodIndex: 20, jsonName: "flushed-emoji", pngName: "flushed-emoji-099"),
MoodStatusItem(moodIndex: 21, jsonName: "grimacing-emoji", pngName: "grimacing-emoji-128"),
MoodStatusItem(moodIndex: 22, jsonName: "hand-over-mouth-emoji", pngName: "hand-over-mouth-emoji-160"),
MoodStatusItem(moodIndex: 23, jsonName: "innocent-emoji", pngName: "innocent-emoji-163"),
MoodStatusItem(moodIndex: 24, jsonName: "lifting-emoji", pngName: "lifting-emoji-117"),
MoodStatusItem(moodIndex: 25, jsonName: "looking-emoji", pngName: "looking-emoji-086"),
MoodStatusItem(moodIndex: 26, jsonName: "meeting-emoji", pngName: "meeting-emoji-113"),
MoodStatusItem(moodIndex: 27, jsonName: "no-emoji", pngName: "no-emoji-082"),
MoodStatusItem(moodIndex: 28, jsonName: "prey-emoji", pngName: "prey-emoji-094"),
MoodStatusItem(moodIndex: 29, jsonName: "rage-emoji", pngName: "rage-emoji-133"),
MoodStatusItem(moodIndex: 30, jsonName: "reading-book-emoji", pngName: "reading-book-emoji-080"),
MoodStatusItem(moodIndex: 31, jsonName: "relieved-emoji", pngName: "relieved-emoji-089"),
MoodStatusItem(moodIndex: 32, jsonName: "shopping-emoji", pngName: "shopping-emoji-097"),
MoodStatusItem(moodIndex: 33, jsonName: "sick", pngName: "sick-154"),
MoodStatusItem(moodIndex: 34, jsonName: "sleep", pngName: "sleep-148"),
MoodStatusItem(moodIndex: 35, jsonName: "vomiting-emoji", pngName: "vomiting-emoji-168"),
MoodStatusItem(moodIndex: 36, jsonName: "washroom-emoji", pngName: "washroom-emoji-047")
]
}