cs193p-emojiart/EmojiArt/EmojiArtModel.swift
Ching ac3031dd05 feat(view, model): 增加自动保存功能
增加自动保存功能

Signed-off-by: Ching <loooching@gmail.com>
2023-02-23 21:59:16 +08:00

52 lines
1.2 KiB
Swift

//
// EmojiArtModel.swift
// EmojiArt
//
// Created by ching on 2023/2/19.
//
import Foundation
struct EmojiArtModel: Codable {
var background: Background = EmojiArtModel.Background.blank
var emojis = [Emoji]()
struct Emoji: Identifiable, Hashable, Codable {
let text: String
var x: Int
var y: Int
var size: Int
var id: Int
fileprivate init(text: String, x: Int, y: Int, size: Int, id: Int) {
self.text = text
self.x = x
self.y = y
self.size = size
self.id = id
}
}
func json() throws -> Data {
return try JSONEncoder().encode(self)
}
init(json: Data) throws {
self = try JSONDecoder().decode(EmojiArtModel.self, from: json)
}
init(url: URL) throws {
let data = try Data(contentsOf: url)
self = try EmojiArtModel.init(json: data)
}
init() {}
private var uniqueEmojiId = 0
mutating func addEmoji(_ text: String, at location: (x: Int, y: Int), size: Int) {
uniqueEmojiId += 1
emojis.append(Emoji(text: text, x: location.x, y: location.y, size: size, id: uniqueEmojiId))
}
}