93 lines
4.5 KiB
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")
|
|
]
|
|
}
|